<?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>162941</bug_id>
          
          <creation_ts>2016-10-04 14:48:51 -0700</creation_ts>
          <short_desc>[DOMJIT] Add initial CheckDOM and CallDOM implementations</short_desc>
          <delta_ts>2016-10-05 22:54:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>162993</dependson>
          <blocked>162544</blocked>
    
    <blocked>162978</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236369</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 14:48:51 -0700</bug_when>
    <thetext>[DOMJIT] Add initial CheckDOM and CallDOM implementations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236370</commentid>
    <comment_count>1</comment_count>
      <attachid>290649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 14:49:13 -0700</bug_when>
    <thetext>Created attachment 290649
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236374</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 15:00:02 -0700</bug_when>
    <thetext>Attachment 290649 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 35 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>1236481</commentid>
    <comment_count>3</comment_count>
      <attachid>290674</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 17:35:42 -0700</bug_when>
    <thetext>Created attachment 290674
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236483</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 17:38:49 -0700</bug_when>
    <thetext>Attachment 290674 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 37 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>1236501</commentid>
    <comment_count>5</comment_count>
      <attachid>290678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 18:41:04 -0700</bug_when>
    <thetext>Created attachment 290678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236504</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 18:43:21 -0700</bug_when>
    <thetext>Attachment 290678 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 38 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>1236505</commentid>
    <comment_count>7</comment_count>
      <attachid>290678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 18:44:57 -0700</bug_when>
    <thetext>Comment on attachment 290678
Patch

Fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236506</commentid>
    <comment_count>8</comment_count>
      <attachid>290680</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 18:53:55 -0700</bug_when>
    <thetext>Created attachment 290680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236510</commentid>
    <comment_count>9</comment_count>
      <attachid>290681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 18:56:52 -0700</bug_when>
    <thetext>Created attachment 290681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236511</commentid>
    <comment_count>10</comment_count>
      <attachid>290681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 18:57:54 -0700</bug_when>
    <thetext>Comment on attachment 290681
Patch

Oops. Still fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236512</commentid>
    <comment_count>11</comment_count>
      <attachid>290682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 19:00:31 -0700</bug_when>
    <thetext>Created attachment 290682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236513</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 19:02:01 -0700</bug_when>
    <thetext>Attachment 290682 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 37 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>1236514</commentid>
    <comment_count>13</comment_count>
      <attachid>290683</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 19:05:45 -0700</bug_when>
    <thetext>Created attachment 290683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236515</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 19:09:00 -0700</bug_when>
    <thetext>Attachment 290683 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 37 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>1236517</commentid>
    <comment_count>15</comment_count>
      <attachid>290683</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 19:14:05 -0700</bug_when>
    <thetext>Comment on attachment 290683
Patch

Still fixing.......</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236546</commentid>
    <comment_count>16</comment_count>
      <attachid>290691</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 23:38:22 -0700</bug_when>
    <thetext>Created attachment 290691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236547</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 23:39:58 -0700</bug_when>
    <thetext>Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236548</commentid>
    <comment_count>18</comment_count>
      <attachid>290692</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 23:42:28 -0700</bug_when>
    <thetext>Created attachment 290692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236550</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 23:44:36 -0700</bug_when>
    <thetext>Attachment 290692 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/GetByIdStatus.h:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGNode.h:2458:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 40 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>1236576</commentid>
    <comment_count>20</comment_count>
      <attachid>290692</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 01:41:30 -0700</bug_when>
    <thetext>Comment on attachment 290692
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        JSNode::info().

Fan fact: This CheckDOM is almost always eliminated.
We typically write some DOM operation like,

node.firstChild

OR

document.getElementById(&quot;...&quot;);

At that time, for node.firstChild GetById access, we typically emit CheckStructure for node.
AI in this patch completely recognizes it and drop CheckDOM if filtered Structures are subclass of ClassInfo.

But still CheckDOM is useful if we would like to handle super polymorphic case (Dromaeo&apos;s firstChild use).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236640</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 08:54:39 -0700</bug_when>
    <thetext>cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236805</commentid>
    <comment_count>22</comment_count>
      <attachid>290692</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-05 15:38:59 -0700</bug_when>
    <thetext>Comment on attachment 290692
Patch

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

Nice!!

&gt; Source/JavaScriptCore/b3/B3Effects.h:81
&gt; +    static Effects forCheck()

This is great!

&gt; Source/JavaScriptCore/b3/B3Value.cpp:617
&gt; +        result = Effects::forCheck();

Nice.

&gt; Source/JavaScriptCore/dfg/DFGAbstractValue.cpp:315
&gt; +    m_structure.filterClassInfo(classInfo);

I like this. Can you file a bug about putting a ClassInfo field into AbstractValue. Then AI could do type-based tracking of value sets even better than now. When merging we would pick the lowest common ancestor. 

No need to do it now. Worth a fixme and bug.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2688
&gt; +    addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(variant.structureSet())), thisNode);

This is a bit unfortunate. Is there any way to only have the CheckDOM and not the structure check?

&gt; Source/JavaScriptCore/domjit/DOMJITReg.h:41
&gt; +class Reg {

Crazy!  I think it&apos;s a good idea to have this separate from JSC::Reg/JSValueRegs for now but it sure seems like the rest of JSC will want this eventually. Can you file a bug and put a fixme for eventually moving this to JSC so others can use it?  For example B3::ValueRep does some of the same stuff, maybe it could delegate to your Reg class eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236830</commentid>
    <comment_count>23</comment_count>
      <attachid>290692</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 16:45:48 -0700</bug_when>
    <thetext>Comment on attachment 290692
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractValue.cpp:315
&gt;&gt; +    m_structure.filterClassInfo(classInfo);
&gt; 
&gt; I like this. Can you file a bug about putting a ClassInfo field into AbstractValue. Then AI could do type-based tracking of value sets even better than now. When merging we would pick the lowest common ancestor. 
&gt; 
&gt; No need to do it now. Worth a fixme and bug.

Sure! I&apos;ve just opened the bug for this. https://bugs.webkit.org/show_bug.cgi?id=162989
And noted FIXME here with this URL.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2688
&gt;&gt; +    addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(variant.structureSet())), thisNode);
&gt; 
&gt; This is a bit unfortunate. Is there any way to only have the CheckDOM and not the structure check?

Yes! This mechanism should be fixed definitely.
This CheckStrucutre guards against Object.defineProperty(object, &apos;customGetter&apos;, { ... }) case.
But as you know, due to this check, we give up optimization in Dromaeo dom-traverse. This is because we encounter bunch of Structures here (HTMLDivElement, HTMLAnchorElement, etc.).
After initial DOMJIT accessor is implemented in WebCore, I&apos;m planning to implement some mechanism to allow optimization here. It should involve AccessCases etc.

I discussed with rniwa and keith_miller before. At that time, we come up with one idea: putting bloom filter in each Structure that tells us this Structure *must not* have properties related to the given name.
I&apos;ll mail to you and Saam about the idea.

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITReg.h:41
&gt;&gt; +class Reg {
&gt; 
&gt; Crazy!  I think it&apos;s a good idea to have this separate from JSC::Reg/JSValueRegs for now but it sure seems like the rest of JSC will want this eventually. Can you file a bug and put a fixme for eventually moving this to JSC so others can use it?  For example B3::ValueRep does some of the same stuff, maybe it could delegate to your Reg class eventually.

Yup! Filed. https://bugs.webkit.org/show_bug.cgi?id=162990</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236900</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 22:22:48 -0700</bug_when>
    <thetext>Committed r206846: &lt;http://trac.webkit.org/changeset/206846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236903</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 22:41:22 -0700</bug_when>
    <thetext>Committed r206847: &lt;http://trac.webkit.org/changeset/206847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236904</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 22:54:25 -0700</bug_when>
    <thetext>Committed r206848: &lt;http://trac.webkit.org/changeset/206848&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290649</attachid>
            <date>2016-10-04 14:49:13 -0700</date>
            <delta_ts>2016-10-04 17:35:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004144602.patch</filename>
            <type>text/plain</type>
            <size>52977</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGE0ZjVmNTEzYTAyY2RlMjAzYzFiMDI1ZTUzNGM3NTBiYmJjZmJhLi5kNmJmYzg0MjU1MTM0MTlh
ZDFjOGViOTc2NDdlNjM2YzQwZWFkYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5NiBAQAogMjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERP
TSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYjMvQjNFZmZlY3RzLmg6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpm
b3JDaGVjayk6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZTo6ZWZmZWN0cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJDbGFzc0luZm8p
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RPTUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZG9tSklUKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpoYXNDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNsYXNzSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6T3BJbmZvV3JhcHBl
cik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6b3BlcmF0b3I9KToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6
CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9y
UGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNr
RE9NKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mb1Nsb3cpOgorICAgICAgICAoSlND
OjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6CisgICAgICAgICog
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9t
aml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcEluZm8uaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
UGFyYW1zOjp+UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hw
b2ludFBhcmFtczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFt
czo6YXQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6Om9wZXJhdG9y
W10pOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmdwU2NyYXRjaCk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6ZnBTY3JhdGNoKToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpQYXRjaHBvaW50UGFyYW1zKToK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tET00pOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbnJlYWNoYWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChXVEY6OkRPTUpJVEdldHRlcjo6RE9NSklUR2V0dGVyKToKKyAgICAgICAgKFdURjo6RE9N
SklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6dmFsdWUpOgorICAgICAgICAo
V1RGOjpET01KSVRHZXR0ZXI6OkRPTUpJVEdldHRlckRPTUpJVDo6RE9NSklUR2V0dGVyRE9NSklU
KToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpkb21KSVRHZXR0ZXJHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6Om9mZnNldE9mVmFsdWUpOgorICAgICAgICAo
V1RGOjpET01KSVRHZXR0ZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklU
R2V0dGVyOjpjdXN0b21HZXR0ZXIpOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCk6CisKKzIw
MTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgW0RPTUpJVF0gSW50cm9kdWNlIERPTUpJVDo6R2V0dGVyU2V0dGVyIHRvIHRlbGwgSklUIGlu
Zm9ybWF0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjI5MTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1OWExYTU3N2MwN2RlYWQxYjZhZmQ0ZjIwNmFiZDFhOTQ1MGNjNDUx
Li5mOWMzYzc1NjcyNDU1YjhlOGRmMjU2NWNhOGIzYjA3MTI2MGUzZjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtET01KSVRdIEFkZCBpbml0aWFsIENoZWNrRE9NIGFuZCBDYWxsRE9NIGlt
cGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvQm94Lmg6CisgICAgICAgIChXVEY6OkJveDo6Qm94KToKKwogMjAxNi0xMC0w
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBLZXlib2FyZEV2ZW50LmtleSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuaAppbmRleCBjMDQ3NDhmNmEzODczNTBhMDMxMDMxZTNiYzFiMDUyOTA1YmU5Y2E5Li5i
ZWM0Nzg2NThiZGU5Y2YyOTdkOTBlMmNlYWI4NmUxMjJhMTczYTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRWZmZWN0cy5oCkBAIC03OCw2ICs3OCwxNSBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEVmZmVjdHMgZm9yQ2hl
Y2soKQorICAgIHsKKyAgICAgICAgRWZmZWN0cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5leGl0
c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0
aGluZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8
IHdyaXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxNjFhY2VkNzJi
YTY2YjE4MTdhNWYzYTQ3OWJiYjkzMzEyZGNhYzg5Li5hMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4
MzcwMzczNzg3MDM4NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02
MTQsOSArNjE0LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBD
aGVja1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJl
c3VsdC5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQg
cmVhZCBhbnl0aGluZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRo
aXMuCi0gICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJl
c3VsdCA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBz
aWxvbjoKICAgICBjYXNlIFNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmluZGV4IDcxOWQ4ZjI3MjgzZjVkMTIzY2U1NzcxNTQ1ZTQ2
OWJmODFhZmYyMjcuLjI0MjUyOTJhZmY2MDU5YWFhNzhjYjg0OTdkMTg2YjliNTA0MmU2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cApAQCAtMzUzLDYgKzM1MywxMiBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBl
ZEFycmF5VHlwZShUeXBlZEFycmF5VHlwZSB0eXBlKQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CisgICAgaWYg
KGNsYXNzSW5mbyA9PSBKU1N0cmluZzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N0cmlu
ZzsKKworICAgIGlmIChjbGFzc0luZm8gPT0gU3ltYm9sOjppbmZvKCkpCisgICAgICAgIHJldHVy
biBTcGVjU3ltYm9sOworCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZv
KCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CiAgICAgCkBAIC0zODUsNiArMzkx
LDkgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKQogICAgIAogICAgIGlmIChpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5
cGVkQXJyYXlTdG9yYWdlVHlwZSkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21UeXBl
ZEFycmF5VHlwZShjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisKKyAgICBpZiAo
Y2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNBcnJheTo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJu
IFNwZWNEZXJpdmVkQXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09m
KEpTT2JqZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApp
bmRleCA1OTcyODE2NjJlOGFkMWZmYWE4NTU2MjJjNzA1OWE0NzRiMmY0NDZlLi5iY2Y2ZDdlNzMx
ZmNkN2UwNTM1M2FmZDY5YjhiOWE0MzkzZmJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApAQCAtMTM0LDEwICsxMzQsMTcg
QEAgY2xhc3MgQWJzdHJhY3RJbnRlcnByZXRlciB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJCeVZh
bHVlKGZvck5vZGUobm9kZSksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhUIG5vZGUsIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckNs
YXNzSW5mbyhmb3JOb2RlKG5vZGUpLCBjbGFzc0luZm8pOworICAgIH0KKwogICAgIEZpbHRyYXRp
b25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVj
dWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyQXJyYXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZh
bHVlKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhBYnN0cmFjdFZhbHVl
JiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgCiAgICAgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVu
KCkgeyByZXR1cm4gbV9waGlDaGlsZHJlbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IGNlNmJlZjlhZDNmZDA1NzlmZTVhYTllMDFhODRlNzNiZTY4ZjZkNGEuLjlkZmM2M2Rj
NjhhMThkMTQ0ZGNjNGU1NzdkN2YxNDY3YmU2YTdjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJERkdBYnN0cmFjdEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhhc2hNYXBJbXBsLmgiCkBAIC0yMjYzLDYgKzIyNjQsMjggQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAg
ICAgICAgIGZvck5vZGUobm9kZSkuY2xlYXIoKTsgLy8gVGhlIHJlc3VsdCBpcyBub3QgYSBKUyB2
YWx1ZS4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICBKU1Zh
bHVlIGNvbnN0YW50ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAg
aWYgKGNvbnN0YW50KSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29u
c3RhbnQuYXNDZWxsKCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAg
ICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CisKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3ViQ2xhc3NP
Zihub2RlLT5jbGFzc0luZm8oKSkpCisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3Rh
bnRzKHRydWUpOworCisgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJ
bmZvKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAg
ICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTMwNTEsNiArMzA3
NCwxNiBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpmaWx0ZXJCeVZhbHVlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0
YXRlVHlwZT4KK0ZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmZpbHRlckNsYXNzSW5mbygKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKHZhbHVlLmZpbHRlckNsYXNzSW5m
byhtX2dyYXBoLCBjbGFzc0luZm8pID09IEZpbHRyYXRpb25PSykKKyAgICAgICAgcmV0dXJuIEZp
bHRyYXRpb25PSzsKKyAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgIHJldHVybiBD
b250cmFkaWN0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4K
IHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3Vi
bGVVbmFyeU9wRWZmZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbiko
ZG91YmxlKSkKIHsKICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwCmluZGV4IGMzZWZkYWNlZTc4ZDZhY2VlZjY1YTk4MzI4NDFiZDZmNDFiY2E0N2YuLjY3MmIy
MjgxNjcxNTJkOGUzMTI3ZjQ1ODdlZTM0N2NkZjE4MzhmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMzA2LDYgKzMwNiwyMyBAQCBG
aWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rl
cyBhcnJheU1vZGVzKQogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KCk7CiB9CiAKK0ZpbHRy
YXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiBncmFwaCwg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCit7CisgICAgQVNTRVJUKGFycmF5TW9kZXMpOwor
CisgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsKKworICAg
IG1fdHlwZSAmPSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY2xhc3NJbmZvKTsKKyAgICBtX3N0
cnVjdHVyZS5maWx0ZXJDbGFzc0luZm8oY2xhc3NJbmZvKTsKKworICAgIG1fc3RydWN0dXJlLmZp
bHRlcihtX3R5cGUpOworCisgICAgZmlsdGVyQXJyYXlNb2Rlc0J5VHlwZSgpOworICAgIGZpbHRl
clZhbHVlQnlUeXBlKCk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOworfQor
CiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcihTcGVjdWxhdGVkVHlwZSB0
eXBlKQogewogICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAppbmRleCAzMmViMGYxOWM1YzkxZjY3
NzE4ZTczZDBhN2MzOGUxOWZjZjI4M2VmLi44YTkxMDE0MDc1NjNhYjEzZWEwMGQ1YzZiY2U4ODRj
NTkyODAzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFs
dWUuaApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1ZSk7CiAgICAgRmlsdHJhdGlv
blJlc3VsdCBmaWx0ZXIoY29uc3QgQWJzdHJhY3RWYWx1ZSYpOworICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAKICAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRv
ciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAwYjVmYjk1ZDk1N2IxMmE0MzgxY2ZmYjliNmMyYTRlYjMyYWIzYTRkLi45
OGJhMzdiNmU4ZTkyODA0ZmUzYmEyNjFkNTQxOWZjYzhlMmNlMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjE5LDYgKzIxOSw3
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJu
YWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludGVy
bmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlPZmZzZXQo
Tm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IElu
ZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVH
ZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYs
IE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOworICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKGlu
dCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKIAogICAgIC8vIENyZWF0ZSBhIHByZXNlbmNlIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25vd24gb2Zmc2V0IGFuZCBzdHJ1
Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29u
ZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlmIGl0IGVuY291bnRlcnMgYSBj
b250cmFkaWN0aW9uLgpAQCAtMjY1OSw2ICsyNjYwLDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZh
cmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCit7CisgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gdmFyaWFudC5kb21KSVQo
KTsKKyAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJbmZvKGRvbUpJ
VC0+dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOworICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9
IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7CisgICAgYWRkVmFyQXJnQ2hp
bGQoZ2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1
c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgYWRkVmFyQXJnQ2hpbGQodGhpc05vZGUp
OworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAgICAg
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCkBAIC0zMzI0LDYgKzMzMzksMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVk
R2V0QnlJZCgpOwogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8ICF2YXJp
YW50LmNhbGxMaW5rU3RhdHVzKCkpOworCisgICAgaWYgKHZhcmlhbnQuZG9tSklUKCkpIHsKKyAg
ICAgICAgaWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlvbk9wZXJhbmQsIHZhcmlhbnQs
IGJhc2UsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGxv
YWRlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0g
Tm9JbnRyaW5zaWMpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9w
ZXJhbmQpLCBsb2FkZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMWU1NTVmZTFhZmYyZmUzMWFlODk1Y2FmNTk4
ZTZmYzkzZWUzYWY4ZC4uNjJhMTI5N2U0Mzg5NWU4M2YzODUzZGI1NWQxN2Y5MThkZGI2NTJhMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTg4NSw2ICs4
ODUsMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihCdXR0ZXJmbHlMb2MsIEpTT2JqZWN0X2J1dHRlcmZseSwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5
Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgQ2hlY2tET006CisgICAg
ICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tET00sIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlzdDo6
Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAg
d3JpdGUoSGVhcCk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAg
Y2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCmluZGV4IDVkNjMyOWQyOGY1ZmYzYmY2NWExY2ZjYTQ3YWE2Nzc0MTY5MzVl
MmYuLmQ5YmM3ZTcwOWExMWNkNGUzZDE5YmViNWViOGUyMDAxYmYzYTBmMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC0xNTgsNiArMTU4LDI4IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tET006IHsKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlIGNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpOworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxsKCktPmluaGVyaXRzKG5v
ZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRl
ci5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFs
dWUubV9zdHJ1Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAg
ICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAg
ICAgICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFi
bGVWaWV3KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDMxODU1
OTZjZjkzM2NlMDg5NjEyYmM5YTQ1N2UxYjJkNTc0NmM3NTkuLjU3MjZjYjVlNmU3YTQyNjdiZTcy
ZTY3ZGNhMzdjYjk3YTdjMDFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6
CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hl
Y2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2Fz
ZSBTa2lwU2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCBmZDZkZDU0NGU4MDI0OWQ4MmRiMTAyYTA2NjQ5YzY5MDY1OWE4OTY5Li40MTc4Nzk4
ZmNkYjQzOWM4M2I3ZDQwOWZmNDdlY2QyNTdhNTZiMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2OTAsNiArMTY5MCwxNSBAQCBjbGFzcyBG
aXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDYWxs
RE9NOgorICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOyAvLyBHbG9iYWxPYmplY3QuCisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOyAvLyBET00uCisgICAgICAgICAgICBi
cmVhazsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1v
cCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVy
cyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDk5YTgyYzljZDk2YWE3OGMzYjA0MGVjNTRlZDllZTEy
ZjAxZGU4MjYuLjQyMzdhNTI2MjQ5OTIxZDAzZmNiYTZmODhiYjA2NTZhN2U2YjE3ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICAgICAgY2FzZSBU
b051bWJlcjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgorICAgICAgICBjYXNl
IENhbGxET006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMTIsNyArMjMxMywyOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIEFTU0VSVChoYXNCYXNpY0Jsb2NrTG9jYXRpb24oKSk7CiAgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczxCYXNpY0Jsb2NrTG9jYXRpb24qPigpOwogICAgIH0KLSAgICAKKwor
ICAgIGJvb2wgaGFzRE9NSklUKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IENoZWNrRE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9CisKKyAgICBET01KSVQ6OkdldHRl
clNldHRlciogZG9tSklUKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNET01KSVQoKSk7Cisg
ICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkdldHRlclNldHRlcio+KCk7CisgICAg
fQorCisgICAgYm9vbCBoYXNDbGFzc0luZm8oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gQ2hlY2tET007CisgICAgfQorCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFzc0luZm8q
PigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CkBAIC0yMzkyLDYgKzI0MTQsMTEgQEAgc3Ry
dWN0IE5vZGUgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAgICAgICAgICAgICB1LnBvaW50
ZXIgPSBwb2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXIoY29uc3Qgdm9p
ZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAg
ICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVyOworICAgICAgICB9CiAgICAg
ICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBpbnQzMikKICAgICAgICAgewog
ICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNDE1LDEyICsyNDQyLDIzIEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7CiAgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3JhcHBlciYgb3BlcmF0b3I9KGNv
bnN0IHZvaWQqIGNvbnN0UG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnQ2NCA9
IDA7CisgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKKyAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwgVD46OnR5cGUKKyAgICAgICAg
QUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19jb25zdDx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LnBvaW50ZXIpOwogICAgICAgICB9CiAg
ICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8g
YXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46
OnZhbHVlICYmIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT46OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4odS5jb25zdFBvaW50ZXIpOworICAgICAgICB9CisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiBzaXpl
b2YoVCkgPT0gNCwgVD46OnR5cGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50
MzI7CkBAIC0yNDM0LDYgKzI0NzIsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICB1aW50
MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90IGludDY0OwogICAgICAgICAgICAgdm9p
ZCogcG9pbnRlcjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNvbnN0UG9pbnRlcjsKICAgICAg
ICAgfSB1OwogICAgIH07CiAgICAgT3BJbmZvV3JhcHBlciBtX29wSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNWFkYTg5YmMxMzhhNjUwNDBhZWVhOWQy
ZmE3ZGEzZjA2MGQzMWU4Li45YzNmYjkwZWEwNmIwY2Y5MDU4ZTUxNjYwZTViNThmMjVmN2MyNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTYsNiArMzk2
LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHZXRNYXBC
dWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvYWRGcm9tSlNNYXBCdWNrZXQsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKElzTm9uRW1wdHlNYXBCdWNrZXQsIE5vZGVSZXN1bHRC
b29sZWFuKSBcCisgICAgXAorICAgIC8qIE5vZGVzIGZvciBET00gSklUICovXAorICAgIG1hY3Jv
KENoZWNrRE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2FsbERPTSwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAKIC8vIFRoaXMg
ZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2Rl
IHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91
dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1MmQzYjVkOGVmNGYzM2UwOWI1
ZDdlNWNiZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3ZjllYzQ3MDZkMTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0
IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2VuZGlmCiAgICAgZXhwbGljaXQg
T3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8o
Y29uc3Qgdm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAgIHVpbnQ2NF90IG1fdmFsdWU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ1OTQxOGFiNzEyMWY3MDE4YTlkYzIz
M2M3MGUwZmNiZWU3ZWQ0M2IuLmVhOTIxNTYyNWQxZTlmZjAyZGUwN2NlNzA5NjUzY2M5NTdhNGM1
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyArNjk5LDggQEAgY2xhc3MgUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdl
dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRvTnVtYmVyOiB7CisgICAgICAg
IGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MTksNiArODIwLDkgQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWJlNjcyYTg5NGZjZWY0YzFk
OGFjMDM5MWVhZmFhZDZmYzdjYTlmOC4uYzdlMWI2YjczZGI4MTcxMGEyOGE4OGRiMzFkNTJkZjZl
ZTMwZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6Cisg
ICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5
OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4
IDYwODFjNTdiMjg2MThlNDNkOWVhMjhkNTU2MTAxNTgyYTYyYzU4Y2EuLjA2YjJhOWJkMDVjNzNj
MzhjY2UxNjRjMDcwYWY5M2I5Yjg0ODBhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBTbG93UGF0aEdlbmVyYXRvciB7Citj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBTbG93UGF0aEdlbmVyYXRvciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2xvd1BhdGhHZW5lcmF0b3IoU3BlY3VsYXRp
dmVKSVQqIGppdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggNmI2NDQ1NDQxYjExNWIyZjI3ZDU5YTk2M2RiZTU4MGRkZmYzZTBkZS4u
ZWI5NThhNjhlM2M0MjY3ZjE0ZTRkN2I1MTA5Mjg0ZDlmYjQwZjEwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDgg
QEAKICNpbmNsdWRlICJERkdPU1JFeGl0RnV6ei5oIgogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0
b3IuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0
Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgpAQCAt
NzA1Nyw2ICs3MDU5LDc3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCdXR0ZXJm
bHkoTm9kZSogbm9kZSkKICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludChTcGVj
dWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8R1BSVGVtcG9yYXJ5PiYgZ3BIb2xkZXJzLCBWZWN0b3I8
RlBSVGVtcG9yYXJ5PiYgZnBIb2xkZXJzLCBWZWN0b3I8R1BSUmVnPiYgZ3BTY3JhdGNoLCBWZWN0
b3I8RlBSUmVnPiYgZnBTY3JhdGNoLCBET01KSVQ6OlBhdGNocG9pbnQmIHBhdGNocG9pbnQpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9pbnQubnVtR1BTY3JhdGNoUmVn
aXN0ZXJzOyArK2kpIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXBvcmFyeShqaXQpOworICAg
ICAgICBncFNjcmF0Y2guYXBwZW5kKHRlbXBvcmFyeS5ncHIoKSk7CisgICAgICAgIGdwSG9sZGVy
cy5hcHBlbmQoV1RGTW92ZSh0ZW1wb3JhcnkpKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkgeworICAg
ICAgICBGUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7CisgICAgICAgIGZwU2NyYXRjaC5hcHBl
bmQodGVtcG9yYXJ5LmZwcigpKTsKKyAgICAgICAgZnBIb2xkZXJzLmFwcGVuZChXVEZNb3ZlKHRl
bXBvcmFyeSkpOworICAgIH0KK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxE
T00oTm9kZSogbm9kZSkKK3sKKyAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50
ID0gbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKKyAgICBBU1NFUlQocGF0Y2hwb2ludCk7CisK
KyAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3Jh
dGNoOworICAgIFZlY3RvcjxSZWc+IHJlZ3M7CisKKyAgICAvLyBGSVhNRTogcGF0Y2hwb2ludCBz
aG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdpc3Rlci4K
KyAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5m
b3JtYXRpb24gaXMgbmljZS4KKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3Qo
dGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICByZWdzLmFw
cGVuZChyZXN1bHQucmVncygpLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICByZWdzLmFwcGVuZChyZXN1bHQucmVncygpLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIHJl
Z3MuYXBwZW5kKGdsb2JhbE9iamVjdC5ncHIoKSk7CisgICAgcmVncy5hcHBlbmQoYmFzZS5ncHIo
KSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZWdzLmFwcGVuZChzdGF0aWNfY2FzdDxHUFJS
ZWc+KEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgIHJlZ3MuYXBwZW5kKHN0YXRpY19j
YXN0PEdQUlJlZz4oR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisjZW5kaWYKKwor
ICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsKKyAgICBWZWN0b3I8RlBSVGVt
cG9yYXJ5PiBmcFRlbXByYXJpZXM7CisgICAgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQ
YXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFyaWVzLCBncFNjcmF0Y2gsIGZw
U2NyYXRjaCwgcGF0Y2hwb2ludC5nZXQoKSk7CisgICAgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
IHBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3Jh
dGNoKSk7CisgICAgcGF0Y2hwb2ludC0+Z2VuZXJhdG9yKCktPnJ1bihtX2ppdCwgcGFyYW1zKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5yZWdzKCksIG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tET00oTm9kZSogbm9kZSkKK3sKKyAgICAvLyBGSVhNRTog
V2UgY2FuIGFkZCB0aGUgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gdGhhdCBpbmxpbmVzIGpzRHlu
YW1pY0Nhc3QgdGhpbmdzIGhlcmUuCisgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hw
b2ludCA9IG5vZGUtPmRvbUpJVCgpLT5jaGVja0RPTSgpOworCisgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOworICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICBWZWN0b3I8UmVn
PiByZWdzOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgcmVncy5hcHBlbmQoYmFzZS5ncHIoKSk7CisKKyAgICBWZWN0b3I8R1BSVGVt
cG9yYXJ5PiBncFRlbXByYXJpZXM7CisgICAgVmVjdG9yPEZQUlRlbXBvcmFyeT4gZnBUZW1wcmFy
aWVzOworICAgIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludCh0aGlzLCBn
cFRlbXByYXJpZXMsIGZwVGVtcHJhcmllcywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIHBhdGNocG9p
bnQuZ2V0KCkpOworCisgICAgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHBhcmFtcyhXVEZNb3Zl
KHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXMgPSBwYXRjaHBvaW50LT5nZW5lcmF0b3Io
KS0+cnVuKG1faml0LCBwYXJhbXMpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoYmFzZS5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBmYWlsdXJlQ2FzZXMpOworICAg
IG5vUmVzdWx0KG5vZGUpOworfQorCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OnRlbXBvcmFyeVJl
Z2lzdGVyRm9yUHV0QnlWYWwoR1BSVGVtcG9yYXJ5JiB0ZW1wb3JhcnksIEFycmF5TW9kZSBhcnJh
eU1vZGUpCiB7CiAgICAgaWYgKCFwdXRCeVZhbFdpbGxOZWVkRXh0cmFSZWdpc3RlcihhcnJheU1v
ZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDFkYWI5MjE1YzBhMWFjYTQ0MzU2MzdiMTMyNjFhYWE3MmM1NjIyZWYuLmE3ZGViMjZiY2U5
MWE5NmM3ZjYzNDg5M2EwYjhkNWExZTRiM2E0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI1MzgsNiArMjUzOCw4IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVD
YWxsRE9NKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlT3BlcmFuZFR5
cGUsIHR5cGVuYW1lIFByb3BlcnR5T3BlcmFuZFR5cGUsIHR5cGVuYW1lIFZhbHVlT3BlcmFuZFR5
cGUsIHR5cGVuYW1lIFRhZ1R5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA1ODg0NjM4NTgxNzlkOTBiOWNiNjU0
MWU0NmQzZGViOTJhMDJiMGZhLi5jYmY2ZTI0MDllZmI3MDVmYWY0Y2QxZTFmMGFlNmEwODBjMjBj
MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTU0MzAsNiArNTQzMCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
Q2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgY29tcGlsZUNoZWNrRE9NKG5vZGUpOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIHVucmVhY2hhYmxl
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDk2YTdkYWYwYmYzYjhmMzk4YTBiM2NhNTg1
MzI2NTkwZTAzY2E4MGQuLmIzN2EyNDdlNmUyNDNjYWMyMGZiOTY1ODI1YmMxODMyN2UzMDc2MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTU2MSw2ICs1NTYxLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAg
Y29tcGlsZUNoZWNrRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExf
SklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcAppbmRleCA3YTgyM2VlODZjYTkzYWRhYjQ2MzM0ZDVkZWYyMjYxNmU3NzJiMDM4Li44OGQ1
Nzc1NjlhZjliMDNkYzk4ZDRjY2M0YjdmN2M0YTcxMjgyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKQEAg
LTI1OCw2ICsyNTgsMTUgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93
KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgICAgIH0pOwogfQogCit2b2lkIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mb1Nsb3coY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCit7CisgICAgQVNTRVJUKCFpc1RvcCgpKTsKKyAgICBtX3NldC5nZW5lcmljRmlsdGVyKAor
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICByZXR1cm4g
c3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbyk7CisgICAgICAg
IH0pOworfQorCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSBjb25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCkBAIC0zMTksNiAr
MzI4LDE5IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIG92ZXJsYXBzKG90
aGVyLm1fc2V0KTsKIH0KIAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YkNsYXNz
T2YoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0Cit7CisgICAgaWYgKGlzSW5maW5p
dGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTm90ZSB0YWh0IHRoaXMgZnVu
Y3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJ1Y3R1cmUgc2V0IGlzIGVtcHR5LgorICAgIGZv
ciAoY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBtX3NldCkgeworICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjplcXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFs
dWUmIG90aGVyKSBjb25zdAogewogICAgIEFTU0VSVChtX3NldC5tX3BvaW50ZXIgIT0gb3RoZXIu
bV9zZXQubV9wb2ludGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKaW5kZXggY2E5NGE3OWI3NDdiZDkxMjY4YjEyY2Uy
ZDA4NDIxNzgwZjc2Mjk2My4uNTFmNzkzN2Q1NTE4MWY1ZmY2YzU2Y2Y0MDBlZTU5NDVhMzkyODE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmgKQEAgLTE2Myw2ICsxNjMsMTIgQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgICAgIGlmIChpc05laXRoZXJDbGVhck5vclRvcCgpKQogICAgICAgICAg
ICAgZmlsdGVyU2xvdyh0eXBlKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmls
dGVyQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAg
aWYgKGlzTmVpdGhlckNsZWFyTm9yVG9wKCkpCisgICAgICAgICAgICBmaWx0ZXJDbGFzc0luZm9T
bG93KGNsYXNzSW5mbyk7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsK
QEAgLTIzMSw2ICsyMzcsOCBAQCBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKICAgICAK
ICAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAg
IGJvb2wgb3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0
OworCisgICAgYm9vbCBpc1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBj
b25zdDsKICAgICAKQEAgLTI0MSw2ICsyNDksNyBAQCBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2xvYmJlcmVkU3VwcmVtYWN5VGhyZXNo
b2xkID0gMjsKICAgICAKICAgICB2b2lkIGZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSk7
CisgICAgdm9pZCBmaWx0ZXJDbGFzc0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyopOwogICAgIGJv
b2wgbWVyZ2VTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKTsKICAgICAK
ICAgICBib29sIGVxdWFsc1Nsb3coY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWIyYzUzNzUxOTc1NmFjYmQxMTMyZjQ2MmM2
Nzk3MjAwMDM3MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBQYXRjaHBvaW50UGFyYW1zIHsK
K1dURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOworcHVibGljOgorICAgIHZp
cnR1YWwgflBhdGNocG9pbnRQYXJhbXMoKSB7IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ3Muc2l6ZSgpOyB9CisgICAgY29uc3QgUmVnJiBhdCh1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyByZXR1cm4gbV9yZWdzW2luZGV4XTsgfQorICAgIGNvbnN0IFJlZyYgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAg
ICBHUFJSZWcgZ3BTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2dwU2Ny
YXRjaFtpbmRleF07IH0KKyAgICBGUFJSZWcgZnBTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2ZwU2NyYXRjaFtpbmRleF07IH0KKworICAgIFBhdGNocG9pbnRQYXJhbXMo
VmVjdG9yPFJlZz4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQ
UlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogbV9yZWdzKFdURk1vdmUocmVncykpCisgICAg
ICAgICwgbV9ncFNjcmF0Y2goV1RGTW92ZShncFNjcmF0Y2gpKQorICAgICAgICAsIG1fZnBTY3Jh
dGNoKFdURk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorCisgICAg
VmVjdG9yPFJlZz4gbV9yZWdzOworICAgIFZlY3RvcjxHUFJSZWc+IG1fZ3BTY3JhdGNoOworICAg
IFZlY3RvcjxGUFJSZWc+IG1fZnBTY3JhdGNoOworfTsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggM2NlZjk5ODM1MzU3Y2ZjYzRj
YzlkN2QyYmIxNjJjZjk4YjBmZjI4ZS4uMGE3YzA1MDZhZTkxNjA0Nzc1MjUzN2IyMzExZDFlM2Zm
N2NlMjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMjY1LDYgKzI2NSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgRGVmaW5l
RGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICBjYXNl
IENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDI1ZGQ2NjdmNWQ4NTNmYzk3ZTMzZjYwZmU5MjFhMzA0MTVjYzU2ZDQu
LmQ0Zjg2OGEzNDNmNGNmMGIwYWE3M2M3MDllNWM0OTcyNmQ2YWMxMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAK
ICNpbmNsdWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0RnV6ei5oIgor
I2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50
UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgi
CkBAIC0xMDQzLDYgKzEwNDUsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICAgICAgICAgIGNvbXBpbGVVbnJlYWNoYWJsZSgpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgICAgICBjb21waWxl
Q2hlY2tET00oKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGxET006Cisg
ICAgICAgICAgICBjb21waWxlQ2FsbERPTSgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC04NjU1LDYg
Kzg2NjMsOTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIGNyYXNo
KCk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oKQorICAgIHsKKyAgICAgICAg
TFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFJlZlB0
cjxET01KSVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9N
KCk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChWb2lkKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwp
OworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVn
aXN0ZXJzID0gZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisKKyAgICAgICAgU3RhdGUq
IHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9vcmln
aW47CisgICAgICAgIHVuc2lnbmVkIG9zckV4aXRBcmd1bWVudE9mZnNldCA9IHBhdGNocG9pbnQt
Pm51bUNoaWxkcmVuKCk7CisgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yKiBleGl0RGVzY3JpcHRv
ciA9IGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRDb2xkQW55cyhidWls
ZEV4aXRBcmd1bWVudHMoZXhpdERlc2NyaXB0b3IsIG9yaWdpbi5mb3JFeGl0LCBqc1ZhbHVlVmFs
dWUoY2VsbCkpKTsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAg
ICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsK
KyAgICAgICAgICAgICAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPFJlZz4gcmVnczsKKworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFt
c1swXS5ncHIoKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
Z3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsg
KytpKQorICAgICAgICAgICAgICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNjcmF0
Y2goaSkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9
IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2lu
LCBwYXJhbXMsIG9zckV4aXRBcmd1bWVudE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICBET01K
SVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUo
Z3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1bihq
aXQsIGRvbUpJVFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhmYWlsdXJlQ2FzZXMsIGxpbmtCdWZmZXIubG9jYXRpb25PZihoYW5kbGUtPmxhYmVs
KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CisgICAgfQorCisgICAgdm9pZCBj
b21waWxlQ2FsbERPTSgpCisgICAgeworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93
Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgY2Vs
bCA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKworICAgICAgICBS
ZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUtPmRvbUpJVCgpLT5jYWxs
RE9NKCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNo
cG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7CisgICAgICAgIHBhdGNocG9pbnQtPm51
bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOworCisg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgICAg
IFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8UmVnPiBy
ZWdzOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxkIGhhdmUg
YSB3YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCisgICAgICAgICAg
ICAgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBjbG9iYmVyIGlu
Zm9ybWF0aW9uIGlzIG5pY2UuCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMV0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzNdLmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdz
LmFwcGVuZChwYXJhbXNbNF0uZ3ByKCkpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmdwU2NyYXRjaChpKSk7CisKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0
Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZnBTY3JhdGNoLmFwcGVuZChw
YXJhbXMuZnBTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAgICAgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zIGRvbUpJVFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRj
aCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgZG9tSklULT5nZW5lcmF0
b3IoKS0+cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBw
YXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgpOworICAgICAgICBzZXRKU1Zh
bHVlKHBhdGNocG9pbnQpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBhcmVFcU9iamVjdE9y
T3RoZXJUb09iamVjdChFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDc2OTQ5MWEz
NjdiYTVmZjE0MGI1Mzg3YjhiNWZjMmI3ZjhjNmM2ODAuLmM2ZDhiYzNlZGVjNWUyMzRjZWZlNzI3
OGRiZWE1ODRhMjdiNzNkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaApAQCAtMTIwOSw5ICsxMjA5LDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2lu
ZCB7IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07CiAgICAg
ZW51bSBFeGNlcHRpb25KdW1wV2lkdGggeyBOb3JtYWxKdW1wV2lkdGgsIEZhckp1bXBXaWR0aCB9
OwotICAgIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEp1
bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAogICAgICAgICBFeGNlcHRpb25DaGVja0tpbmQgPSBOb3Jt
YWxFeGNlcHRpb25DaGVjaywgRXhjZXB0aW9uSnVtcFdpZHRoID0gTm9ybWFsSnVtcFdpZHRoKTsK
LSAgICBKdW1wIGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKCk7CiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCiAgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90
IGluY3JlbWVudCA9IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGYxNTAwMGIzODIzMTIxYzcz
NmIyNmJkNzdhNDg4MjQ3OWE1YmRjN2UuLmJmMjA5OTBmNWE1MmU0OGVjNTZhNjViMjAzNmQ4ZGM2
ZDY0Mjg2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVk
ZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5o
IgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRlIDx0
eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIApAQCAtNTM3LDEyICs1NDEsMTEyIEBAIGNsYXNzIFNpbXBsZU9iamVjdCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2hp
ZGRlblZhbHVlOwogfTsKIAorY2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgeworcHVibGljOgorICAgIERPTUpJVEdldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisg
ICAgREVDTEFSRV9JTkZPOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVEdldHRlciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01KSVRHZXR0
ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlcj4odm0u
aGVhcCwgc2l6ZW9mKERPTUpJVEdldHRlcikpKSBET01KSVRHZXR0ZXIodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gZ2V0
dGVyOworICAgIH0KKworICAgIGludDMyX3QgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUR2V0dGVyRE9NSklUIDog
cHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUpJ
VEdldHRlckRPTUpJVCgpCisgICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJ
VEdldHRlcjo6Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVRHZXR0ZXI6OmluZm8oKSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hl
Y2tET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAgICAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHBhcmFtc1swXS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKExh
c3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVD
YXNlczsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7Cisg
ICAgICAgIH0KKworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjYWxsRE9NKCkgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0
Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6
OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyhwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMl0uZ3ByKCk7CisjZWxzZQorICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkp
OworICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbM10uZ3ByKCk7CisjZW5kaWYK
KyAgICAgICAgICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhkb20sIERP
TUpJVEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSgpKSwgcmVzdWx0cy5wYXlsb2FkR1BSKCkpOworICAg
ICAgICAgICAgICAgIGppdC5ib3hJbnQzMihyZXN1bHRzLnBheWxvYWRHUFIoKSwgcmVzdWx0cyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJHZXR0
ZXJTZXR0ZXIoKQorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTUpJVEdl
dHRlckRPTUpJVD4gZ3JhcGg7CisgICAgICAgIHJldHVybiAmZ3JhcGguZ2V0KCk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZhbHVlKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKERPTUpJVEdldHRlciwgbV92YWx1ZSk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IGRvbUpJVEdldHRl
ckdldHRlclNldHRlcigpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRl
clNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigp
LCBkb21KSVQtPnNldHRlcigpLCBkb21KSVQpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICAgICAgRE9NSklUR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxET01KSVRHZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlm
ICghdGhpc09iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2Jq
ZWN0LT5tX3ZhbHVlKSk7CisgICAgfQorCisgICAgaW50MzJfdCBtX3ZhbHVlIHsgNDIgfTsKK307
CisKIAogY29uc3QgQ2xhc3NJbmZvIEVsZW1lbnQ6OnNfaW5mbyA9IHsgIkVsZW1lbnQiLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEVsZW1lbnQpIH07CiBjb25zdCBDbGFz
c0luZm8gTWFzcXVlcmFkZXI6OnNfaW5mbyA9IHsgIk1hc3F1ZXJhZGVyIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXNxdWVyYWRlcikgfTsKIGNvbnN0IENsYXNzSW5m
byBSb290OjpzX2luZm8gPSB7ICJSb290IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShSb290KSB9OwogY29uc3QgQ2xhc3NJbmZvIEltcHVyZUdldHRlcjo6c19pbmZvID0g
eyAiSW1wdXJlR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bXB1cmVHZXR0ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7
ICJDdXN0b21HZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1
c3RvbUdldHRlcikgfTsKK2NvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9IHsg
IkRPTUpJVEdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9N
SklUR2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAi
UnVudGltZUFycmF5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50
aW1lQXJyYXkpIH07CiBjb25zdCBDbGFzc0luZm8gU2ltcGxlT2JqZWN0OjpzX2luZm8gPSB7ICJT
aW1wbGVPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNpbXBs
ZU9iamVjdCkgfTsKIHN0YXRpYyBib29sIHRlc3QyNjJBc3luY1Bhc3NlZCB7IGZhbHNlIH07CkBA
IC01NzEsNiArNjc1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVQcm94eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVCdWlsdGluKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4
ZWNTdGF0ZSopOwpAQCAtODU1LDYgKzk2MCw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU0dsb2JhbE9iamVjdCB7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJbXB1
cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwgMSk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0
b21HZXR0ZXJPYmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJ
VEdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWls
dGluLCAyKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBm
dW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
c2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRl
LCAyKTsKQEAgLTEzNTksNiArMTQ2NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gRE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyKiByZXN1bHQg
PSBET01KSVRHZXR0ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0JveC5oIGIvU291cmNlL1dURi93dGYvQm94LmgKaW5kZXggYWQ5ZDVjNTczZjBiZjA1ZDA4M2Uz
YjY1YjIyMjc3NWJhMzQ5MjE2Ny4uYjY2MTMyMTkxOTE3NTgwNjgxNGI0NmExZDIwYTJkMTdkOThh
YTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQm94LmgKKysrIGIvU291cmNlL1dURi93
dGYvQm94LmgKQEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIEJveCB7CiAgICAgewogICAgIH0KIAor
ICAgIEJveChzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBCb3ggY3JlYXRlKEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKICAgICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDUxMzYxMTg4Y2NjNDIxZTA4M2JjYTI1NDZjM2FkODk0YjI2ODBl
MDguLjEyMzNhZjY2NGUyMmZkODYxZDFmZmNjNWFjOGM5NjllOTNmZjJiZmYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxET00gaW1wbGVt
ZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoYWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorCiAyMDE2
LTEwLTAzICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBdXRv
LWdlbmVyYXRlIFdBU01PcHMuaCwgc2hhcmUgd2l0aCB0ZXN0aW5nIEpTT04gZmlsZQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZG9taml0LWdldHRlci1wb2x5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMzExZWY4OTFlMDMwZTYxYThm
YjllMjdjZTlmYTNmNDIwY2FiODUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9k
b21qaXQtZ2V0dGVyLXBvbHkuanMKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwor
dmFyIGRvbWppdDEgPSBjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsKK3ZhciBkb21qaXQyID0g
Y3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KCk7CisKK2Z1bmN0aW9uIGFjY2Vzcyhkb21qaXQpCit7
CisgICAgcmV0dXJuIGRvbWppdC5jdXN0b21HZXR0ZXIgKyBkb21qaXQuY3VzdG9tR2V0dGVyOwor
fQorCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHNob3VsZEJlKGFjY2Vzcygo
aSAmIDB4MSkgPyBkb21qaXQxIDogZG9taml0MiksIDg0KTsKKworc2hvdWxkQmUoYWNjZXNzKHsg
Y3VzdG9tR2V0dGVyOiA0MiB9KSwgODQpOworZG9taml0MS50ZXN0ID0gNDQ7CitzaG91bGRCZShh
Y2Nlc3MoZG9taml0MSksIDg0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1n
ZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
YmFkZDAxNjJkOGVlOGViMzhiM2ViYzc4OTgyNTUyNTczYmY5OTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVh
bCl9YCk7Cit9CisKK3ZhciBkb21qaXQgPSBjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsKKwor
ZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRl
ciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyAr
K2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKGRvbWppdCksIDg0KTsKKworc2hvdWxkQmUoYWNjZXNz
KHsgY3VzdG9tR2V0dGVyOiA0MiB9KSwgODQpOworZG9taml0MS50ZXN0ID0gNDQ7CitzaG91bGRC
ZShhY2Nlc3MoZG9taml0MSksIDg0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290674</attachid>
            <date>2016-10-04 17:35:42 -0700</date>
            <delta_ts>2016-10-04 18:40:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004173231.patch</filename>
            <type>text/plain</type>
            <size>66224</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi5jZTUzYTAwZjdhNWI1OTAw
MjQ3ZTE1MmMwMmUyYzgwYjA2NTliN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMDUgQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYjMvQjNFZmZlY3RzLmg6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpmb3JD
aGVjayk6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6ZWZmZWN0cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJDbGFzc0luZm8pOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RPTUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZG9tSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNsYXNzSW5mbyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6T3BJbmZvV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9N
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mb1Nsb3cpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0
L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zOjp+UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6
YXQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6Om9wZXJhdG9yW10p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmdwU2NyYXRjaCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6ZnBTY3JhdGNoKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpQYXRjaHBvaW50UGFyYW1zKToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUUmVnLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6
OlJlZzo6UmVnKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OmlzR1BSKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmlzRlBSKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omlz
SlNWYWx1ZVJlZ3MpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6Z3ByKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmZwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjpqc1Zh
bHVlUmVncyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrRE9NKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5yZWFjaGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqc2Mu
Y3BwOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OkRPTUpJVEdldHRlcik6CisgICAgICAg
IChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6RE9N
SklUR2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OnZhbHVlKToK
KyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRHZXR0ZXJET01KSVQ6OkRPTUpJVEdl
dHRlckRPTUpJVCk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6ZG9tSklUR2V0dGVyR2V0
dGVyU2V0dGVyKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpvZmZzZXRPZlZhbHVlKToK
KyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChX
VEY6OkRPTUpJVEdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmpl
Y3QpOgorCisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDY3NzgpOiBSZWxlYXNlIEpTQyB0ZXN0IENoYWty
YUNvcmUueWFtbC9DaGFrcmFDb3JlL3Rlc3QvRXJyb3IvdmFsaWRhdGVfbGluZV9jb2x1bW4uanMu
ZGVmYXVsdCBmYWlsaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI5MzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA1OWExYTU3N2MwN2RlYWQxYjZhZmQ0ZjIwNmFiZDFhOTQ1
MGNjNDUxLi5mOWMzYzc1NjcyNDU1YjhlOGRmMjU2NWNhOGIzYjA3MTI2MGUzZjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBpbml0aWFsIENoZWNrRE9NIGFuZCBDYWxs
RE9NIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyOTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvQm94Lmg6CisgICAgICAgIChXVEY6OkJveDo6Qm94KToKKwogMjAx
Ni0xMC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBLZXlib2FyZEV2ZW50LmtleSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGM0NDI2ZWJlY2I4MGVmZGJlZTQ4MWJiZTY4ZWQ4YmMzZTlmYWYxNy4u
NDdlOTE4YjBmZGI4YWJlYmJhYzI0MzhjNTY0MDc1MGMzMTUxZTE2OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExOTIsNiArMTE5Miw3IEBACiAJCTQzQzM5MkFCMUMzQkVCMDUw
MDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2
QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTQ1MTUzOUI5MTJE
Qzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1
RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAv
KiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNC
bG9ja0xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3Bw
ICovOyB9OwogCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY4
RDFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2NzhGOTExQTA0MTc3QzAwNkEz
MDZEIC8qIENvbnRyb2xGbG93UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4RjkwMUEwNDE3N0MwMDZBMzA2RCAvKiBDb250cm9sRmxv
d1Byb2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTIwNzgsNiArMjA3OSw3IEBACiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsg
fTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CisJCUUzM0QxNzYyMURBNDZGQzkwMEI0
N0ZCRSAvKiBET01KSVRSZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQUU0MzJGMURBNDZGOEQwMDIwQzAwNSAvKiBET01KSVRSZWcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNFOEQxQzFCOTAx
M0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyog
SlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi87IH07CiAJCUUzM0U4RDFEMUI5MDEzQzMwMDM0NkI1
MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRG
dW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzM0U4RDIwMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUUx
QjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgKi87IH07CkBAIC0y
MTgzLDcgKzIxODUsNiBAQAogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJD
MTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5j
cHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1
MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMzM1Myw2ICszMzU0LDcgQEAKIAkJMTRG
NzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRs
ZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtIYW5kbGVPd25l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY5NzQ0NjEzOEM4NTNFMDBEQTFD
NjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk5NDhF
REU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNN
b2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
b2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4RDRBNzE3
N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUNGNzM3NjE3MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQzOTcsMTEgKzQzOTksMTMgQEAKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3
OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzOTM5RTQwMURBNDZBMkQwMDlBRTMyNSAvKiBET01KSVRQYXRjaHBvaW50UGFy
YW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVySW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlE
QTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJn
ZXRzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0FFNDMyRjFEQTQ2
RjhEMDAyMEMwMDUgLyogRE9NSklUUmVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUpJVFJlZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFE
QTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NTI2LDcgKzQ1MzAsNiBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAw
QkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5k
U3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC03MTgzLDYgKzcxODYsOCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdl
dHRlclNldHRlci5oICovLAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQ
YXRjaHBvaW50LmggKi8sCisJCQkJRTM5MzlFNDAxREE0NkEyRDAwOUFFMzI1IC8qIERPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaCAqLywKKwkJCQlFM0FFNDMyRjFEQTQ2RjhEMDAyMEMwMDUgLyogRE9N
SklUUmVnLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03Mjc3LDYgKzcyODIsNyBAQAogCQkJCTg2RDNCMkM1MTAxNTZCREUwMDI4
NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTMzRDE3NjIxREE0NkZDOTAwQjQ3RkJFIC8qIERPTUpJVFJlZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcwRTcxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcwRTgxOUY1
QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg0RkYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRS
ZWdWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgK
aW5kZXggYzA0NzQ4ZjZhMzg3MzUwYTAzMTAzMWUzYmMxYjA1MjkwNWJlOWNhOS4uYmVjNDc4NjU4
YmRlOWNmMjk3ZDkwZTJjZWFiODZlMTIyYTE3M2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VmZmVjdHMuaApAQCAtNzgsNiArNzgsMTUgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBFZmZlY3RzIGZvckNoZWNrKCkKKyAg
ICB7CisgICAgICAgIEVmZmVjdHMgcmVzdWx0OworICAgICAgICByZXN1bHQuZXhpdHNTaWRld2F5
cyA9IHRydWU7CisgICAgICAgIC8vIFRoZSBwcm9ncmFtIGNvdWxkIHJlYWQgYW55dGhpbmcgYWZ0
ZXIgZXhpdGluZywgYW5kIGl0J3Mgb24gdXMgdG8gZGVjbGFyZSB0aGlzLgorICAgICAgICByZXN1
bHQucmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKwogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggMTYxYWNlZDcyYmE2NmIxODE3
YTVmM2E0NzliYmI5MzMxMmRjYWM4OS4uYTA4N2Y1MWVjZTFkZDI1ZTFjMjI0MzZhODM3MDM3Mzc4
NzAzODQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtNjE0LDkgKzYx
NCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2tTdWI6
CiAgICAgY2FzZSBDaGVja011bDoKICAgICBjYXNlIENoZWNrOgotICAgICAgICByZXN1bHQuZXhp
dHNTaWRld2F5cyA9IHRydWU7Ci0gICAgICAgIC8vIFRoZSBwcm9ncmFtIGNvdWxkIHJlYWQgYW55
dGhpbmcgYWZ0ZXIgZXhpdGluZywgYW5kIGl0J3Mgb24gdXMgdG8gZGVjbGFyZSB0aGlzLgotICAg
ICAgICByZXN1bHQucmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICByZXN1bHQgPSBF
ZmZlY3RzOjpmb3JDaGVjaygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVwc2lsb246CiAg
ICAgY2FzZSBTZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcAppbmRleCA3MTlkOGYyNzI4M2Y1ZDEyM2NlNTc3MTU0NWU0NjliZjgxYWZm
MjI3Li4yNDI1MjkyYWZmNjA1OWFhYTc4Y2I4NDk3ZDE4NmI5YjUwNDJlNjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTM1
Myw2ICszNTMsMTIgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5
cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogeworICAgIGlmIChjbGFzc0lu
Zm8gPT0gSlNTdHJpbmc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CisKKyAg
ICBpZiAoY2xhc3NJbmZvID09IFN5bWJvbDo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N5
bWJvbDsKKwogICAgIGlmIChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAg
ICAgICByZXR1cm4gU3BlY0ZpbmFsT2JqZWN0OwogICAgIApAQCAtMzg1LDYgKzM5MSw5IEBAIFNw
ZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbykKICAgICAKICAgICBpZiAoaXNUeXBlZFZpZXcoY2xhc3NJbmZvLT50eXBlZEFycmF5
U3RvcmFnZVR5cGUpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5
cGUoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpOworCisgICAgaWYgKGNsYXNzSW5m
by0+aXNTdWJDbGFzc09mKEpTQXJyYXk6OmluZm8oKSkpCisgICAgICAgIHJldHVybiBTcGVjRGVy
aXZlZEFycmF5OwogICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU09iamVj
dDo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIFNwZWNPYmplY3RPdGhlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKaW5kZXggNTk3
MjgxNjYyZThhZDFmZmFhODU1NjIyYzcwNTlhNDc0YjJmNDQ2ZS4uYmNmNmQ3ZTczMWZjZDdlMDUz
NTNhZmQ2OWI4YjlhNDM5M2ZiYTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKQEAgLTEzNCwxMCArMTM0LDE3IEBAIGNsYXNz
IEFic3RyYWN0SW50ZXJwcmV0ZXIgewogICAgICAgICByZXR1cm4gZmlsdGVyQnlWYWx1ZShmb3JO
b2RlKG5vZGUpLCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oVCBub2RlLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8o
Zm9yTm9kZShub2RlKSwgY2xhc3NJbmZvKTsKKyAgICB9CisKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5
cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
ckFycmF5TW9kZXMoQWJzdHJhY3RWYWx1ZSYsIEFycmF5TW9kZXMpOwogICAgIEZpbHRyYXRpb25S
ZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBTcGVjdWxhdGVkVHlwZSk7CiAgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEFic3RyYWN0VmFsdWUmLCBGcm96ZW5WYWx1ZSk7Cisg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oQWJzdHJhY3RWYWx1ZSYsIGNvbnN0
IENsYXNzSW5mbyopOwogICAgIAogICAgIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbigpIHsgcmV0
dXJuIG1fcGhpQ2hpbGRyZW4uZ2V0KCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBj
ZTZiZWY5YWQzZmQwNTc5ZmU1YWE5ZTAxYTg0ZTczYmU2OGY2ZDRhLi45ZGZjNjNkYzY4YTE4ZDE0
NGRjYzRlNTc3ZDdmMTQ2N2JlNmE3YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJz
dHJhY3RJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjI2Myw2ICsyMjY0LDI4IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBm
b3JOb2RlKG5vZGUpLmNsZWFyKCk7IC8vIFRoZSByZXN1bHQgaXMgbm90IGEgSlMgdmFsdWUuCiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hlY2tET006IHsKKyAgICAgICAgSlNWYWx1ZSBjb25z
dGFudCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjb25z
dGFudCkgeworICAgICAgICAgICAgaWYgKGNvbnN0YW50LmlzQ2VsbCgpICYmIGNvbnN0YW50LmFz
Q2VsbCgpLT5pbmhlcml0cyhub2RlLT5jbGFzc0luZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBt
X3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICAgICAgICAgIEFTU0VSVChj
b25zdGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpOworCisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YkNsYXNzT2Yobm9kZS0+
Y2xhc3NJbmZvKCkpKQorICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVl
KTsKKworICAgICAgICBmaWx0ZXJDbGFzc0luZm8odmFsdWUsIG5vZGUtPmNsYXNzSW5mbygpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZm9y
Tm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
aGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tl
ZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAg
IG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CkBAIC0zMDUxLDYgKzMwNzQsMTYgQEAg
RmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZmlsdGVyQnlWYWx1ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+
CitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpmaWx0ZXJDbGFzc0luZm8oCisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKQoreworICAgIGlmICh2YWx1ZS5maWx0ZXJDbGFzc0luZm8obV9ncmFw
aCwgY2xhc3NJbmZvKSA9PSBGaWx0cmF0aW9uT0spCisgICAgICAgIHJldHVybiBGaWx0cmF0aW9u
T0s7CisgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKyAgICByZXR1cm4gQ29udHJhZGlj
dGlvbjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiB2b2lkIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRG91YmxlVW5hcnlP
cEVmZmVjdHMoTm9kZSogbm9kZSwgZG91YmxlKCplcXVpdmFsZW50RnVuY3Rpb24pKGRvdWJsZSkp
CiB7CiAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAppbmRl
eCBjM2VmZGFjZWU3OGQ2YWNlZWY2NWE5ODMyODQxYmQ2ZjQxYmNhNDdmLi42NzJiMjI4MTY3MTUy
ZDhlMzEyN2Y0NTg3ZWUzNDdjZGYxODM4ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKQEAgLTMwNiw2ICszMDYsMjMgQEAgRmlsdHJhdGlv
blJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlN
b2RlcykKICAgICByZXR1cm4gbm9ybWFsaXplQ2xhcml0eSgpOwogfQogCitGaWx0cmF0aW9uUmVz
dWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mbyhHcmFwaCYgZ3JhcGgsIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQoreworICAgIEFTU0VSVChhcnJheU1vZGVzKTsKKworICAgIGlm
IChpc0NsZWFyKCkpCisgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CisKKyAgICBtX3R5cGUg
Jj0gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNsYXNzSW5mbyk7CisgICAgbV9zdHJ1Y3R1cmUu
ZmlsdGVyQ2xhc3NJbmZvKGNsYXNzSW5mbyk7CisKKyAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKKworICAgIGZpbHRlckFycmF5TW9kZXNCeVR5cGUoKTsKKyAgICBmaWx0ZXJWYWx1ZUJ5
VHlwZSgpOworICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KGdyYXBoKTsKK30KKwogRmlsdHJh
dGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsK
ICAgICBpZiAoKG1fdHlwZSAmIHR5cGUpID09IG1fdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKaW5kZXggMzJlYjBmMTljNWM5MWY2NzcxOGU3M2Qw
YTdjMzhlMTlmY2YyODNlZi4uOGE5MTAxNDA3NTYzYWIxM2VhMDBkNWM2YmNlODg0YzU5MjgwMzE2
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKQEAg
LTMwNyw2ICszMDcsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgRmlsdHJhdGlvblJl
c3VsdCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
QnlWYWx1ZShjb25zdCBGcm96ZW5WYWx1ZSYgdmFsdWUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQg
ZmlsdGVyKGNvbnN0IEFic3RyYWN0VmFsdWUmKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
ckNsYXNzSW5mbyhHcmFwaCYsIGNvbnN0IENsYXNzSW5mbyopOwogCiAgICAgRmlsdHJhdGlvblJl
c3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3ImKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggMGI1ZmI5NWQ5NTdiMTJhNDM4MWNmZmI5YjZjMmE0ZWIzMmFiM2E0ZC4uOThiYTM3YjZl
OGU5MjgwNGZlM2JhMjYxZDU0MTlmY2M4ZTJjZTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIxOSw2ICsyMTksNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24oTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0
aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJh
c2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBjb25zdCBJbmZlcnJlZFR5
cGU6OkRlc2NyaXB0b3ImLCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZz
ZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IFByb3BlcnR5T2Zmc2V0LCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3ImLCBOb2RlVHlw
ZSA9IEdldEJ5T2Zmc2V0KTsKKyAgICBib29sIGhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbik7CiAKICAgICAvLyBDcmVhdGUgYSBwcmVzZW5jZSBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBiYXNlZCBvbiBzb21lIGtub3duIG9mZnNldCBhbmQgc3RydWN0dXJlIHNl
dC4gRG9lcyBub3QKICAgICAvLyBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbmRpdGlvbiwg
YnV0IGl0IG1heSByZXR1cm4gYSBudWxsIG9uZSBpZiBpdCBlbmNvdW50ZXJzIGEgY29udHJhZGlj
dGlvbi4KQEAgLTI2NTksNiArMjY2MCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlh
bnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQor
eworICAgIGlmICghdmFyaWFudC5kb21KSVQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IHZhcmlhbnQuZG9tSklUKCk7CisgICAg
YWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZvKGRvbUpJVCksIE9wSW5mbyhkb21KSVQtPnRoaXND
bGFzc0luZm8oKSksIHRoaXNOb2RlKTsKKyAgICBOb2RlKiBnbG9iYWxPYmplY3QgPSBhZGRUb0dy
YXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOworICAgIGFkZFZhckFyZ0NoaWxkKGdsb2Jh
bE9iamVjdCk7IC8vIEdsb2JhbE9iamVjdCBvZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBj
cmVhdGUgYSBET01XcmFwcGVyLgorICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNOb2RlKTsKKyAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
ZywgQ2FsbERPTSwgT3BJbmZvKGRvbUpJVCksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKAogICAgIGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LApAQCAtMzMyNCw2ICszMzM5LDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQoCiAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5SWQo
KTsKIAogICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCAhdmFyaWFudC5jYWxs
TGlua1N0YXR1cygpKTsKKworICAgIGlmICh2YXJpYW50LmRvbUpJVCgpKSB7CisgICAgICAgIGlm
IChoYW5kbGVET01KSVRHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCB2YXJpYW50LCBiYXNlLCBw
cmVkaWN0aW9uKSkgeworICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBsb2FkZWRWYWx1
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoIXZh
cmlhbnQuY2FsbExpbmtTdGF0dXMoKSAmJiB2YXJpYW50LmludHJpbnNpYygpID09IE5vSW50cmlu
c2ljKSB7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwg
bG9hZGVkVmFsdWUpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IDFlNTU1ZmUxYWZmMmZlMzFhZTg5NWNhZjU5OGU2ZmM5M2Vl
M2FmOGQuLjYyYTEyOTdlNDM4OTVlODNmMzg1M2RiNTVkMTdmOTE4ZGRiNjUyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC04ODUsNiArODg1LDE1IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQnV0dGVy
Zmx5TG9jLCBKU09iamVjdF9idXR0ZXJmbHksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICBkZWYo
UHVyZVZhbHVlKENoZWNrRE9NLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBu
b2RlLT5jaGlsZDEoKSksIG5vZGUtPmNsYXNzSW5mbygpKSk7CisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRlKEhl
YXApOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJy
YXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA1ZDYzMjlkMjhmNWZmM2JmNjVhMWNmY2E0N2FhNjc3NDE2OTM1ZTJmLi5kOWJj
N2U3MDlhMTFjZDRlM2QxOWJlYjVlYjhlMjAwMWJmM2EwZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTU4
LDYgKzE1OCwyOCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjYXNlIENoZWNrRE9NOiB7CisgICAgICAgICAgICAgICAgSlNWYWx1
ZSBjb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnN0YW50LmlzQ2VsbCgpICYmIGNvbnN0YW50LmFzQ2VsbCgpLT5pbmhlcml0cyhub2RlLT5jbGFz
c0luZm8oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0
ZShpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzU3ViQ2xhc3NPZihub2RlLT5jbGFzc0luZm8oKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAgICAgICAgICAgICAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzMTg1NTk2Y2Y5MzNj
ZTA4OTYxMmJjOWE0NTdlMWIyZDU3NDZjNzU5Li41NzI2Y2I1ZTZlN2E0MjY3YmU3MmU2N2RjYTM3
Y2I5N2E3YzAxY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0xMTgsNiArMTE4LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNh
c2UgR2V0QnV0dGVyZmx5OgorICAgIGNhc2UgQ2FsbERPTToKKyAgICBjYXNlIENoZWNrRE9NOgog
ICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgU2tpcFNj
b3BlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
ZmQ2ZGQ1NDRlODAyNDlkODJkYjEwMmEwNjY0OWM2OTA2NTlhODk2OS4uNDE3ODc5OGZjZGI0Mzlj
ODNiN2Q0MDlmZjQ3ZWNkMjU3YTU2YjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjkwLDYgKzE2OTAsMTUgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ2FsbERPTToKKyAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsgLy8gR2xvYmFsT2JqZWN0LgorICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsgLy8gRE9NLgorICAgICAgICAgICAgYnJlYWs7CisK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMg
aGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5l
dyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCA5OWE4MmM5Y2Q5NmFhNzhjM2IwNDBlYzU0ZWQ5ZWUxMmYwMWRlODI2
Li40MjM3YTUyNjI0OTkyMWQwM2ZjYmE2Zjg4YmIwNjU2YTdlNmIxN2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6
CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKKyAgICAgICAgY2FzZSBDYWxsRE9N
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMzEyLDcgKzIzMTMsMjggQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBBU1NFUlQoaGFzQmFzaWNCbG9ja0xvY2F0aW9uKCkpOwogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8QmFzaWNCbG9ja0xvY2F0aW9uKj4oKTsKICAgICB9Ci0gICAgCisKKyAgICBib29s
IGhhc0RPTUpJVCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0RP
TSB8fCBvcCgpID09IENhbGxET007CisgICAgfQorCisgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIq
IGRvbUpJVCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRE9NSklUKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigpOworICAgIH0KKworICAg
IGJvb2wgaGFzQ2xhc3NJbmZvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IENoZWNrRE9NOworICAgIH0KKworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZvKj4oKTsKKyAg
ICB9CisKICAgICBOb2RlKiByZXBsYWNlbWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9taXNjLnJlcGxhY2VtZW50OwpAQCAtMjM5Miw2ICsyNDE0LDExIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgICAgIHUuaW50NjQgPSAwOwogICAgICAgICAgICAgdS5wb2ludGVyID0gcG9p
bnRlcjsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKGNvbnN0IHZvaWQqIGNvbnN0
UG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAg
ICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKKyAgICAgICAgfQogICAgICAgICBPcElu
Zm9XcmFwcGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHUuaW50NjQgPSAwOwpAQCAtMjQxNSwxMiArMjQ0MiwyMyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgICAgICB1LnBvaW50ZXIgPSBwb2ludGVyOwogICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPShjb25zdCB2b2lk
KiBjb25zdFBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOworICAg
ICAgICAgICAgdS5jb25zdFBvaW50ZXIgPSBjb25zdFBvaW50ZXI7CisgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIEFMV0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsIFQ+Ojp0eXBlCisgICAgICAgIEFMV0FZU19J
TkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cG9pbnRlcjxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odS5wb2ludGVyKTsKICAgICAgICAgfQogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29u
c3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2
YWx1ZSwgVD46OnR5cGUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFQ+KHUuY29uc3RQb2ludGVyKTsKKyAgICAgICAgfQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUgJiYgc2l6ZW9mKFQpID09
IDQsIFQ+Ojp0eXBlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1LmludDMyOwpAQCAt
MjQzNCw2ICsyNDcyLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdWludDMyX3QgaW50
MzI7CiAgICAgICAgICAgICB1aW50NjRfdCBpbnQ2NDsKICAgICAgICAgICAgIHZvaWQqIHBvaW50
ZXI7CisgICAgICAgICAgICBjb25zdCB2b2lkKiBjb25zdFBvaW50ZXI7CiAgICAgICAgIH0gdTsK
ICAgICB9OwogICAgIE9wSW5mb1dyYXBwZXIgbV9vcEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDVhZGE4OWJjMTM4YTY1MDQwYWVlYTlkMmZhN2RhM2Yw
NjBkMzFlOC4uOWMzZmI5MGVhMDZiMGNmOTA1OGU1MTY2MGU1YjU4ZjI1ZjdjMjYxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzk2LDYgKzM5NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0TWFwQnVja2V0LCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhMb2FkRnJvbUpTTWFwQnVja2V0LCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhJc05vbkVtcHR5TWFwQnVja2V0LCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAorICAgIFwKKyAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKKyAgICBtYWNybyhDaGVja0RP
TSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENhbGxET00sIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogCiAvLyBUaGlzIGVudW0gZ2Vu
ZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywK
IC8vIGFuZCBpcyB1c2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0gdG8gZmlsbCBvdXQgdGhlIGlk
IChhcyBhY2Nlc3NlZCB2aWEgdGhlIE5vZGVJZE1hc2spLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BJbmZvLmgKaW5kZXggZDQ3YTk3MDljMjliNTJkM2I1ZDhlZjRmMzNlMDliNWQ3ZTVjYmRl
Ny4uNTdmMzMyOTdlZTc0ZTFiN2U0YmE1Zjg5Mzg2N2Y5ZWM0NzA2ZDExYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBPcEluZm8g
ewogICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50cHRyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odmFsdWUpKSB7IH0KICNlbmRpZgogICAgIGV4cGxpY2l0IE9wSW5mbyh2
b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odmFsdWUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGNvbnN0IHZv
aWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KICAgICB1aW50NjRfdCBtX3ZhbHVlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0NTk0MThhYjcxMjFmNzAxOGE5ZGMyMzNjNzBlMGZj
YmVlN2VkNDNiLi5lYTkyMTU2MjVkMWU5ZmYwMmRlMDdjZTcwOTY1M2NjOTU3YTRjNTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNjk5LDcgKzY5OSw4IEBAIGNsYXNzIFByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRDbG9zdXJl
VmFyOgogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgICAgIGNhc2UgTG9hZEZy
b21KU01hcEJ1Y2tldDoKLSAgICAgICAgY2FzZSBUb051bWJlcjogeworICAgICAgICBjYXNlIFRv
TnVtYmVyOgorICAgICAgICBjYXNlIENhbGxET006IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtODE5LDYgKzgyMCw5IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9u
KFNwZWNPYmplY3QpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGFiZTY3MmE4OTRmY2VmNGMxZDhhYzAzOTFl
YWZhYWQ2ZmM3Y2E5ZjguLmM3ZTFiNmI3M2RiODE3MTBhMjhhODhkYjMxZDUyZGY2ZWUzMGUyMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0y
MTgsNiArMjE4LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgorICAgIGNhc2Ug
Q2FsbERPTToKKyAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA2MDgxYzU3
YjI4NjE4ZTQzZDllYTI4ZDU1NjEwMTU4MmE2MmM1OGNhLi4wNmIyYTliZDA1YzczYzM4Y2NlMTY0
YzA3MGFmOTNiOWI4NDgwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgU2xvd1BhdGhHZW5lcmF0b3IgeworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgU2xvd1BhdGhHZW5lcmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFNsb3dQYXRoR2VuZXJhdG9yKFNwZWN1bGF0aXZlSklUKiBq
aXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDZiNjQ0NTQ0MWIxMTViMmYyN2Q1OWE5NjNkYmU1ODBkZGZmM2UwZGUuLjUxMTA1ZDRk
MzMyMjhmNjQ5ZDEyM2E5OTMyOWM4ZjZhNmQ1MGNiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5j
bHVkZSAiREZHT1NSRXhpdEZ1enouaCIKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxT
bG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJKSVRBZGRH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKQEAgLTcwNTcsNiAr
NzA1OSw3NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
IG5vZGUpCiAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCitzdGF0aWMg
dm9pZCBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgVmVjdG9yPEdQUlRlbXBvcmFyeT4mIGdwSG9sZGVycywgVmVjdG9yPEZQUlRlbXBv
cmFyeT4mIGZwSG9sZGVycywgVmVjdG9yPEdQUlJlZz4mIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJl
Zz4mIGZwU2NyYXRjaCwgRE9NSklUOjpQYXRjaHBvaW50JiBwYXRjaHBvaW50KQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUdQU2NyYXRjaFJlZ2lzdGVyczsg
KytpKSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAgICAgZ3BT
Y3JhdGNoLmFwcGVuZCh0ZW1wb3JhcnkuZ3ByKCkpOworICAgICAgICBncEhvbGRlcnMuYXBwZW5k
KFdURk1vdmUodGVtcG9yYXJ5KSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBhdGNocG9pbnQubnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgRlBS
VGVtcG9yYXJ5IHRlbXBvcmFyeShqaXQpOworICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKHRlbXBv
cmFyeS5mcHIoKSk7CisgICAgICAgIGZwSG9sZGVycy5hcHBlbmQoV1RGTW92ZSh0ZW1wb3Jhcnkp
KTsKKyAgICB9Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUq
IG5vZGUpCit7CisgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG5vZGUt
PmRvbUpJVCgpLT5jYWxsRE9NKCk7CisgICAgQVNTRVJUKHBhdGNocG9pbnQpOworCisgICAgVmVj
dG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAg
ICBWZWN0b3I8RE9NSklUOjpSZWc+IHJlZ3M7CisKKyAgICAvLyBGSVhNRTogcGF0Y2hwb2ludCBz
aG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdpc3Rlci4K
KyAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5m
b3JtYXRpb24gaXMgbmljZS4KKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3Qo
dGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICByZWdzLmFw
cGVuZChyZXN1bHQucmVncygpKTsKKyAgICByZWdzLmFwcGVuZChnbG9iYWxPYmplY3QuZ3ByKCkp
OworICAgIHJlZ3MuYXBwZW5kKGJhc2UuZ3ByKCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
cmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKKyAgICByZWdzLmFwcGVuZChzdGF0aWNfY2FzdDxHUFJSZWc+KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOworI2VuZGlmCisKKyAgICBWZWN0b3I8R1BSVGVtcG9yYXJ5PiBncFRl
bXByYXJpZXM7CisgICAgVmVjdG9yPEZQUlRlbXBvcmFyeT4gZnBUZW1wcmFyaWVzOworICAgIGFs
bG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludCh0aGlzLCBncFRlbXByYXJpZXMs
IGZwVGVtcHJhcmllcywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIHBhdGNocG9pbnQuZ2V0KCkpOwor
ICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIHBhdGNocG9pbnQtPmdlbmVy
YXRvcigpLT5ydW4obV9qaXQsIHBhcmFtcyk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQucmVn
cygpLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9NKE5v
ZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IFdlIGNhbiBhZGQgdGhlIGZhbGxiYWNrIGltcGxl
bWVudGF0aW9uIHRoYXQgaW5saW5lcyBqc0R5bmFtaWNDYXN0IHRoaW5ncyBoZXJlLgorICAgIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2hlY2tE
T00oKTsKKworICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVn
PiBmcFNjcmF0Y2g7CisgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgcmVncy5hcHBl
bmQoYmFzZS5ncHIoKSk7CisKKyAgICBWZWN0b3I8R1BSVGVtcG9yYXJ5PiBncFRlbXByYXJpZXM7
CisgICAgVmVjdG9yPEZQUlRlbXBvcmFyeT4gZnBUZW1wcmFyaWVzOworICAgIGFsbG9jYXRlVGVt
cG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludCh0aGlzLCBncFRlbXByYXJpZXMsIGZwVGVtcHJh
cmllcywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIHBhdGNocG9pbnQuZ2V0KCkpOworCisgICAgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zIHBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2Ny
YXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
YWlsdXJlQ2FzZXMgPSBwYXRjaHBvaW50LT5nZW5lcmF0b3IoKS0+cnVuKG1faml0LCBwYXJhbXMp
OworICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZS5ncHIoKSks
IG5vZGUtPmNoaWxkMSgpLCBmYWlsdXJlQ2FzZXMpOworICAgIG5vUmVzdWx0KG5vZGUpOworfQor
CiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OnRlbXBvcmFyeVJlZ2lzdGVyRm9yUHV0QnlWYWwoR1BS
VGVtcG9yYXJ5JiB0ZW1wb3JhcnksIEFycmF5TW9kZSBhcnJheU1vZGUpCiB7CiAgICAgaWYgKCFw
dXRCeVZhbFdpbGxOZWVkRXh0cmFSZWdpc3RlcihhcnJheU1vZGUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDFkYWI5MjE1YzBhMWFjYTQ0
MzU2MzdiMTMyNjFhYWE3MmM1NjIyZWYuLmE3ZGViMjZiY2U5MWE5NmM3ZjYzNDg5M2EwYjhkNWEx
ZTRiM2E0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTI1MzgsNiArMjUzOCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0
QnV0dGVyZmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlT3BlcmFuZFR5cGUsIHR5cGVuYW1lIFByb3BlcnR5
T3BlcmFuZFR5cGUsIHR5cGVuYW1lIFZhbHVlT3BlcmFuZFR5cGUsIHR5cGVuYW1lIFRhZ1R5cGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCA1ODg0NjM4NTgxNzlkOTBiOWNiNjU0MWU0NmQzZGViOTJhMDJiMGZhLi5j
YmY2ZTI0MDllZmI3MDVmYWY0Y2QxZTFmMGFlNmEwODBjMjBjMDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTU0
MzAsNiArNTQzMCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29t
cGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDaGVja0RPTToK
KyAgICAgICAgY29tcGlsZUNoZWNrRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgVW5yZWFjaGFibGU6CiAgICAgICAgIHVucmVhY2hhYmxlKG5vZGUpOwogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDk2YTdkYWYwYmYzYjhmMzk4YTBiM2NhNTg1MzI2NTkwZTAzY2E4MGQuLmIzN2Ey
NDdlNmUyNDNjYWMyMGZiOTY1ODI1YmMxODMyN2UzMDc2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTU2MSw2ICs1NTYx
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgY29tcGlsZUNoZWNrRE9NKG5vZGUp
OworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxs
VGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAppbmRleCA3YTgyM2VlODZj
YTkzYWRhYjQ2MzM0ZDVkZWYyMjYxNmU3NzJiMDM4Li44OGQ1Nzc1NjlhZjliMDNkYzk4ZDRjY2M0
YjdmN2M0YTcxMjgyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKQEAgLTI1OCw2ICsyNTgsMTUgQEAgdm9p
ZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5cGUp
CiAgICAgICAgIH0pOwogfQogCit2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNs
YXNzSW5mb1Nsb3coY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCit7CisgICAgQVNTRVJUKCFp
c1RvcCgpKTsKKyAgICBtX3NldC5nZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlLT5jbGFzc0luZm8o
KS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbyk7CisgICAgICAgIH0pOworfQorCiBib29sIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAog
ewogICAgIGlmIChpc0luZmluaXRlKCkpCkBAIC0zMTksNiArMzI4LDE5IEBAIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIG92ZXJsYXBzKG90aGVyLm1fc2V0KTsKIH0KIAorYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8pIGNvbnN0Cit7CisgICAgaWYgKGlzSW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gTm90ZSB0YWh0IHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlm
IHRoZSBzdHJ1Y3R1cmUgc2V0IGlzIGVtcHR5LgorICAgIGZvciAoY29uc3QgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgOiBtX3NldCkgeworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkt
PmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpl
cXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogewog
ICAgIEFTU0VSVChtX3NldC5tX3BvaW50ZXIgIT0gb3RoZXIubV9zZXQubV9wb2ludGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmgKaW5kZXggY2E5NGE3OWI3NDdiZDkxMjY4YjEyY2UyZDA4NDIxNzgwZjc2Mjk2My4uNTFm
NzkzN2Q1NTE4MWY1ZmY2YzU2Y2Y0MDBlZTU5NDVhMzkyODE0MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKQEAgLTE2
Myw2ICsxNjMsMTIgQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGlm
IChpc05laXRoZXJDbGVhck5vclRvcCgpKQogICAgICAgICAgICAgZmlsdGVyU2xvdyh0eXBlKTsK
ICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyQ2xhc3NJbmZvKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgaWYgKGlzTmVpdGhlckNsZWFyTm9y
VG9wKCkpCisgICAgICAgICAgICBmaWx0ZXJDbGFzc0luZm9TbG93KGNsYXNzSW5mbyk7CisgICAg
fQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTIzMSw2ICsyMzcsOCBAQCBj
bGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBib29sIG92ZXJsYXBzKGNv
bnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OworCisgICAgYm9vbCBpc1N1YkNs
YXNzT2YoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0ZVJl
ZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25zdDsKICAgICAKQEAgLTI0MSw2
ICsyNDksNyBAQCBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2xvYmJlcmVkU3VwcmVtYWN5VGhyZXNob2xkID0gMjsKICAgICAKICAgICB2
b2lkIGZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSk7CisgICAgdm9pZCBmaWx0ZXJDbGFz
c0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyopOwogICAgIGJvb2wgbWVyZ2VTbG93KGNvbnN0IFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKTsKICAgICAKICAgICBib29sIGVxdWFsc1Nsb3co
Y29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjM4NjM5MDA5NjBhNjhmZGUwOGNmNGJiMDYxZDI0NzQ1ZjcxYmNjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50
UGFyYW1zLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1
ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRPTUpJVFJlZy5oIgorI2luY2x1ZGUgIlJl
Z2lzdGVyU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworY2xh
c3MgUGF0Y2hwb2ludFBhcmFtcyB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRjaHBvaW50UGFy
YW1zKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYXRjaHBvaW50UGFyYW1zKCkgeyB9CisKKyAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWdzLnNpemUoKTsgfQorICAgIGNv
bnN0IFJlZyYgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnc1tpbmRleF07
IH0KKyAgICBjb25zdCBSZWcmIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGF0KGluZGV4KTsgfQorCisgICAgR1BSUmVnIGdwU2NyYXRjaCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV9ncFNjcmF0Y2hbaW5kZXhdOyB9CisgICAgRlBSUmVnIGZwU2NyYXRj
aCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9mcFNjcmF0Y2hbaW5kZXhdOyB9CisK
KyAgICBQYXRjaHBvaW50UGFyYW1zKFZlY3RvcjxSZWc+JiYgcmVncywgVmVjdG9yPEdQUlJlZz4m
JiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNoKQorICAgICAgICA6IG1fcmVn
cyhXVEZNb3ZlKHJlZ3MpKQorICAgICAgICAsIG1fZ3BTY3JhdGNoKFdURk1vdmUoZ3BTY3JhdGNo
KSkKKyAgICAgICAgLCBtX2ZwU2NyYXRjaChXVEZNb3ZlKGZwU2NyYXRjaCkpCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKworICAgIFZlY3RvcjxSZWc+IG1fcmVnczsKKyAgICBWZWN0b3I8R1BS
UmVnPiBtX2dwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBtX2ZwU2NyYXRjaDsKK307CisK
K30gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUmVnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFJlZy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVmMjM4NjYzNTZlY2YwN2ViMjkzNWI2NGJmMzBmMzY3N2RiNTNkNWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFJlZy5oCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlZy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERP
TUpJVCB7CisKKy8vIEl0IGlzIHF1aXRlIHVuZm9ydHVuYXRlIHRoYXQgMzIgYml0IGVudmlyb25t
ZW50IGV4aXN0cyBvbiBERkchIFRoaXMgbWVhbnMgdGhhdCBKU1ZhbHVlUmVncyBjb250YWlucyAy
IHJlZ2lzdGVycworLy8gaW4gc3VjaCBhbiBlbnZpcm9ubWVudC4gSWYgd2UgdXNlIEdQUlJlZyBh
bmQgRlBSUmVnIGluIERPTUpJVFBhdGNocG9pbnRQYXJhbXMsIERPTUpJVFBhdGNocG9pbnRQYXJh
bXMgbWF5IGNvbnRhaW4KKy8vIGRpZmZlcmVudCBudW1iZXIgb2YgcmVnaXN0ZXJzIGluIDMyYml0
IGFuZCA2NGJpdCBlbnZpcm9ubWVudHMgd2hlbiB3ZSBwYXNzIEpTVmFsdWVSZWdzLCBpdCBpcyBj
b25mdXNpbmcuCisvLyBUaGVyZWZvcmUsIHdlIGludHJvZHVjZSBhbiBhYnN0cmFjdGlvbiB0aGF0
IERPTUpJVDo6UmVnLCB3aGljaCBpcyBhIHBvbHltb3JwaGljIHJlZ2lzdGVyIGNsYXNzLiBJdCBj
YW4gcmVmZXIgRlBSUmVnLAorLy8gR1BSUmVnLCBhbmQgIkpTVmFsdWVSZWdzIi4gTm90ZSB0aGF0
IGlzR1BSKCkgd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHRhcmdldCBSZWcgaXMgIkpTVmFsdWVS
ZWdzIiBldmVuIGlmIHRoZQorLy8gZW52aXJvbm1lbnQgaXMgNjRiaXQuCitjbGFzcyBSZWcgewor
cHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBHUFIgPSAw
LAorICAgICAgICBGUFIgPSAxLAorICAgICAgICBKU1ZhbHVlID0gMiwKKyAgICB9OworCisgICAg
UmVnKEdQUlJlZyByZWcpCisgICAgICAgIDogbV92YXJpYW50KHJlZykKKyAgICB7CisgICAgfQor
CisgICAgUmVnKEZQUlJlZyByZWcpCisgICAgICAgIDogbV92YXJpYW50KHJlZykKKyAgICB7Cisg
ICAgfQorCisgICAgUmVnKEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgICAgIDogbV92YXJpYW50KHJl
Z3MpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNHUFIoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhbnQuaW5kZXgoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6R1BSKTsgfQorICAg
IGJvb2wgaXNGUFIoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQuaW5kZXgoKSA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oVHlwZTo6RlBSKTsgfQorICAgIGJvb2wgaXNKU1ZhbHVlUmVncygpIGNv
bnN0IHsgcmV0dXJuIG1fdmFyaWFudC5pbmRleCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihU
eXBlOjpKU1ZhbHVlKTsgfQorCisgICAgR1BSUmVnIGdwcigpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaXNHUFIoKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0
PEdQUlJlZz4obV92YXJpYW50KTsKKyAgICB9CisgICAgRlBSUmVnIGZwcigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNGUFIoKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmV4cGVyaW1l
bnRhbDo6Z2V0PEZQUlJlZz4obV92YXJpYW50KTsKKyAgICB9CisgICAgSlNWYWx1ZVJlZ3MganNW
YWx1ZVJlZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzSlNWYWx1ZVJlZ3MoKSk7
CisgICAgICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEpTVmFsdWVSZWdzPihtX3Zh
cmlhbnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFu
dDxHUFJSZWcsIEZQUlJlZywgSlNWYWx1ZVJlZ3M+IG1fdmFyaWFudDsKK307CisKK30gfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCAzY2VmOTk4MzUzNTdjZmNjNGNjOWQ3ZDJiYjE2MmNmOThiMGZmMjhlLi4wYTdjMDUwNmFl
OTE2MDQ3NzUyNTM3YjIzMTFkMWUzZmY3Y2UyNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjUsNiArMjY1LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgorICAgIGNhc2UgQ2hlY2tET006CisgICAgY2FzZSBDYWxsRE9NOgogICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMjVkZDY2N2Y1ZDg1M2ZjOTdl
MzNmNjBmZTkyMWEzMDQxNWNjNTZkNC4uZDdjZDhkYzMzOTFiMDRhZGM2ZWJlODJmOGY3MWEyMjQ4
MTg2ZjMwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgIkRGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXRGdXp6LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludC5oIgorI2lu
Y2x1ZGUgIkRPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAi
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCIKQEAgLTEwNDMsNiArMTA0NSwxMiBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAgICAgY29tcGls
ZVVucmVhY2hhYmxlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja0RP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0RPTSgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2Fz
ZSBMb29wSGludDoKQEAgLTg2NTUsNiArODY2Myw5NCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAKICAgICAgICAgY3Jhc2goKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVDaGVj
a0RPTSgpCisgICAgeworICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgUmVmUHRyPERPTUpJVDo6UGF0Y2hwb2ludD4gZG9tSklUID0gbV9u
b2RlLT5kb21KSVQoKS0+Y2hlY2tET00oKTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOworICAgICAgICBwYXRj
aHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUZQU2NyYXRjaFJlZ2lz
dGVyczsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBtX29yaWdpbjsKKyAgICAgICAgdW5zaWduZWQgb3NyRXhpdEFyZ3Vt
ZW50T2Zmc2V0ID0gcGF0Y2hwb2ludC0+bnVtQ2hpbGRyZW4oKTsKKyAgICAgICAgT1NSRXhpdERl
c2NyaXB0b3IqIGV4aXREZXNjcmlwdG9yID0gYXBwZW5kT1NSRXhpdERlc2NyaXB0b3IoanNWYWx1
ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZENvbGRBbnlzKGJ1aWxkRXhpdEFyZ3VtZW50cyhleGl0RGVzY3JpcHRvciwgb3Jp
Z2luLmZvckV4aXQsIGpzVmFsdWVWYWx1ZShjZWxsKSkpOworCisgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgVmVj
dG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxGUFJSZWc+IGZw
U2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpSZWc+IHJlZ3M7CisKKyAg
ICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMF0uZ3ByKCkpOworCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmdw
U2NyYXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
ZnBTY3JhdGNoLmFwcGVuZChwYXJhbXMuZnBTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAg
IFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBoYW5kbGUgPSBleGl0RGVzY3JpcHRvci0+ZW1pdE9TUkV4
aXRMYXRlcigqc3RhdGUsIEJhZFR5cGUsIG9yaWdpbiwgcGFyYW1zLCBvc3JFeGl0QXJndW1lbnRP
ZmZzZXQpOworCisgICAgICAgICAgICAgICAgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIGRvbUpJ
VFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3Jh
dGNoKSk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2Fz
ZXMgPSBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOworCisgICAg
ICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikg
eworICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZUNhc2VzLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoaGFuZGxlLT5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpm
b3JDaGVjaygpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAg
ICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAxKSk7CisKKyAgICAgICAgUmVmUHRyPERPTUpJVDo6UGF0Y2hwb2ludD4g
ZG9tSklUID0gbV9ub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihjZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzOworICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21K
SVQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIFZlY3RvcjxHUFJS
ZWc+IGdwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7
CisgICAgICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlz
IGNhbiByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCisgICAgICAgICAgICAgICAgLy8gVGVhY2hpbmcg
REZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBjbG9iYmVyIGluZm9ybWF0aW9uIGlzIG5pY2Uu
CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQoSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigp
KSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzFdLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAg
IHJlZ3MuYXBwZW5kKHBhcmFtc1szXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBl
bmQocGFyYW1zWzRdLmdwcigpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAg
ICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOworCisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBlbmQocGFyYW1z
LmZwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAgIERPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyBkb21KSVRQYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOworICAgICAgICAgICAgICAgIGRvbUpJVC0+Z2VuZXJhdG9yKCkt
PnJ1bihqaXQsIGRvbUpJVFBhcmFtcyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNhbGwoKTsKKyAgICAgICAgc2V0SlNWYWx1ZShw
YXRjaHBvaW50KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21wYXJlRXFPYmplY3RPck90aGVy
VG9PYmplY3QoRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA3Njk0OTFhMzY3YmE1
ZmYxNDBiNTM4N2I4YjVmYzJiN2Y4YzZjNjgwLi5jNmQ4YmMzZWRlYzVlMjM0Y2VmZTcyNzhkYmVh
NTg0YTI3YjczZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTEyMDksOSArMTIwOSw5IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgCiAgICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBO
b3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9OwogICAgIGVudW0g
RXhjZXB0aW9uSnVtcFdpZHRoIHsgTm9ybWFsSnVtcFdpZHRoLCBGYXJKdW1wV2lkdGggfTsKLSAg
ICBKdW1wIGVtaXRFeGNlcHRpb25DaGVjaygKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKdW1wIGVt
aXRFeGNlcHRpb25DaGVjaygKICAgICAgICAgRXhjZXB0aW9uQ2hlY2tLaW5kID0gTm9ybWFsRXhj
ZXB0aW9uQ2hlY2ssIEV4Y2VwdGlvbkp1bXBXaWR0aCA9IE5vcm1hbEp1bXBXaWR0aCk7Ci0gICAg
SnVtcCBlbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKdW1wIGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygpOwogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX0NPVU5URVJTKQogICAgIHN0YXRpYyB2b2lkIGVtaXRDb3VudChNYWNyb0Fzc2Vt
YmxlciYgaml0LCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNy
ZW1lbnQgPSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBmMTUwMDBiMzgyMzEyMWM3MzZiMjZi
ZDc3YTQ4ODI0NzlhNWJkYzdlLi5hNjlmZDVkMjcwMTEwMWYwZTExODE3MWNiYTM5MzJiNTU4Yjdm
ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkJ1
dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21w
bGV0aW9uLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiRE9N
SklUUGF0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCIKICNp
bmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTUzNywxMiArNTQxLDEwOCBAQCBjbGFzcyBTaW1wbGVPYmplY3QgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9oaWRkZW5W
YWx1ZTsKIH07CiAKK2NsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBET01KSVRHZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBET01KSVRHZXR0ZXIqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgRE9NSklUR2V0dGVyKiBn
ZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXI+KHZtLmhlYXAs
IHNpemVvZihET01KSVRHZXR0ZXIpKSkgRE9NSklUR2V0dGVyKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGdldHRlcjsK
KyAgICB9CisKKyAgICBpbnQzMl90IHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3ZhbHVlOworICAgIH0KKworICAgIGNsYXNzIERPTUpJVEdldHRlckRPTUpJVCA6IHB1Ymxp
YyBET01KSVQ6OkdldHRlclNldHRlciB7CisgICAgcHVibGljOgorICAgICAgICBET01KSVRHZXR0
ZXJET01KSVQoKQorICAgICAgICAgICAgOiBET01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0
ZXI6OmN1c3RvbUdldHRlciwgbnVsbHB0ciwgRE9NSklUR2V0dGVyOjppbmZvKCkpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9N
KCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhw
YXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlND
T2JqZWN0VHlwZSArIDEpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAg
ICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGRv
bSA9IHBhcmFtc1syXS5ncHIoKTsKKworICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGRvbSwgRE9NSklUR2V0dGVyOjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1
bHRzLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICAgICAgaml0LmJveEludDMyKHJlc3VsdHMu
cGF5bG9hZEdQUigpLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzdGF0aWMgRE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlckdldHRlclNldHRlcigpCisgICAgeworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8RE9NSklUR2V0dGVyRE9NSklUPiBncmFwaDsKKyAgICAgICAgcmV0dXJu
ICZncmFwaC5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmFs
dWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRE9NSklUR2V0dGVyLCBtX3ZhbHVlKTsgfQor
Citwcml2YXRlOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBET01KSVQ6OkdldHRlclNldHRl
ciogZG9tSklUID0gZG9tSklUR2V0dGVyR2V0dGVyU2V0dGVyKCk7CisgICAgICAgIEN1c3RvbUdl
dHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIGRvbUpJVC0+c2V0dGVyKCksIGRvbUpJVCk7CisgICAg
ICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgImN1c3RvbUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFJlYWRPbmx5IHwgQ3VzdG9t
QWNjZXNzb3IpOworICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21HZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBET01KSVRHZXR0ZXIqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fdmFsdWUpKTsKKyAgICB9CisKKyAgICBpbnQz
Ml90IG1fdmFsdWUgeyA0MiB9OworfTsKKwogCiBjb25zdCBDbGFzc0luZm8gRWxlbWVudDo6c19p
bmZvID0geyAiRWxlbWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RWxlbWVudCkgfTsKIGNvbnN0IENsYXNzSW5mbyBNYXNxdWVyYWRlcjo6c19pbmZvID0geyAiTWFz
cXVlcmFkZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hc3F1ZXJh
ZGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJvb3Q6OnNfaW5mbyA9IHsgIlJvb3QiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJvb3QpIH07CiBjb25zdCBDbGFzc0luZm8g
SW1wdXJlR2V0dGVyOjpzX2luZm8gPSB7ICJJbXB1cmVHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEltcHVyZUdldHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBD
dXN0b21HZXR0ZXI6OnNfaW5mbyA9IHsgIkN1c3RvbUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoQ3VzdG9tR2V0dGVyKSB9OworY29uc3QgQ2xhc3NJbmZvIERP
TUpJVEdldHRlcjo6c19pbmZvID0geyAiRE9NSklUR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShET01KSVRHZXR0ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gUnVu
dGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsKIGNvbnN0IENsYXNzSW5mbyBTaW1w
bGVPYmplY3Q6OnNfaW5mbyA9IHsgIlNpbXBsZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoU2ltcGxlT2JqZWN0KSB9Owogc3RhdGljIGJvb2wgdGVzdDI2MkFz
eW5jUGFzc2VkIHsgZmFsc2UgfTsKQEAgLTU3MSw2ICs2NzEsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJy
YXkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVE
T01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0
SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhlY1N0YXRlKik7CkBAIC04NTUsNiArOTU2LDcgQEAgY2xh
c3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIAogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIsIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0
dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVDdXN0b21HZXR0ZXJPYmpl
Y3QiLCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCwgMCk7CisgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01K
SVRHZXR0ZXJPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUJ1aWx0
aW4iLCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4sIDIpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImNyZWF0ZUdsb2JhbE9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0LCAwKTsKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9u
U2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIpOwpAQCAtMTM1OSw2ICsxNDYxLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3Qo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRl
ck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAg
ICBET01KSVRHZXR0ZXIqIHJlc3VsdCA9IERPTUpJVEdldHRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCks
IHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdh
dGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQm94LmggYi9Tb3VyY2UvV1RGL3d0Zi9Cb3guaAppbmRl
eCBhZDlkNWM1NzNmMGJmMDVkMDgzZTNiNjViMjIyNzc1YmEzNDkyMTY3Li5iNjYxMzIxOTE5MTc1
ODA2ODE0YjQ2YTFkMjBhMmQxN2Q5OGFhNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9C
b3guaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3guaApAQCAtNDAsNiArNDAsMTAgQEAgY2xhc3Mg
Qm94IHsKICAgICB7CiAgICAgfQogCisgICAgQm94KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAg
ICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIEJv
eCBjcmVhdGUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTEzNjExODhjY2M0MjFl
MDgzYmNhMjU0NmMzYWQ4OTRiMjY4MGUwOC4uMTIzM2FmNjY0ZTIyZmQ4NjFkMWZmY2M1YWM4Yzk2
OWU5M2ZmMmJmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVj
a0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAq
IHN0cmVzcy9kb21qaXQtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKGFjY2Vzcyk6CisKIDIwMTYtMTAtMDMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEF1dG8tZ2VuZXJhdGUgV0FTTU9wcy5oLCBzaGFyZSB3aXRoIHRl
c3RpbmcgSlNPTiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVy
LXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZiOWUyN2NlOWZhM2Y0MjBjYWI4NQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qcwpAQCAtMCwwICsxLDE5
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0
cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0MSA9IGNyZWF0ZURPTUpJVEdldHRlck9i
amVjdCgpOwordmFyIGRvbWppdDIgPSBjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsKKworZnVu
Y3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciAr
IGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
CisgICAgc2hvdWxkQmUoYWNjZXNzKChpICYgMHgxKSA/IGRvbWppdDEgOiBkb21qaXQyKSwgODQp
OworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQx
LnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFjY2Vzcyhkb21qaXQxKSwgODQpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1n
ZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZiYWRkMDE2MmQ4ZWU4ZWIzOGIzZWJjNzg5ODI1NTI1NzNi
Zjk5NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMK
QEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdCA9IGNyZWF0ZURP
TUpJVEdldHRlck9iamVjdCgpOworCitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJl
dHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwg
ODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21q
aXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFjY2Vzcyhkb21qaXQxKSwgODQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290678</attachid>
            <date>2016-10-04 18:41:04 -0700</date>
            <delta_ts>2016-10-04 18:53:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004183753.patch</filename>
            <type>text/plain</type>
            <size>69242</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi4yMTlhOWM0MmUxNmM4NGJl
MjJjOGIxNzE5NzkwODY2MTQ2OWM0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzggQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlckNsYXNzSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNET01KSVQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Ok9wSW5mb1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphbGxvY2F0
ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0lu
Zm9TbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1
YkNsYXNzT2YpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZv
KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmguCisgICAgICAgIChK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6flBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OnNpemUpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmF0KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zOjpncFNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXM6OmZwU2NyYXRjaCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFt
czo6UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgICogZG9taml0L0RPTUpJVFJlZy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OlJlZyk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6UmVnOjppc0dQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0ZQUik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0pTVmFsdWVSZWdzKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpSZWc6Omdwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjpmcHIpOgorICAgICAg
ICAoSlNDOjpET01KSVQ6OlJlZzo6anNWYWx1ZVJlZ3MpOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZVVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVy
OjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6RE9NSklUR2V0dGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6RE9N
SklUR2V0dGVyRE9NSklUOjpET01KSVRHZXR0ZXJET01KSVQpOgorICAgICAgICAoV1RGOjpET01K
SVRHZXR0ZXI6OmRvbUpJVEdldHRlckdldHRlclNldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJ
VEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmN1c3RvbUdldHRlcik6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0xMC0wNCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OIChyMjA2Nzc4
KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hha3JhQ29yZS90ZXN0L0Vycm9y
L3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGluZwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTlhMWE1Nzdj
MDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3NTY3MjQ1NWI4ZThkZjI1NjVj
YThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0wNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQg
aW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0JveC5oOgorICAgICAg
ICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5Ym9hcmRFdmVudC5rZXkgYXR0
cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDQyNmViZWNiODBlZmRi
ZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLjQ3ZTkxOGIwZmRiOGFiZWJiYWMyNDM4YzU2NDA3NTBj
MzE1MWUxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkyLDYgKzExOTIs
NyBAQAogCQk0M0MzOTJBQjFDM0JFQjA1MDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MzOTJBQTFDM0JF
QjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2NzhGOEUx
QTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY4QzFBMDMxMDA5MDA2QTMwNkQg
LyogQmFzaWNCbG9ja0xvY2F0aW9uLmNwcCAqLzsgfTsKIAkJNTI2NzhGOEYxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOEQxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tM
b2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUyNjc4RjkxMUEwNDE3N0MwMDZBMzA2RCAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY5MDFBMDQx
NzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDc4LDYgKzIwNzksNyBAQAogCQlFMzM2
MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAg
LyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3
QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FC
RDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9
OworCQlFMzNEMTc2MjFEQTQ2RkM5MDBCNDdGQkUgLyogRE9NSklUUmVnLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0FFNDMyRjFEQTQ2RjhEMDAyMEMw
MDUgLyogRE9NSklUUmVnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzRThEMUMxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
RThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovOyB9Owog
CQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTND
MzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNFOEQyMDFCOTAxM0RFMDAzNDZCNTIgLyog
TmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0U4RDFFMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuY3BwICovOyB9OwpAQCAtMjE4Myw3ICsyMTg1LDYgQEAKIAkJRkVEOTRGMkYxNzFF
M0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1
MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhC
MCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhE
NDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAg
LTMzNTMsNiArMzM1NCw3IEBACiAJCTE0RjcyNTYzMTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFu
ZGxlT3duZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha0hh
bmRsZU93bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGNzI1NjQxNEVF
MjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRGOTc0NDYxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwUm9vdFZpc2l0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg3OTUx
MDYxNEM1NDBGRkI1NjFDMTI0IC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ1JlZlByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDRjczNzYxNzFDQTZGQjAwQzlC
QjFFIC8qIFdlYWsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vh
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzk3LDExICs0Mzk5LDEzIEBA
CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXpl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzkzOUU0MDFEQTQ2QTJEMDA5QUUz
MjUgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5RDlEODQxRDM5MDAwNjAwNjY3
MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3Jk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYx
NyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNBRTQzMkYxREE0NkY4RDAwMjBDMDA1IC8qIERPTUpJVFJlZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRSZWcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyNiw3ICs0NTMwLDYgQEAKIAkJRkVGMDQw
NTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFRjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBh
dGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwpAQCAtNzE4Myw2ICs3MTg2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUzRkY3NTJGMUQ5
Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlFM0MwOEUzQjFE
QTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovLAorCQkJCUUzOTM5RTQwMURB
NDZBMkQwMDlBRTMyNSAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8sCisJCQkJRTNBRTQz
MkYxREE0NkY4RDAwMjBDMDA1IC8qIERPTUpJVFJlZy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBk
b21qaXQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzI3Nyw2ICs3MjgyLDcgQEAK
IAkJCQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0
YW50UG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3IC8q
IEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjExMUQxNjYyMjAw
NTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QxNzYyMURBNDZG
QzkwMEI0N0ZCRSAvKiBET01KSVRSZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MEU3MTlG
NUIxMDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NEZGMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCmluZGV4IGMwNDc0OGY2YTM4NzM1MGEwMzEwMzFlM2Jj
MWIwNTI5MDViZTljYTkuLmJlYzQ3ODY1OGJkZTljZjI5N2Q5MGUyY2VhYjg2ZTEyMmExNzNhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKQEAgLTc4LDYgKzc4LDE1IEBAIHN0
cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0
aWMgRWZmZWN0cyBmb3JDaGVjaygpCisgICAgeworICAgICAgICBFZmZlY3RzIHJlc3VsdDsKKyAg
ICAgICAgcmVzdWx0LmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICAvLyBUaGUgcHJvZ3Jh
bSBjb3VsZCByZWFkIGFueXRoaW5nIGFmdGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9uIHVzIHRvIGRl
Y2xhcmUgdGhpcy4KKyAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdy
aXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CmluZGV4IDE2MWFjZWQ3MmJhNjZiMTgxN2E1ZjNhNDc5YmJiOTMzMTJkY2FjODkuLmEwODdmNTFl
Y2UxZGQyNWUxYzIyNDM2YTgzNzAzNzM3ODcwMzg0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5jcHAKQEAgLTYxNCw5ICs2MTQsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkg
Y29uc3QKICAgICBjYXNlIENoZWNrU3ViOgogICAgIGNhc2UgQ2hlY2tNdWw6CiAgICAgY2FzZSBD
aGVjazoKLSAgICAgICAgcmVzdWx0LmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAvLyBU
aGUgcHJvZ3JhbSBjb3VsZCByZWFkIGFueXRoaW5nIGFmdGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9u
IHVzIHRvIGRlY2xhcmUgdGhpcy4KLSAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0
b3AoKTsKKyAgICAgICAgcmVzdWx0ID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNhc2UgU2V0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggNzE5ZDhmMjcyODNm
NWQxMjNjZTU3NzE1NDVlNDY5YmY4MWFmZjIyNy4uMjQyNTI5MmFmZjYwNTlhYWE3OGNiODQ5N2Qx
ODZiOWI1MDQyZTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCkBAIC0zNTMsNiArMzUzLDEyIEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlIHR5cGUpCiAKIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykKIHsKKyAgICBpZiAoY2xhc3NJbmZvID09IEpTU3RyaW5nOjppbmZvKCkpCisgICAgICAg
IHJldHVybiBTcGVjU3RyaW5nOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBTeW1ib2w6OmluZm8o
KSkKKyAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CisKICAgICBpZiAoY2xhc3NJbmZvID09IEpT
RmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKICAg
ICAKQEAgLTM4NSw2ICszOTEsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgCiAgICAgaWYgKGlzVHlwZWRW
aWV3KGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkKICAgICAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uRnJvbVR5cGVkQXJyYXlUeXBlKGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VU
eXBlKTsKKworICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU0FycmF5OjppbmZvKCkp
KQorICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICAKICAgICBpZiAoY2xhc3NJ
bmZvLT5pc1N1YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBTcGVj
T2JqZWN0T3RoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlci5oCmluZGV4IDU5NzI4MTY2MmU4YWQxZmZhYTg1NTYyMmM3MDU5YTQ3NGIy
ZjQ0NmUuLmJjZjZkN2U3MzFmY2Q3ZTA1MzUzYWZkNjliOGI5YTQzOTNmYmE4M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCkBA
IC0xMzQsMTAgKzEzNCwxNyBAQCBjbGFzcyBBYnN0cmFjdEludGVycHJldGVyIHsKICAgICAgICAg
cmV0dXJuIGZpbHRlckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUpOwogICAgIH0KICAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xh
c3NJbmZvKFQgbm9kZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCisgICAgeworICAgICAg
ICByZXR1cm4gZmlsdGVyQ2xhc3NJbmZvKGZvck5vZGUobm9kZSksIGNsYXNzSW5mbyk7CisgICAg
fQorCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIGNvbnN0IFN0
cnVjdHVyZVNldCYsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJh
eU1vZGVzKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3Bl
Y3VsYXRlZFR5cGUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFj
dFZhbHVlJiwgRnJvemVuVmFsdWUpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJ
bmZvKEFic3RyYWN0VmFsdWUmLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAKICAgICBQaGlDaGls
ZHJlbiogcGhpQ2hpbGRyZW4oKSB7IHJldHVybiBtX3BoaUNoaWxkcmVuLmdldCgpOyB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggY2U2YmVmOWFkM2ZkMDU3OWZlNWFhOWUwMWE4NGU3M2Jl
NjhmNmQ0YS4uOWRmYzYzZGM2OGExOGQxNDRkY2M0ZTU3N2Q3ZjE0NjdiZTZhN2M2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJE
T01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIyNjMsNiAr
MjI2NCwyOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICAgICAgZm9yTm9kZShub2RlKS5jbGVhcigpOyAvLyBUaGUgcmVz
dWx0IGlzIG5vdCBhIEpTIHZhbHVlLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIENoZWNrRE9N
OiB7CisgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOworICAgICAgICBpZiAoY29uc3RhbnQpIHsKKyAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc0NlbGwoKSAmJiBjb25zdGFudC5hc0NlbGwoKS0+aW5oZXJpdHMobm9kZS0+Y2xhc3NJbmZv
KCkpKSB7CisgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoY29uc3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNzSW5mbygpKSkKKyAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisKKyAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZh
bHVlLCBub2RlLT5jbGFzc0luZm8oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IENhbGxET006CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUp
OwpAQCAtMzA1MSw2ICszMDc0LDE2IEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlckJ5VmFsdWUoCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgorRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKAorICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBpZiAodmFs
dWUuZmlsdGVyQ2xhc3NJbmZvKG1fZ3JhcGgsIGNsYXNzSW5mbykgPT0gRmlsdHJhdGlvbk9LKQor
ICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOworICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CisgICAgcmV0dXJuIENvbnRyYWRpY3Rpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFi
c3RyYWN0U3RhdGVUeXBlPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZURvdWJsZVVuYXJ5T3BFZmZlY3RzKE5vZGUqIG5vZGUsIGRvdWJsZSgqZXF1
aXZhbGVudEZ1bmN0aW9uKShkb3VibGUpKQogewogICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RWYWx1ZS5jcHAKaW5kZXggYzNlZmRhY2VlNzhkNmFjZWVmNjVhOTgzMjg0MWJk
NmY0MWJjYTQ3Zi4uNjcyYjIyODE2NzE1MmQ4ZTMxMjdmNDU4N2VlMzQ3Y2RmMTgzOGZlZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCkBAIC0z
MDYsNiArMzA2LDIzIEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQXJy
YXlNb2RlcyhBcnJheU1vZGVzIGFycmF5TW9kZXMpCiAgICAgcmV0dXJuIG5vcm1hbGl6ZUNsYXJp
dHkoKTsKIH0KIAorRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0lu
Zm8oR3JhcGgmIGdyYXBoLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBBU1NF
UlQoYXJyYXlNb2Rlcyk7CisKKyAgICBpZiAoaXNDbGVhcigpKQorICAgICAgICByZXR1cm4gRmls
dHJhdGlvbk9LOworCisgICAgbV90eXBlICY9IHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjbGFz
c0luZm8pOworICAgIG1fc3RydWN0dXJlLmZpbHRlckNsYXNzSW5mbyhjbGFzc0luZm8pOworCisg
ICAgbV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisKKyAgICBmaWx0ZXJBcnJheU1vZGVzQnlU
eXBlKCk7CisgICAgZmlsdGVyVmFsdWVCeVR5cGUoKTsKKyAgICByZXR1cm4gbm9ybWFsaXplQ2xh
cml0eShncmFwaCk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVy
KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKChtX3R5cGUgJiB0eXBlKSA9PSBtX3R5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCmluZGV4
IDMyZWIwZjE5YzVjOTFmNjc3MThlNzNkMGE3YzM4ZTE5ZmNmMjgzZWYuLjhhOTEwMTQwNzU2M2Fi
MTNlYTAwZDVjNmJjZTg4NGM1OTI4MDMxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCkBAIC0zMDcsNiArMzA3LDcgQEAgc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlKTsKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoY29uc3QgRnJvemVuVmFsdWUmIHZhbHVl
KTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihjb25zdCBBYnN0cmFjdFZhbHVlJik7Cisg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oR3JhcGgmLCBjb25zdCBDbGFzc0lu
Zm8qKTsKIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgSW5mZXJy
ZWRUeXBlOjpEZXNjcmlwdG9yJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDBiNWZiOTVkOTU3YjEyYTQzODFjZmZiOWI2
YzJhNGViMzJhYjNhNGQuLjk4YmEzN2I2ZThlOTI4MDRmZTNiYTI2MWQ1NDE5ZmNjOGUyY2UxYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC0yMTksNiArMjE5LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIGJvb2wgaGFu
ZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxh
dGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICBOb2RlKiBo
YW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yJiwgTm9kZSogdmFsdWUpOwog
ICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNldCwgY29uc3QgSW5mZXJyZWRU
eXBlOjpEZXNjcmlwdG9yJiwgTm9kZVR5cGUgPSBHZXRCeU9mZnNldCk7CisgICAgYm9vbCBoYW5k
bGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50Jiwg
Tm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogCiAgICAgLy8gQ3Jl
YXRlIGEgcHJlc2VuY2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gYmFzZWQgb24gc29tZSBrbm93
biBvZmZzZXQgYW5kIHN0cnVjdHVyZSBzZXQuIERvZXMgbm90CiAgICAgLy8gY2hlY2sgdGhlIHZh
bGlkaXR5IG9mIHRoZSBjb25kaXRpb24sIGJ1dCBpdCBtYXkgcmV0dXJuIGEgbnVsbCBvbmUgaWYg
aXQgZW5jb3VudGVycyBhIGNvbnRyYWRpY3Rpb24uCkBAIC0yNjU5LDYgKzI2NjAsMjAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9w
ZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBpZiAoIXZhcmlhbnQuZG9tSklUKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQg
PSB2YXJpYW50LmRvbUpJVCgpOworICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhkb21K
SVQpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CisgICAgTm9k
ZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFwaChHZXRHbG9iYWxPYmplY3QsIHRoaXNOb2RlKTsK
KyAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhp
c05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KKyAgICBhZGRWYXJB
cmdDaGlsZCh0aGlzTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9wSW5mbyhkb21KSVQpLCBPcElu
Zm8ocHJlZGljdGlvbikpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlD
b25zdHJ1Y3RvcigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKQEAgLTMzMjQsNiArMzMzOSwxNCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAKICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NU
eXBlOjpHZXQgfHwgIXZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSk7CisKKyAgICBpZiAodmFyaWFu
dC5kb21KSVQoKSkgeworICAgICAgICBpZiAoaGFuZGxlRE9NSklUR2V0dGVyKGRlc3RpbmF0aW9u
T3BlcmFuZCwgdmFyaWFudCwgYmFzZSwgcHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgbG9hZGVkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCiAgICAgaWYgKCF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkgJiYgdmFyaWFu
dC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYykgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksIGxvYWRlZFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAxZTU1NWZlMWFm
ZjJmZTMxYWU4OTVjYWY1OThlNmZjOTNlZTNhZjhkLi41MDQzYzRkMTQwZjU0MmVlZTJhNTQyYjRl
MDkzODRlMDI3ODMxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtODg1LDYgKzg4NSwxNSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKEJ1dHRlcmZseUxvYywgSlNPYmplY3RfYnV0dGVyZmx5LCBub2Rl
LT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2Fz
ZSBDaGVja0RPTToKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5jbGFzc0luZm8o
KSkpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIHJlYWQo
V29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2Fz
ZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgIHJlYWQo
SlNDZWxsX3N0cnVjdHVyZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNWQ2MzI5ZDI4ZjVmZjNiZjY1YTFj
ZmNhNDdhYTY3NzQxNjkzNWUyZi4uZDliYzdlNzA5YTExY2Q0ZTNkMTliZWI1ZWI4ZTIwMDFiZjNh
MGYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE1OCw2ICsxNTgsMjggQEAgY2xhc3MgQ29uc3RhbnRGb2xk
aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBDaGVja0RPTTog
eworICAgICAgICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSAmJiBjb25zdGFudC5hc0Nl
bGwoKS0+aW5oZXJpdHMobm9kZS0+Y2xhc3NJbmZvKCkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWlu
YXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YkNsYXNzT2Yobm9kZS0+Y2xhc3NJ
bmZvKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRl
eEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5
U3RvcmFnZTogewogICAgICAgICAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9n
cmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggMzE4NTU5NmNmOTMzY2UwODk2MTJiYzlhNDU3ZTFiMmQ1NzQ2Yzc1OS4uNTcy
NmNiNWU2ZTdhNDI2N2JlNzJlNjdkY2EzN2NiOTdhN2MwMWNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNh
c2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKKyAgICBjYXNlIENhbGxE
T006CisgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBH
ZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGZkNmRkNTQ0ZTgwMjQ5ZDgyZGIxMDJhMDY2NDljNjkw
NjU5YTg5NjkuLjQxNzg3OThmY2RiNDM5YzgzYjdkNDA5ZmY0N2VjZDI1N2E1NmIxNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY5MCw2ICsx
NjkwLDE1IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7IC8vIEdsb2JhbE9iamVjdC4KKyAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7IC8vIERP
TS4KKyAgICAgICAgICAgIGJyZWFrOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAv
LyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdl
dHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1
bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggOTlhODJjOWNkOTZhYTc4
YzNiMDQwZWM1NGVkOWVlMTJmMDFkZTgyNi4uNDIzN2E1MjYyNDk5MjFkMDNmY2JhNmY4OGJiMDY1
NmE3ZTZiMTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE0NDYsNiAr
MTQ0Niw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhw
OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNr
ZXQ6CisgICAgICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxMiw3ICsyMzEz
LDI4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNTRVJUKGhhc0Jhc2ljQmxvY2tMb2NhdGlv
bigpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEJhc2ljQmxvY2tMb2NhdGlvbio+KCk7
CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNET01KSVQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tET00gfHwgb3AoKSA9PSBDYWxsRE9NOworICAgIH0KKwor
ICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGhhc0RPTUpJVCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6R2V0dGVy
U2V0dGVyKj4oKTsKKyAgICB9CisKKyAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0RPTTsKKyAgICB9CisKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFz
PGNvbnN0IENsYXNzSW5mbyo+KCk7CisgICAgfQorCiAgICAgTm9kZSogcmVwbGFjZW1lbnQoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWlzYy5yZXBsYWNlbWVudDsKQEAgLTIzOTIs
NiArMjQxNCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICB1LmludDY0ID0gMDsKICAg
ICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZv
V3JhcHBlcihjb25zdCB2b2lkKiBjb25zdFBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHUuaW50NjQgPSAwOworICAgICAgICAgICAgdS5jb25zdFBvaW50ZXIgPSBjb25zdFBvaW50ZXI7
CisgICAgICAgIH0KICAgICAgICAgT3BJbmZvV3JhcHBlciYgb3BlcmF0b3I9KHVpbnQzMl90IGlu
dDMyKQogICAgICAgICB7CiAgICAgICAgICAgICB1LmludDY0ID0gMDsKQEAgLTI0MTUsMTIgKzI0
NDIsMjMgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdS5wb2ludGVyID0gcG9pbnRlcjsK
ICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFw
cGVyJiBvcGVyYXRvcj0oY29uc3Qgdm9pZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQ
b2ludGVyOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25z
dCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlLCBU
Pjo6dHlwZQorICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlICYmICFzdGQ6OmlzX2Nv
bnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5
cGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHUucG9pbnRl
cik7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIEFM
V0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUgJiYgc3RkOjppc19jb25zdDx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LmNvbnN0UG9pbnRlcik7CisgICAgICAgIH0K
KyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0
byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSA0LCBUPjo6dHlwZQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gdS5pbnQzMjsKQEAgLTI0MzQsNiArMjQ3Miw3IEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgICAgIHVpbnQzMl90IGludDMyOwogICAgICAgICAgICAgdWludDY0X3QgaW50NjQ7
CiAgICAgICAgICAgICB2b2lkKiBwb2ludGVyOworICAgICAgICAgICAgY29uc3Qgdm9pZCogY29u
c3RQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgfTsKICAgICBPcEluZm9XcmFwcGVyIG1fb3BJ
bmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ1YWRhODli
YzEzOGE2NTA0MGFlZWE5ZDJmYTdkYTNmMDYwZDMxZTguLjljM2ZiOTBlYTA2YjBjZjkwNThlNTE2
NjBlNWI1OGYyNWY3YzI2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKQEAgLTM5Niw2ICszOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldE1hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTG9hZEZy
b21KU01hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oSXNOb25FbXB0eU1hcEJ1
Y2tldCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBcCisgICAgLyogTm9kZXMgZm9yIERPTSBK
SVQgKi9cCisgICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKIAogLy8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2lu
ZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCiAvLyBhbmQgaXMgdXNlZCBieSB0aGUgc3Vic2VxdWVu
dCBlbnVtIHRvIGZpbGwgb3V0IHRoZSBpZCAoYXMgYWNjZXNzZWQgdmlhIHRoZSBOb2RlSWRNYXNr
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmluZGV4IGQ0N2E5NzA5YzI5YjUy
ZDNiNWQ4ZWY0ZjMzZTA5YjVkN2U1Y2JkZTcuLjU3ZjMzMjk3ZWU3NGUxYjdlNGJhNWY4OTM4Njdm
OWVjNDcwNmQxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtNDMs
NiArNDMsNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8odWludHB0cl90
IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkgeyB9CiAjZW5k
aWYKICAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQorICAg
IGV4cGxpY2l0IE9wSW5mbyhjb25zdCB2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSkgeyB9CiAgICAg
dWludDY0X3QgbV92YWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDU5NDE4
YWI3MTIxZjcwMThhOWRjMjMzYzcwZTBmY2JlZTdlZDQzYi4uZWE5MjE1NjI1ZDFlOWZmMDJkZTA3
Y2U3MDk2NTNjYzk1N2E0YzU4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTY5OSw3ICs2
OTksOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1l
bnRzOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6Ci0gICAgICAgIGNhc2UgVG9O
dW1iZXI6IHsKKyAgICAgICAgY2FzZSBUb051bWJlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTgxOSw2ICs4MjAsOSBA
QCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQ2hlY2tET006CisgICAg
ICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3Rvcjogewog
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBh
YmU2NzJhODk0ZmNlZjRjMWQ4YWMwMzkxZWFmYWFkNmZjN2NhOWY4Li5jN2UxYjZiNzNkYjgxNzEw
YTI4YTg4ZGIzMWQ1MmRmNmVlMzBlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE4LDYgKzIxOCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNl
IEdldEJ1dHRlcmZseToKKyAgICBjYXNlIENhbGxET006CisgICAgY2FzZSBDaGVja0RPTToKICAg
ICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5
VG9TdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRo
R2VuZXJhdG9yLmgKaW5kZXggNjA4MWM1N2IyODYxOGU0M2Q5ZWEyOGQ1NTYxMDE1ODJhNjJjNThj
YS4uMDZiMmE5YmQwNWM3M2MzOGNjZTE2NGMwNzBhZjkzYjliODQ4MGFkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMzQsNyAr
MzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIFNsb3dQ
YXRoR2VuZXJhdG9yIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNsb3dQYXRoR2VuZXJhdG9y
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTbG93UGF0aEdl
bmVyYXRvcihTcGVjdWxhdGl2ZUpJVCogaml0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2YjY0NDU0NDFiMTE1YjJmMjdkNTlhOTYz
ZGJlNTgwZGRmZjNlMGRlLi41MTEwNWQ0ZDMzMjI4ZjY0OWQxMjNhOTkzMjljOGY2YTZkNTBjYmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVk
ZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
RkdTbG93UGF0aEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5k
R2VuZXJhdG9yLmgiCkBAIC03MDU3LDYgKzcwNTksNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ1dHRlcmZseShOb2RlKiBub2RlKQogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAorc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNG
b3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjxHUFJUZW1wb3Jhcnk+JiBn
cEhvbGRlcnMsIFZlY3RvcjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRlcnMsIFZlY3RvcjxHUFJSZWc+
JiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gsIERPTUpJVDo6UGF0Y2hwb2lu
dCYgcGF0Y2hwb2ludCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2lu
dC5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cG9yYXJ5KGppdCk7CisgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQodGVtcG9yYXJ5LmdwcigpKTsK
KyAgICAgICAgZ3BIb2xkZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBvcmFyeSkpOworICAgIH0KKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUdQU2NyYXRjaFJlZ2lz
dGVyczsgKytpKSB7CisgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAg
ICAgZnBTY3JhdGNoLmFwcGVuZCh0ZW1wb3JhcnkuZnByKCkpOworICAgICAgICBmcEhvbGRlcnMu
YXBwZW5kKFdURk1vdmUodGVtcG9yYXJ5KSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQoreworICAgIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworICAgIEFTU0VS
VChwYXRjaHBvaW50KTsKKworICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0
b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisg
ICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlzIGNh
biByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCisgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJ
VDo6UGF0Y2hwb2ludCBjbG9iYmVyIGluZm9ybWF0aW9uIGlzIG5pY2UuCisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworCisgICAgcmVncy5hcHBlbmQocmVzdWx0LnJlZ3MoKSk7CisgICAgcmVncy5h
cHBlbmQoZ2xvYmFsT2JqZWN0LmdwcigpKTsKKyAgICByZWdzLmFwcGVuZChiYXNlLmdwcigpKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJlZ3MuYXBwZW5kKHN0YXRpY19jYXN0PEdQUlJlZz4o
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8
R1BSUmVnPihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyNlbmRpZgorCisgICAg
VmVjdG9yPEdQUlRlbXBvcmFyeT4gZ3BUZW1wcmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jh
cnk+IGZwVGVtcHJhcmllczsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNo
cG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3Jh
dGNoLCBwYXRjaHBvaW50LmdldCgpKTsKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgcGFy
YW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gp
KTsKKyAgICBwYXRjaHBvaW50LT5nZW5lcmF0b3IoKS0+cnVuKG1faml0LCBwYXJhbXMpOworICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0LnJlZ3MoKSwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja0RPTShOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBXZSBj
YW4gYWRkIHRoZSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0IGlubGluZXMganNEeW5hbWlj
Q2FzdCB0aGluZ3MgaGVyZS4KKyAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50
ID0gbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisKKyAgICBWZWN0b3I8R1BSUmVnPiBncFNj
cmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgIFZlY3RvcjxET01KSVQ6
OlJlZz4gcmVnczsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIHJlZ3MuYXBwZW5kKGJhc2UuZ3ByKCkpOworCisgICAgVmVjdG9yPEdQ
UlRlbXBvcmFyeT4gZ3BUZW1wcmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVt
cHJhcmllczsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhp
cywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRj
aHBvaW50LmdldCgpKTsKKworICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RG
TW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gcGF0Y2hwb2ludC0+Z2VuZXJh
dG9yKCktPnJ1bihtX2ppdCwgcGFyYW1zKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGJhc2UuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgZmFpbHVyZUNhc2VzKTsK
KyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjp0ZW1wb3Jh
cnlSZWdpc3RlckZvclB1dEJ5VmFsKEdQUlRlbXBvcmFyeSYgdGVtcG9yYXJ5LCBBcnJheU1vZGUg
YXJyYXlNb2RlKQogewogICAgIGlmICghcHV0QnlWYWxXaWxsTmVlZEV4dHJhUmVnaXN0ZXIoYXJy
YXlNb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAppbmRleCAxZGFiOTIxNWMwYTFhY2E0NDM1NjM3YjEzMjYxYWFhNzJjNTYyMmVmLi5hN2RlYjI2
YmNlOTFhOTZjN2Y2MzQ4OTNhMGI4ZDVhMWU0YjNhNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yNTM4LDYgKzI1MzgsOCBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlQ2FsbERPTShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSopOwogICAg
IAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9wZXJh
bmRUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9wZXJh
bmRUeXBlLCB0eXBlbmFtZSBUYWdUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTg4NDYzODU4MTc5ZDkwYjlj
YjY1NDFlNDZkM2RlYjkyYTAyYjBmYS4uY2JmNmUyNDA5ZWZiNzA1ZmFmNGNkMWUxZjBhZTZhMDgw
YzIwYzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01NDMwLDYgKzU0MzAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGNvbXBpbGVDaGVja0RPTShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICB1bnJlYWNo
YWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5NmE3ZGFmMGJmM2I4ZjM5OGEwYjNj
YTU4NTMyNjU5MGUwM2NhODBkLi5iMzdhMjQ3ZTZlMjQzY2FjMjBmYjk2NTgyNWJjMTgzMjdlMzA3
NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKQEAgLTU1NjEsNiArNTU2MSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVD
YWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tET006CisgICAg
ICAgIGNvbXBpbGVDaGVja0RPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUo
RlRMX0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5jcHAKaW5kZXggN2E4MjNlZTg2Y2E5M2FkYWI0NjMzNGQ1ZGVmMjI2MTZlNzcyYjAzOC4u
ODhkNTc3NTY5YWY5YjAzZGM5OGQ0Y2NjNGI3ZjdjNGE3MTI4MjMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3Bw
CkBAIC0yNTgsNiArMjU4LDE1IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVy
U2xvdyhTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgICAgICB9KTsKIH0KIAordm9pZCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKQoreworICAgIEFTU0VSVCghaXNUb3AoKSk7CisgICAgbV9zZXQuZ2VuZXJpY0ZpbHRl
cigKKyAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgcmV0
dXJuIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pOworICAg
ICAgICB9KTsKK30KKwogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQpAQCAtMzE5
LDYgKzMyOCwxOSBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNvbnN0
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBvdmVybGFw
cyhvdGhlci5tX3NldCk7CiB9CiAKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJD
bGFzc09mKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAoreworICAgIGlmIChpc0lu
ZmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE5vdGUgdGFodCB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RydWN0dXJlIHNldCBpcyBlbXB0eS4KKyAg
ICBmb3IgKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlIDogbV9zZXQpIHsKKyAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlJiBvdGhlcikgY29uc3QKIHsKICAgICBBU1NFUlQobV9zZXQubV9wb2ludGVyICE9IG90
aGVyLm1fc2V0Lm1fcG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCmluZGV4IGNhOTRhNzliNzQ3YmQ5MTI2OGIx
MmNlMmQwODQyMTc4MGY3NjI5NjMuLjUxZjc5MzdkNTUxODFmNWZmNmM1NmNmNDAwZWU1OTQ1YTM5
MjgxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZS5oCkBAIC0xNjMsNiArMTYzLDEyIEBAIGNsYXNzIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSkKICAgICAg
ICAgICAgIGZpbHRlclNsb3codHlwZSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGZpbHRlckNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICB7CisgICAg
ICAgIGlmIChpc05laXRoZXJDbGVhck5vclRvcCgpKQorICAgICAgICAgICAgZmlsdGVyQ2xhc3NJ
bmZvU2xvdyhjbGFzc0luZm8pOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAg
ICB7CkBAIC0yMzEsNiArMjM3LDggQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsK
ICAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBj
b25zdDsKKworICAgIGJvb2wgaXNTdWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0Owog
ICAgIAogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2Vz
JikgY29uc3Q7CiAgICAgCkBAIC0yNDEsNiArMjQ5LDcgQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsb2JiZXJlZFN1cHJlbWFjeVRo
cmVzaG9sZCA9IDI7CiAgICAgCiAgICAgdm9pZCBmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5
cGUpOworICAgIHZvaWQgZmlsdGVyQ2xhc3NJbmZvU2xvdyhjb25zdCBDbGFzc0luZm8qKTsKICAg
ICBib29sIG1lcmdlU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcik7CiAg
ICAgCiAgICAgYm9vbCBlcXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90
aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRQYXRjaHBvaW50UGFyYW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzODYzOTAwOTYwYTY4ZmRlMDhjZjRi
YjA2MWQyNDc0NWY3MWJjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJE
T01KSVRSZWcuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIFBhdGNocG9pbnRQYXJhbXMgeworV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGF0Y2hwb2ludFBhcmFtcyk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGF0
Y2hwb2ludFBhcmFtcygpIHsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVncy5zaXplKCk7IH0KKyAgICBjb25zdCBSZWcmIGF0KHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX3JlZ3NbaW5kZXhdOyB9CisgICAgY29uc3QgUmVnJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIEdQUlJlZyBn
cFNjcmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZ3BTY3JhdGNoW2luZGV4
XTsgfQorICAgIEZQUlJlZyBmcFNjcmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1fZnBTY3JhdGNoW2luZGV4XTsgfQorCisgICAgUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8UmVn
PiYmIHJlZ3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYmIGZw
U2NyYXRjaCkKKyAgICAgICAgOiBtX3JlZ3MoV1RGTW92ZShyZWdzKSkKKyAgICAgICAgLCBtX2dw
U2NyYXRjaChXVEZNb3ZlKGdwU2NyYXRjaCkpCisgICAgICAgICwgbV9mcFNjcmF0Y2goV1RGTW92
ZShmcFNjcmF0Y2gpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBWZWN0b3I8UmVn
PiBtX3JlZ3M7CisgICAgVmVjdG9yPEdQUlJlZz4gbV9ncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQ
UlJlZz4gbV9mcFNjcmF0Y2g7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFJlZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRSZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIzODY2MzU2ZWNmMDdlYjI5MzVi
NjRiZjMwZjM2NzdkYjUzZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRSZWcuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJS
ZWcuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCisvLyBJdCBpcyBxdWl0ZSB1bmZvcnR1
bmF0ZSB0aGF0IDMyIGJpdCBlbnZpcm9ubWVudCBleGlzdHMgb24gREZHISBUaGlzIG1lYW5zIHRo
YXQgSlNWYWx1ZVJlZ3MgY29udGFpbnMgMiByZWdpc3RlcnMKKy8vIGluIHN1Y2ggYW4gZW52aXJv
bm1lbnQuIElmIHdlIHVzZSBHUFJSZWcgYW5kIEZQUlJlZyBpbiBET01KSVRQYXRjaHBvaW50UGFy
YW1zLCBET01KSVRQYXRjaHBvaW50UGFyYW1zIG1heSBjb250YWluCisvLyBkaWZmZXJlbnQgbnVt
YmVyIG9mIHJlZ2lzdGVycyBpbiAzMmJpdCBhbmQgNjRiaXQgZW52aXJvbm1lbnRzIHdoZW4gd2Ug
cGFzcyBKU1ZhbHVlUmVncywgaXQgaXMgY29uZnVzaW5nLgorLy8gVGhlcmVmb3JlLCB3ZSBpbnRy
b2R1Y2UgYW4gYWJzdHJhY3Rpb24gdGhhdCBET01KSVQ6OlJlZywgd2hpY2ggaXMgYSBwb2x5bW9y
cGhpYyByZWdpc3RlciBjbGFzcy4gSXQgY2FuIHJlZmVyIEZQUlJlZywKKy8vIEdQUlJlZywgYW5k
ICJKU1ZhbHVlUmVncyIuIE5vdGUgdGhhdCBpc0dQUigpIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRo
ZSB0YXJnZXQgUmVnIGlzICJKU1ZhbHVlUmVncyIgZXZlbiBpZiB0aGUKKy8vIGVudmlyb25tZW50
IGlzIDY0Yml0LgorY2xhc3MgUmVnIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1
aW50OF90IHsKKyAgICAgICAgR1BSID0gMCwKKyAgICAgICAgRlBSID0gMSwKKyAgICAgICAgSlNW
YWx1ZSA9IDIsCisgICAgfTsKKworICAgIFJlZyhHUFJSZWcgcmVnKQorICAgICAgICA6IG1fdmFy
aWFudChyZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhGUFJSZWcgcmVnKQorICAgICAgICA6
IG1fdmFyaWFudChyZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhKU1ZhbHVlUmVncyByZWdz
KQorICAgICAgICA6IG1fdmFyaWFudChyZWdzKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlz
R1BSKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFR5cGU6OkdQUik7IH0KKyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4gbV92
YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkZQUik7IH0KKyAg
ICBib29sIGlzSlNWYWx1ZVJlZ3MoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQuaW5kZXgoKSA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6SlNWYWx1ZSk7IH0KKworICAgIEdQUlJlZyBn
cHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzR1BSKCkpOworICAgICAgICByZXR1
cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxHUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQorICAg
IEZQUlJlZyBmcHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRlBSKCkpOworICAg
ICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxGUFJSZWc+KG1fdmFyaWFudCk7Cisg
ICAgfQorICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc0pTVmFsdWVSZWdzKCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50
YWw6OmdldDxKU1ZhbHVlUmVncz4obV92YXJpYW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
c3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8R1BSUmVnLCBGUFJSZWcsIEpTVmFsdWVSZWdzPiBt
X3ZhcmlhbnQ7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggM2NlZjk5ODM1MzU3Y2ZjYzRjYzlkN2QyYmIx
NjJjZjk4YjBmZjI4ZS4uMGE3YzA1MDZhZTkxNjA0Nzc1MjUzN2IyMzExZDFlM2ZmN2NlMjc2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjY1LDYgKzI2NSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3Bl
cnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICBjYXNlIENoZWNrRE9N
OgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBi
cmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDI1ZGQ2NjdmNWQ4NTNmYzk3ZTMzZjYwZmU5MjFhMzA0MTVjYzU2ZDQuLmQ3Y2Q4ZGMz
MzkxYjA0YWRjNmViZTgyZjhmNzFhMjI0ODE4NmYzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRl
ICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0
eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0RnV6ei5oIgorI2luY2x1ZGUg
IkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgi
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5LmgiCkBAIC0xMDQz
LDYgKzEwNDUsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBVbnJlYWNo
YWJsZToKICAgICAgICAgICAgIGNvbXBpbGVVbnJlYWNoYWJsZSgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgICAgICBjb21waWxlQ2hlY2tET00o
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAg
ICBjb21waWxlQ2FsbERPTSgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQ
aGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC04NjU1LDYgKzg2NjMsOTQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIGNyYXNoKCk7CiAgICAg
fQorCisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNl
bGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFJlZlB0cjxET01KSVQ6
OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lk
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0g
ZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9vcmlnaW47CisgICAg
ICAgIHVuc2lnbmVkIG9zckV4aXRBcmd1bWVudE9mZnNldCA9IHBhdGNocG9pbnQtPm51bUNoaWxk
cmVuKCk7CisgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yKiBleGl0RGVzY3JpcHRvciA9IGFwcGVu
ZE9TUkV4aXREZXNjcmlwdG9yKGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5u
b2RlKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRDb2xkQW55cyhidWlsZEV4aXRBcmd1
bWVudHMoZXhpdERlc2NyaXB0b3IsIG9yaWdpbi5mb3JFeGl0LCBqc1ZhbHVlVmFsdWUoY2VsbCkp
KTsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9y
PERPTUpJVDo6UmVnPiByZWdzOworCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1z
WzBdLmdwcigpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
b21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBn
cFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyAr
K2kpCisgICAgICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmZwU2NyYXRj
aChpKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0g
ZXhpdERlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoKnN0YXRlLCBCYWRUeXBlLCBvcmlnaW4s
IHBhcmFtcywgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0KTsKKworICAgICAgICAgICAgICAgIERPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtcyBkb21KSVRQYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShn
cFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGpp
dCwgZG9tSklUUGFyYW1zKTsKKworICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGZhaWx1cmVDYXNlcywgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhhbmRsZS0+bGFiZWwp
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBwYXRjaHBv
aW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKKyAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVDYWxsRE9NKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBsb3dD
ZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBjZWxs
ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworCisgICAgICAgIFJl
ZlB0cjxET01KSVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNhbGxE
T00oKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihnbG9i
YWxPYmplY3QpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpKTsKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMg
PSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
RlBTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisKKyAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICAgICAg
VmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxET01KSVQ6
OlJlZz4gcmVnczsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBwYXRjaHBvaW50IHNob3Vs
ZCBoYXZlIGEgd2F5IHRvIHRlbGwgdGhpcyBjYW4gcmV1c2UgImJhc2UiIHJlZ2lzdGVyLgorICAg
ICAgICAgICAgICAgIC8vIFRlYWNoaW5nIERGRyBhYm91dCBET01KSVQ6OlBhdGNocG9pbnQgY2xv
YmJlciBpbmZvcm1hdGlvbiBpcyBuaWNlLgorICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5k
KHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzJd
LmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbM10uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1s0XS5ncHIoKSk7CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJhbXMu
Z3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAg
ICBmcFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAg
ICAgICAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFyYW1zKFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAg
ICAgICBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxs
KCk7CisgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7CisgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0KEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJp
Z2h0Q2hpbGQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggNzY5NDkxYTM2N2JhNWZmMTQwYjUzODdiOGI1ZmMyYjdmOGM2YzY4MC4uYzZk
OGJjM2VkZWM1ZTIzNGNlZmU3Mjc4ZGJlYTU4NGEyN2I3M2Q2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMjA5LDkgKzEyMDksOSBAQCBjbGFz
cyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIAogICAgIGVu
dW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhj
ZXB0aW9uQ2hlY2sgfTsKICAgICBlbnVtIEV4Y2VwdGlvbkp1bXBXaWR0aCB7IE5vcm1hbEp1bXBX
aWR0aCwgRmFySnVtcFdpZHRoIH07Ci0gICAgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soCisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soCiAgICAgICAgIEV4Y2Vw
dGlvbkNoZWNrS2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBFeGNlcHRpb25KdW1wV2lkdGgg
PSBOb3JtYWxKdW1wV2lkdGgpOwotICAgIEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNo
ZWNrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSnVtcCBlbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0
aW9uQ2hlY2soKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICBzdGF0aWMg
dm9pZCBlbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXImIGNvdW50ZXIsIGludDMyX3QgaW5jcmVtZW50ID0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggZjE1MDAwYjM4MjMxMjFjNzM2YjI2YmQ3N2E0ODgyNDc5YTViZGM3ZS4uYTY5ZmQ1ZDI3MDEx
MDFmMGUxMTgxNzFjYmEzOTMyYjU1OGI3ZmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI4
LDYgKzI4LDkgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgorI2luY2x1ZGUgIkRPTUpJVEdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01K
SVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNzIsNiAr
NzUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC01MzcsMTIgKzU0MSwxMDggQEAgY2xhc3Mg
U2ltcGxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxKU0M6OlVua25vd24+IG1faGlkZGVuVmFsdWU7CiB9OwogCitjbGFzcyBET01KSVRHZXR0ZXIg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgRE9NSklUR2V0dGVyKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RU
eXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
RE9NSklUR2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIERPTUpJVEdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8RE9NSklUR2V0dGVyPih2bS5oZWFwLCBzaXplb2YoRE9NSklUR2V0dGVyKSkpIERPTUpJVEdl
dHRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgaW50MzJfdCB2YWx1ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBjbGFzcyBE
T01KSVRHZXR0ZXJET01KSVQgOiBwdWJsaWMgRE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgRE9NSklUR2V0dGVyRE9NSklUKCkKKyAgICAgICAgICAgIDogRE9NSklU
OjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyOjpjdXN0b21HZXR0ZXIsIG51bGxwdHIsIERPTUpJ
VEdldHRlcjo6aW5mbygpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZWY8RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9p
bnQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsK
KyAgICAgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAorICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorCisgICAgICAgIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9N
SklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMl0uZ3ByKCk7CisKKyAgICAgICAg
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhkb20sIERPTUpJVEdldHRl
cjo6b2Zmc2V0T2ZWYWx1ZSgpKSwgcmVzdWx0cy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAg
ICAgIGppdC5ib3hJbnQzMihyZXN1bHRzLnBheWxvYWRHUFIoKSwgcmVzdWx0cyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgc3RhdGljIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJHZXR0ZXJTZXR0ZXIo
KQorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTUpJVEdldHRlckRPTUpJ
VD4gZ3JhcGg7CisgICAgICAgIHJldHVybiAmZ3JhcGguZ2V0KCk7CisgICAgfQorCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlZhbHVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKERP
TUpJVEdldHRlciwgbV92YWx1ZSk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IGRvbUpJVEdldHRlckdldHRlclNl
dHRlcigpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBkb21KSVQt
PnNldHRlcigpLCBkb21KSVQpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVy
U2V0dGVyLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICAgICAgRE9NSklUR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVRH
ZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlmICghdGhpc09i
amVjdCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5tX3Zh
bHVlKSk7CisgICAgfQorCisgICAgaW50MzJfdCBtX3ZhbHVlIHsgNDIgfTsKK307CisKIAogY29u
c3QgQ2xhc3NJbmZvIEVsZW1lbnQ6OnNfaW5mbyA9IHsgIkVsZW1lbnQiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEVsZW1lbnQpIH07CiBjb25zdCBDbGFzc0luZm8gTWFz
cXVlcmFkZXI6OnNfaW5mbyA9IHsgIk1hc3F1ZXJhZGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShNYXNxdWVyYWRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSb290Ojpz
X2luZm8gPSB7ICJSb290IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShS
b290KSB9OwogY29uc3QgQ2xhc3NJbmZvIEltcHVyZUdldHRlcjo6c19pbmZvID0geyAiSW1wdXJl
R2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbXB1cmVHZXR0
ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21H
ZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRl
cikgfTsKK2NvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9IHsgIkRPTUpJVEdl
dHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0dGVy
KSB9OwogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFy
cmF5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkp
IH07CiBjb25zdCBDbGFzc0luZm8gU2ltcGxlT2JqZWN0OjpzX2luZm8gPSB7ICJTaW1wbGVPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNpbXBsZU9iamVjdCkg
fTsKIHN0YXRpYyBib29sIHRlc3QyNjJBc3luY1Bhc3NlZCB7IGZhbHNlIH07CkBAIC01NzEsNiAr
NjcxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVQcm94eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1
c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGlu
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSop
OwpAQCAtODU1LDYgKzk1Niw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2Jh
bE9iamVjdCB7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJbXB1cmVHZXR0ZXIi
LCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJP
YmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVEdldHRlck9i
amVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAyKTsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJl
R2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKQEAg
LTEzNTksNiArMTQ2MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9N
SklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyKiByZXN1bHQgPSBET01KSVRH
ZXR0ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JveC5oIGIv
U291cmNlL1dURi93dGYvQm94LmgKaW5kZXggYWQ5ZDVjNTczZjBiZjA1ZDA4M2UzYjY1YjIyMjc3
NWJhMzQ5MjE2Ny4uYjY2MTMyMTkxOTE3NTgwNjgxNGI0NmExZDIwYTJkMTdkOThhYTZjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQm94LmgKKysrIGIvU291cmNlL1dURi93dGYvQm94LmgK
QEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIEJveCB7CiAgICAgewogICAgIH0KIAorICAgIEJveChz
dGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgogICAgIHN0YXRpYyBCb3ggY3JlYXRlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKICAgICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDUxMzYxMTg4Y2NjNDIxZTA4M2JjYTI1NDZjM2FkODk0YjI2ODBlMDguLjc0OTI1
ODBhNDVlOTEyODdmY2Q0M2QxZDhjMTdlY2I1MTRlODllYzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYt
MTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxET00gaW1wbGVtZW50YXRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9kb21qaXQtZ2V0dGVyLXBvbHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoYWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisgICAg
ICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoYWNjZXNzKToKKwogMjAxNi0xMC0wMyAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQXV0by1nZW5lcmF0ZSBXQVNNT3BzLmgsIHNoYXJlIHdp
dGggdGVzdGluZyBKU09OIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1n
ZXR0ZXItcG9seS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZTMxMWVmODkxZTAzMGU2MWE4ZmI5ZTI3Y2U5ZmEzZjQyMGNhYjg1Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzCkBAIC0wLDAg
KzEsMTkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK3ZhciBkb21qaXQxID0gY3JlYXRlRE9NSklUR2V0
dGVyT2JqZWN0KCk7Cit2YXIgZG9taml0MiA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOwor
CitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0
dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkKKyAgICBzaG91bGRCZShhY2Nlc3MoKGkgJiAweDEpID8gZG9taml0MSA6IGRvbWppdDIp
LCA4NCk7CisKK3Nob3VsZEJlKGFjY2Vzcyh7IGN1c3RvbUdldHRlcjogNDIgfSksIDg0KTsKK2Rv
bWppdDEudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNzKGRvbWppdDEpLCA4NCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4N2RkM2I3
NGExODQ3MTAyZDMzNjQ5OTA2MzJkMjRhY2JlMzdiZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItc3VwZXItcG9seS5qcwpAQCAtMCwwICsxLDE4IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhh
Y3R1YWwpfWApOworfQorCit2YXIgZG9taml0cyA9IFtdOworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDA7ICsraSkKKyAgICBkb21qaXRzLnB1c2goY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KCkpOwor
CitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0
dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7
ICsraSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9taml0cy5sZW5ndGg7ICsraikKKyAg
ICAgICAgc2hvdWxkQmUoYWNjZXNzKGRvbWppdHNbal0pLCA4NCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdl
dHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYmEyODg0MmE1NmUwNmY0NDYwZjc4NTQ5NWRmNTUwOWY3Yjli
MzFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5qcwpA
QCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0ID0gY3JlYXRlRE9N
SklUR2V0dGVyT2JqZWN0KCk7CisKK2Z1bmN0aW9uIGFjY2Vzcyhkb21qaXQpCit7CisgICAgcmV0
dXJuIGRvbWppdC5jdXN0b21HZXR0ZXIgKyBkb21qaXQuY3VzdG9tR2V0dGVyOworfQorCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXQpLCA4
NCk7CisKK3Nob3VsZEJlKGFjY2Vzcyh7IGN1c3RvbUdldHRlcjogNDIgfSksIDg0KTsKK2RvbWpp
dC50ZXN0ID0gNDQ7CitzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgODQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290680</attachid>
            <date>2016-10-04 18:53:55 -0700</date>
            <delta_ts>2016-10-04 18:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004185044.patch</filename>
            <type>text/plain</type>
            <size>68961</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi4yMTlhOWM0MmUxNmM4NGJl
MjJjOGIxNzE5NzkwODY2MTQ2OWM0NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzggQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlckNsYXNzSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNET01KSVQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Ok9wSW5mb1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphbGxvY2F0
ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0lu
Zm9TbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1
YkNsYXNzT2YpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZv
KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmguCisgICAgICAgIChK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6flBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OnNpemUpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmF0KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zOjpncFNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXM6OmZwU2NyYXRjaCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFt
czo6UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgICogZG9taml0L0RPTUpJVFJlZy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OlJlZyk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6UmVnOjppc0dQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0ZQUik6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0pTVmFsdWVSZWdzKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpSZWc6Omdwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjpmcHIpOgorICAgICAg
ICAoSlNDOjpET01KSVQ6OlJlZzo6anNWYWx1ZVJlZ3MpOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZVVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVy
OjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6RE9NSklUR2V0dGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6RE9N
SklUR2V0dGVyRE9NSklUOjpET01KSVRHZXR0ZXJET01KSVQpOgorICAgICAgICAoV1RGOjpET01K
SVRHZXR0ZXI6OmRvbUpJVEdldHRlckdldHRlclNldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJ
VEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmN1c3RvbUdldHRlcik6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0xMC0wNCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OIChyMjA2Nzc4
KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hha3JhQ29yZS90ZXN0L0Vycm9y
L3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGluZwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTlhMWE1Nzdj
MDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3NTY3MjQ1NWI4ZThkZjI1NjVj
YThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0wNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQg
aW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0JveC5oOgorICAgICAg
ICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5Ym9hcmRFdmVudC5rZXkgYXR0
cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDQyNmViZWNiODBlZmRi
ZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLjRmMjM1NTVlYjg1ZDE3ZDlhOTJhZTIzYTk5MWVlMGJk
ZmVmOTU4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkyLDYgKzExOTIs
NyBAQAogCQk0M0MzOTJBQjFDM0JFQjA1MDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MzOTJBQTFDM0JF
QjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2NzhGOEUx
QTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY4QzFBMDMxMDA5MDA2QTMwNkQg
LyogQmFzaWNCbG9ja0xvY2F0aW9uLmNwcCAqLzsgfTsKIAkJNTI2NzhGOEYxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOEQxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tM
b2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUyNjc4RjkxMUEwNDE3N0MwMDZBMzA2RCAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY5MDFBMDQx
NzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDk4LDYgKzIwOTksOCBAQAogCQlFMzVF
MDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFC
N0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0MxREE0OTI4
NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0QxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFJlZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3QUQ4M0Ix
REE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJlZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rl
c0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5j
cHAgKi87IH07CiAJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5
RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCAqLzsgfTsKQEAgLTIxODMsNyArMjE4Niw2IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMw
MEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFF
NjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyog
Q29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBC
IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ3M0RB
NEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRC
MDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMzUz
LDYgKzMzNTUsNyBAQAogCQkxNEY3MjU2MzE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93
bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtIYW5kbGVP
d25lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjcyNTY0MTRFRTI2NUUw
MEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha0hhbmRsZU93bmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
Rjk3NDQ2MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFJvb3RWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4Nzk1MTA2MTRD
NTQwRkZCNTYxQzEyNCAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMjhENEE3MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAv
KiBXZWFrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM5Nyw2ICs0NDAwLDggQEAKIAkJRTM1
RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJlZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIg
LyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDUyNiw3ICs0NTMxLDYgQEAKIAkJRkVGMDQwNTAxQUFFNjYyRDAw
QkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0Nv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjA0
MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGggPSBBUEkvdGVz
dHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
RkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNzE4Myw2
ICs3MTg3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2
RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3
OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovLAorCQkJCUUzN0FEODNBMURBNDkyODAwMEYzRDQx
MiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8sCisJCQkJRTM3QUQ4M0IxREE0OTI4MDAw
RjNENDEyIC8qIERPTUpJVFJlZy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb21qaXQ7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzYwMCw2ICs3NjA2LDcgQEAKIAkJCQlFMzlENDVG
NTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09T
UkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0QxREE0OTI4NjAwRjNE
NDEyIC8qIERPTUpJVFJlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhv
bGRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDI4LDYgKzg0MzUsNyBAQAogCQkJCTk5NTlFOTJF
MUJEMTdGQTQwMDFBQTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQk3OUIxNzg4RTFE
Mzk5QjgwMDBCMUE1NjcgLyogSklUTWF0aElDRm9yd2FyZHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzdBRDgzQzFEQTQ5Mjg2MDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY3MDRCODUxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJK
SVQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjQ3NjdGMUQ5OUFFQUQwMDhFQTZDQiAvKiBHQ0Rl
ZmVycmFsQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWZmZWN0cy5oCmluZGV4IGMwNDc0OGY2YTM4NzM1MGEwMzEwMzFlM2JjMWIwNTI5MDViZTlj
YTkuLmJlYzQ3ODY1OGJkZTljZjI5N2Q5MGUyY2VhYjg2ZTEyMmExNzNhNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKQEAgLTc4LDYgKzc4LDE1IEBAIHN0cnVjdCBFZmZlY3Rz
IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgRWZmZWN0cyBm
b3JDaGVjaygpCisgICAgeworICAgICAgICBFZmZlY3RzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
LmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICAvLyBUaGUgcHJvZ3JhbSBjb3VsZCByZWFk
IGFueXRoaW5nIGFmdGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9uIHVzIHRvIGRlY2xhcmUgdGhpcy4K
KyAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3Rh
dGUgfHwgd3JpdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IDE2MWFj
ZWQ3MmJhNjZiMTgxN2E1ZjNhNDc5YmJiOTMzMTJkY2FjODkuLmEwODdmNTFlY2UxZGQyNWUxYzIy
NDM2YTgzNzAzNzM3ODcwMzg0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAK
QEAgLTYxNCw5ICs2MTQsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBj
YXNlIENoZWNrU3ViOgogICAgIGNhc2UgQ2hlY2tNdWw6CiAgICAgY2FzZSBDaGVjazoKLSAgICAg
ICAgcmVzdWx0LmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAvLyBUaGUgcHJvZ3JhbSBj
b3VsZCByZWFkIGFueXRoaW5nIGFmdGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9uIHVzIHRvIGRlY2xh
cmUgdGhpcy4KLSAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAg
ICAgcmVzdWx0ID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBVcHNpbG9uOgogICAgIGNhc2UgU2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggNzE5ZDhmMjcyODNmNWQxMjNjZTU3NzE1
NDVlNDY5YmY4MWFmZjIyNy4uMjQyNTI5MmFmZjYwNTlhYWE3OGNiODQ5N2QxODZiOWI1MDQyZTY5
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCkBAIC0zNTMsNiArMzUzLDEyIEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJv
bVR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlIHR5cGUpCiAKIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsKKyAg
ICBpZiAoY2xhc3NJbmZvID09IEpTU3RyaW5nOjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVj
U3RyaW5nOworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBTeW1ib2w6OmluZm8oKSkKKyAgICAgICAg
cmV0dXJuIFNwZWNTeW1ib2w7CisKICAgICBpZiAoY2xhc3NJbmZvID09IEpTRmluYWxPYmplY3Q6
OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKICAgICAKQEAgLTM4NSw2
ICszOTEsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgCiAgICAgaWYgKGlzVHlwZWRWaWV3KGNsYXNzSW5m
by0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJv
bVR5cGVkQXJyYXlUeXBlKGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsKKworICAg
IGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU0FycmF5OjppbmZvKCkpKQorICAgICAgICBy
ZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNs
YXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBTcGVjT2JqZWN0T3RoZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCmluZGV4IDU5NzI4MTY2MmU4YWQxZmZhYTg1NTYyMmM3MDU5YTQ3NGIyZjQ0NmUuLmJjZjZk
N2U3MzFmY2Q3ZTA1MzUzYWZkNjliOGI5YTQzOTNmYmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCkBAIC0xMzQsMTAgKzEz
NCwxNyBAQCBjbGFzcyBBYnN0cmFjdEludGVycHJldGVyIHsKICAgICAgICAgcmV0dXJuIGZpbHRl
ckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKFQgbm9k
ZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCisgICAgeworICAgICAgICByZXR1cm4gZmls
dGVyQ2xhc3NJbmZvKGZvck5vZGUobm9kZSksIGNsYXNzSW5mbyk7CisgICAgfQorCiAgICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIGNvbnN0IFN0cnVjdHVyZVNldCYs
IFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgRmlsdHJhdGlv
blJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJheU1vZGVzKTsKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3BlY3VsYXRlZFR5cGUp
OwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFjdFZhbHVlJiwgRnJv
emVuVmFsdWUpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKEFic3RyYWN0
VmFsdWUmLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAKICAgICBQaGlDaGlsZHJlbiogcGhpQ2hp
bGRyZW4oKSB7IHJldHVybiBtX3BoaUNoaWxkcmVuLmdldCgpOyB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggY2U2YmVmOWFkM2ZkMDU3OWZlNWFhOWUwMWE4NGU3M2JlNjhmNmQ0YS4uOWRm
YzYzZGM2OGExOGQxNDRkY2M0ZTU3N2Q3ZjE0NjdiZTZhN2M2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIyNjMsNiArMjI2NCwyOCBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgZm9yTm9kZShub2RlKS5jbGVhcigpOyAvLyBUaGUgcmVzdWx0IGlzIG5vdCBh
IEpTIHZhbHVlLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIENoZWNrRE9NOiB7CisgICAgICAg
IEpTVmFsdWUgY29uc3RhbnQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAg
ICAgICBpZiAoY29uc3RhbnQpIHsKKyAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSAm
JiBjb25zdGFudC5hc0NlbGwoKS0+aW5oZXJpdHMobm9kZS0+Y2xhc3NJbmZvKCkpKSB7CisgICAg
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoY29uc3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJD
bGFzc09mKG5vZGUtPmNsYXNzSW5mbygpKSkKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRD
b25zdGFudHModHJ1ZSk7CisKKyAgICAgICAgZmlsdGVyQ2xhc3NJbmZvKHZhbHVlLCBub2RlLT5j
bGFzc0luZm8oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENhbGxET006Cisg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
YWxyZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKSB7
CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwpAQCAtMzA1MSw2
ICszMDc0LDE2IEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmZpbHRlckJ5VmFsdWUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3Ry
YWN0U3RhdGVUeXBlPgorRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKAorICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBpZiAodmFsdWUuZmlsdGVyQ2xh
c3NJbmZvKG1fZ3JhcGgsIGNsYXNzSW5mbykgPT0gRmlsdHJhdGlvbk9LKQorICAgICAgICByZXR1
cm4gRmlsdHJhdGlvbk9LOworICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CisgICAgcmV0
dXJuIENvbnRyYWRpY3Rpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVU
eXBlPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZURvdWJsZVVuYXJ5T3BFZmZlY3RzKE5vZGUqIG5vZGUsIGRvdWJsZSgqZXF1aXZhbGVudEZ1bmN0
aW9uKShkb3VibGUpKQogewogICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5jcHAKaW5kZXggYzNlZmRhY2VlNzhkNmFjZWVmNjVhOTgzMjg0MWJkNmY0MWJjYTQ3Zi4u
YmYxZTQ5OTAwN2E5OGMyNGIwYTk0OTNmMDA3MzkxY2I2ZmNhNDhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCkBAIC0zMDYsNiArMzA2LDIx
IEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQXJyYXlNb2RlcyhBcnJh
eU1vZGVzIGFycmF5TW9kZXMpCiAgICAgcmV0dXJuIG5vcm1hbGl6ZUNsYXJpdHkoKTsKIH0KIAor
RmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8oR3JhcGgmIGdy
YXBoLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBpZiAoaXNDbGVhcigpKQor
ICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOworCisgICAgbV90eXBlICY9IHNwZWN1bGF0aW9u
RnJvbUNsYXNzSW5mbyhjbGFzc0luZm8pOworICAgIG1fc3RydWN0dXJlLmZpbHRlckNsYXNzSW5m
byhjbGFzc0luZm8pOworCisgICAgbV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisKKyAgICBm
aWx0ZXJBcnJheU1vZGVzQnlUeXBlKCk7CisgICAgZmlsdGVyVmFsdWVCeVR5cGUoKTsKKyAgICBy
ZXR1cm4gbm9ybWFsaXplQ2xhcml0eShncmFwaCk7Cit9CisKIEZpbHRyYXRpb25SZXN1bHQgQWJz
dHJhY3RWYWx1ZTo6ZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKChtX3R5
cGUgJiB0eXBlKSA9PSBtX3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCmluZGV4IDMyZWIwZjE5YzVjOTFmNjc3MThlNzNkMGE3YzM4ZTE5ZmNmMjgz
ZWYuLjhhOTEwMTQwNzU2M2FiMTNlYTAwZDVjNmJjZTg4NGM1OTI4MDMxNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCkBAIC0zMDcsNiArMzA3LDcg
QEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFNw
ZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoY29uc3Qg
RnJvemVuVmFsdWUmIHZhbHVlKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihjb25zdCBB
YnN0cmFjdFZhbHVlJik7CisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oR3Jh
cGgmLCBjb25zdCBDbGFzc0luZm8qKTsKIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEdy
YXBoJiwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yJik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDBiNWZiOTVk
OTU3YjEyYTQzODFjZmZiOWI2YzJhNGViMzJhYjNhNGQuLjk4YmEzN2I2ZThlOTI4MDRmZTNiYTI2
MWQ1NDE5ZmNjOGUyY2UxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICBOb2RlKiBoYW5kbGVQdXRCeU9mZnNldChOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9y
JiwgTm9kZSogdmFsdWUpOwogICAgIE5vZGUqIGhhbmRsZUdldEJ5T2Zmc2V0KFNwZWN1bGF0ZWRU
eXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQcm9wZXJ0eU9mZnNl
dCwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yJiwgTm9kZVR5cGUgPSBHZXRCeU9mZnNl
dCk7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0
IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pOwogCiAgICAgLy8gQ3JlYXRlIGEgcHJlc2VuY2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
YmFzZWQgb24gc29tZSBrbm93biBvZmZzZXQgYW5kIHN0cnVjdHVyZSBzZXQuIERvZXMgbm90CiAg
ICAgLy8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBjb25kaXRpb24sIGJ1dCBpdCBtYXkgcmV0
dXJuIGEgbnVsbCBvbmUgaWYgaXQgZW5jb3VudGVycyBhIGNvbnRyYWRpY3Rpb24uCkBAIC0yNjU5
LDYgKzI2NjAsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVy
KGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWEKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRH
ZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBO
b2RlKiB0aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAgICBpZiAoIXZh
cmlhbnQuZG9tSklUKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVQgPSB2YXJpYW50LmRvbUpJVCgpOworICAgIGFkZFRvR3JhcGgoQ2hl
Y2tET00sIE9wSW5mbyhkb21KSVQpLCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0
aGlzTm9kZSk7CisgICAgTm9kZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFwaChHZXRHbG9iYWxP
YmplY3QsIHRoaXNOb2RlKTsKKyAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBH
bG9iYWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3Jh
cHBlci4KKyAgICBhZGRWYXJBcmdDaGlsZCh0aGlzTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9w
SW5mbyhkb21KSVQpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwgSW50
ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKQEAgLTMzMjQsNiAr
MzMzOSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBt
X2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAKICAgICBBU1NF
UlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgIXZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSk7
CisKKyAgICBpZiAodmFyaWFudC5kb21KSVQoKSkgeworICAgICAgICBpZiAoaGFuZGxlRE9NSklU
R2V0dGVyKGRlc3RpbmF0aW9uT3BlcmFuZCwgdmFyaWFudCwgYmFzZSwgcHJlZGljdGlvbikpIHsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgbG9hZGVkVmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCF2YXJpYW50LmNhbGxMaW5r
U3RhdHVzKCkgJiYgdmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYykgewogICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksIGxvYWRlZFZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCAxZTU1NWZlMWFmZjJmZTMxYWU4OTVjYWY1OThlNmZjOTNlZTNhZjhkLi41MDQzYzRk
MTQwZjU0MmVlZTJhNTQyYjRlMDkzODRlMDI3ODMxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtODg1LDYgKzg4NSwxNSBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEJ1dHRlcmZseUxvYywgSlNPYmpl
Y3RfYnV0dGVyZmx5LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAg
cmV0dXJuOwogCisgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jbGFzc0luZm8oKSkpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIENhbGxE
T006CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAg
cmV0dXJuOworCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1
cmU6CiAgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNWQ2
MzI5ZDI4ZjVmZjNiZjY1YTFjZmNhNDdhYTY3NzQxNjkzNWUyZi4uZDliYzdlNzA5YTExY2Q0ZTNk
MTliZWI1ZWI4ZTIwMDFiZjNhMGYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE1OCw2ICsxNTgsMjggQEAg
Y2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAg
aWYgKGNvbnN0YW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwo
KSAmJiBjb25zdGFudC5hc0NlbGwoKS0+aW5oZXJpdHMobm9kZS0+Y2xhc3NJbmZvKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKTsKKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YkNs
YXNzT2Yobm9kZS0+Y2xhc3NJbmZvKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
R2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICAgICAgICAgIEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMzE4NTU5NmNmOTMzY2UwODk2MTJiYzlhNDU3
ZTFiMmQ1NzQ2Yzc1OS4uNTcyNmNiNWU2ZTdhNDI2N2JlNzJlNjdkY2EzN2NiOTdhN2MwMWNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTE4LDYgKzExOCw4
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZs
eToKKyAgICBjYXNlIENhbGxET006CisgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNlIENoZWNr
QXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGZkNmRkNTQ0ZTgwMjQ5
ZDgyZGIxMDJhMDY2NDljNjkwNjU5YTg5NjkuLjQxNzg3OThmY2RiNDM5YzgzYjdkNDA5ZmY0N2Vj
ZDI1N2E1NmIxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTY5MCw2ICsxNjkwLDE1IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNr
RE9NOgorICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7IC8vIEdsb2Jh
bE9iamVjdC4KKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSk7IC8vIERPTS4KKyAgICAgICAgICAgIGJyZWFrOworCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggOTlhODJjOWNkOTZhYTc4YzNiMDQwZWM1NGVkOWVlMTJmMDFkZTgyNi4uNDIzN2E1MjYyNDk5
MjFkMDNmY2JhNmY4OGJiMDY1NmE3ZTZiMTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBT
dHJpbmdSZXBsYWNlUmVnRXhwOgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNl
IExvYWRGcm9tSlNNYXBCdWNrZXQ6CisgICAgICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjMxMiw3ICsyMzEzLDI4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgQVNTRVJUKGhh
c0Jhc2ljQmxvY2tMb2NhdGlvbigpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEJhc2lj
QmxvY2tMb2NhdGlvbio+KCk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNET01KSVQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tET00gfHwgb3AoKSA9PSBD
YWxsRE9NOworICAgIH0KKworICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0RPTUpJVCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPERPTUpJVDo6R2V0dGVyU2V0dGVyKj4oKTsKKyAgICB9CisKKyAgICBib29sIGhhc0NsYXNz
SW5mbygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja0RPTTsKKyAg
ICB9CisKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8yLmFzPGNvbnN0IENsYXNzSW5mbyo+KCk7CisgICAgfQorCiAgICAgTm9k
ZSogcmVwbGFjZW1lbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWlzYy5yZXBs
YWNlbWVudDsKQEAgLTIzOTIsNiArMjQxNCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAg
ICB1LmludDY0ID0gMDsKICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7CiAgICAgICAg
IH0KKyAgICAgICAgT3BJbmZvV3JhcHBlcihjb25zdCB2b2lkKiBjb25zdFBvaW50ZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOworICAgICAgICAgICAgdS5jb25zdFBvaW50
ZXIgPSBjb25zdFBvaW50ZXI7CisgICAgICAgIH0KICAgICAgICAgT3BJbmZvV3JhcHBlciYgb3Bl
cmF0b3I9KHVpbnQzMl90IGludDMyKQogICAgICAgICB7CiAgICAgICAgICAgICB1LmludDY0ID0g
MDsKQEAgLTI0MTUsMTIgKzI0NDIsMjMgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdS5w
b2ludGVyID0gcG9pbnRlcjsKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQor
ICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0oY29uc3Qgdm9pZCogY29uc3RQb2ludGVy
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUuY29u
c3RQb2ludGVyID0gY29uc3RQb2ludGVyOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAg
ICAgICB9CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBBTFdBWVNfSU5M
SU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Bv
aW50ZXI8VD46OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMo
KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZh
bHVlICYmICFzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5
cGU+Ojp2YWx1ZSwgVD46OnR5cGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KHUucG9pbnRlcik7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUgJiYgc3RkOjppc19jb25z
dDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LmNvbnN0UG9p
bnRlcik7CisgICAgICAgIH0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlICYmIHNpemVvZihUKSA9PSA0LCBUPjo6dHlwZQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdS5pbnQzMjsKQEAgLTI0MzQsNiArMjQ3Miw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHVpbnQzMl90IGludDMyOwogICAgICAgICAg
ICAgdWludDY0X3QgaW50NjQ7CiAgICAgICAgICAgICB2b2lkKiBwb2ludGVyOworICAgICAgICAg
ICAgY29uc3Qgdm9pZCogY29uc3RQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgfTsKICAgICBP
cEluZm9XcmFwcGVyIG1fb3BJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IGQ1YWRhODliYzEzOGE2NTA0MGFlZWE5ZDJmYTdkYTNmMDYwZDMxZTguLjljM2Zi
OTBlYTA2YjBjZjkwNThlNTE2NjBlNWI1OGYyNWY3YzI2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM5Niw2ICszOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldE1hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oTG9hZEZyb21KU01hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oSXNOb25FbXB0eU1hcEJ1Y2tldCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBcCisgICAg
LyogTm9kZXMgZm9yIERPTSBKSVQgKi9cCisgICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKKyAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKIAogLy8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90
b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCiAvLyBhbmQgaXMgdXNl
ZCBieSB0aGUgc3Vic2VxdWVudCBlbnVtIHRvIGZpbGwgb3V0IHRoZSBpZCAoYXMgYWNjZXNzZWQg
dmlhIHRoZSBOb2RlSWRNYXNrKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCmlu
ZGV4IGQ0N2E5NzA5YzI5YjUyZDNiNWQ4ZWY0ZjMzZTA5YjVkN2U1Y2JkZTcuLjU3ZjMzMjk3ZWU3
NGUxYjdlNGJhNWY4OTM4NjdmOWVjNDcwNmQxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcEluZm8uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICAgICBleHBsaWNp
dCBPcEluZm8odWludHB0cl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbHVlKSkgeyB9CiAjZW5kaWYKICAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhjb25zdCB2b2lkKiB2YWx1ZSkgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
dmFsdWUpKSkgeyB9CiAgICAgdWludDY0X3QgbV92YWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggNDU5NDE4YWI3MTIxZjcwMThhOWRjMjMzYzcwZTBmY2JlZTdlZDQzYi4uZWE5
MjE1NjI1ZDFlOWZmMDJkZTA3Y2U3MDk2NTNjYzk1N2E0YzU4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTY5OSw3ICs2OTksOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICAgICAg
Y2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6
Ci0gICAgICAgIGNhc2UgVG9OdW1iZXI6IHsKKyAgICAgICAgY2FzZSBUb051bWJlcjoKKyAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5v
ZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTgxOSw2ICs4MjAsOSBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgQ2hlY2tET006CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENhbGxPYmpl
Y3RDb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0KTsK
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAppbmRleCBhYmU2NzJhODk0ZmNlZjRjMWQ4YWMwMzkxZWFmYWFkNmZjN2NhOWY4
Li5jN2UxYjZiNzNkYjgxNzEwYTI4YTg4ZGIzMWQ1MmRmNmVlMzBlMjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE4LDYgKzIxOCw4IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0RXhl
Y3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKKyAgICBjYXNlIENhbGxET006CisgICAg
Y2FzZSBDaGVja0RPTToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToK
ICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggNjA4MWM1N2IyODYxOGU0M2Q5ZWEy
OGQ1NTYxMDE1ODJhNjJjNThjYS4uMDZiMmE5YmQwNWM3M2MzOGNjZTE2NGMwNzBhZjkzYjliODQ4
MGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLWNsYXNzIFNsb3dQYXRoR2VuZXJhdG9yIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IFNsb3dQYXRoR2VuZXJhdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBTbG93UGF0aEdlbmVyYXRvcihTcGVjdWxhdGl2ZUpJVCogaml0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2YjY0NDU0
NDFiMTE1YjJmMjdkNTlhOTYzZGJlNTgwZGRmZjNlMGRlLi4yNzhiYzdmZGI3MWE0ZWRjNDk1NTQx
MGI0ZGE3NWVkZjU4NjNjNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRGR09TUkV4
aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkRPTUpJ
VFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5j
bHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBAIC03MDU3LDYgKzcwNTksNzUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRlcmZseShOb2RlKiBub2RlKQogICAgIHN0
b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAorc3RhdGljIHZvaWQgYWxsb2NhdGVU
ZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3Rv
cjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3RvcjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRl
cnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gs
IERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkgeworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7CisgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQo
dGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xkZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBv
cmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50
Lm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1w
b3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFwcGVuZCh0ZW1wb3JhcnkuZnByKCkpOwor
ICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUodGVtcG9yYXJ5KSk7CisgICAgfQorfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQoreworICAg
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2Fs
bERPTSgpOworICAgIEFTU0VSVChwYXRjaHBvaW50KTsKKworICAgIFZlY3RvcjxHUFJSZWc+IGdw
U2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgVmVjdG9yPERPTUpJ
VDo6UmVnPiByZWdzOworCisgICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3
YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCisgICAgLy8gVGVhY2hp
bmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBjbG9iYmVyIGluZm9ybWF0aW9uIGlzIG5p
Y2UuCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRoaXMsIG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgcmVncy5hcHBlbmQocmVzdWx0LnJl
Z3MoKSk7CisgICAgcmVncy5hcHBlbmQoZ2xvYmFsT2JqZWN0LmdwcigpKTsKKyAgICByZWdzLmFw
cGVuZChiYXNlLmdwcigpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJlZ3MuYXBwZW5kKHN0
YXRpY19jYXN0PEdQUlJlZz4oR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgcmVncy5h
cHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKKyNlbmRpZgorCisgICAgVmVjdG9yPEdQUlRlbXBvcmFyeT4gZ3BUZW1wcmFyaWVzOworICAg
IFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmllczsKKyAgICBhbGxvY2F0ZVRlbXBvcmFy
eVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMs
IGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50LmdldCgpKTsKKyAgICBET01KSVQ6OlBh
dGNocG9pbnRQYXJhbXMgcGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwg
V1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICBwYXRjaHBvaW50LT5nZW5lcmF0b3IoKS0+cnVuKG1f
aml0LCBwYXJhbXMpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LnJlZ3MoKSwgbm9kZSk7Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTShOb2RlKiBub2RlKQorewor
ICAgIC8vIEZJWE1FOiBXZSBjYW4gYWRkIHRoZSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0
IGlubGluZXMganNEeW5hbWljQ2FzdCB0aGluZ3MgaGVyZS4KKyAgICBSZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisKKyAgICBW
ZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwor
ICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKKyAgICByZWdzLmFwcGVuZChiYXNlR1BSKTsKKworICAgIFZlY3RvcjxHUFJUZW1wb3Jh
cnk+IGdwVGVtcHJhcmllczsKKyAgICBWZWN0b3I8RlBSVGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7
CisgICAgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KHRoaXMsIGdwVGVt
cHJhcmllcywgZnBUZW1wcmFyaWVzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgcGF0Y2hwb2ludC5n
ZXQoKSk7CisKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgcGFyYW1zKFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5y
dW4obV9qaXQsIHBhcmFtcyk7CisgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIGZhaWx1cmVDYXNl
cyk7CisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6dGVt
cG9yYXJ5UmVnaXN0ZXJGb3JQdXRCeVZhbChHUFJUZW1wb3JhcnkmIHRlbXBvcmFyeSwgQXJyYXlN
b2RlIGFycmF5TW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5VmFsV2lsbE5lZWRFeHRyYVJlZ2lzdGVy
KGFycmF5TW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggMWRhYjkyMTVjMGExYWNhNDQzNTYzN2IxMzI2MWFhYTcyYzU2MjJlZi4uYTdk
ZWIyNmJjZTkxYTk2YzdmNjM0ODkzYTBiOGQ1YTFlNGIzYTRhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjUzOCw2ICsyNTM4LDggQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJmbHkoTm9kZSopOworICAgIHZvaWQg
Y29tcGlsZUNhbGxET00oTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNoZWNrRE9NKE5vZGUqKTsK
ICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2VP
cGVyYW5kVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlPcGVyYW5kVHlwZSwgdHlwZW5hbWUgVmFsdWVP
cGVyYW5kVHlwZSwgdHlwZW5hbWUgVGFnVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDU4ODQ2Mzg1ODE3OWQ5
MGI5Y2I2NTQxZTQ2ZDNkZWI5MmEwMmIwZmEuLmNiZjZlMjQwOWVmYjcwNWZhZjRjZDFlMWYwYWU2
YTA4MGMyMGMwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTQzMCw2ICs1NDMwLDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICBjb21waWxlQ2hlY2tET00obm9k
ZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgdW5y
ZWFjaGFibGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOTZhN2RhZjBiZjNiOGYzOThh
MGIzY2E1ODUzMjY1OTBlMDNjYTgwZC4uYjM3YTI0N2U2ZTI0M2NhYzIwZmI5NjU4MjViYzE4MzI3
ZTMwNzYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC01NTYxLDYgKzU1NjEsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21w
aWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrRE9NOgor
ICAgICAgICBjb21waWxlQ2hlY2tET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAjaWYgRU5B
QkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOiB7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNhbGxUaWVyVXAgPSBtX2ppdC5icmFuY2hBZGQzMigK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3Ry
YWN0VmFsdWUuY3BwCmluZGV4IDdhODIzZWU4NmNhOTNhZGFiNDYzMzRkNWRlZjIyNjE2ZTc3MmIw
MzguLjg4ZDU3NzU2OWFmOWIwM2RjOThkNGNjYzRiN2Y3YzRhNzEyODIzMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZp
bHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICAgICAgfSk7CiB9CiAKK3ZvaWQgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyhjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbykKK3sKKyAgICBBU1NFUlQoIWlzVG9wKCkpOworICAgIG1fc2V0LmdlbmVyaWNG
aWx0ZXIoCisgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAg
IHJldHVybiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKTsK
KyAgICAgICAgfSk7Cit9CisKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5pdGUoKSkKQEAg
LTMxOSw2ICszMjgsMTkgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhj
b25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gb3Zl
cmxhcHMob3RoZXIubV9zZXQpOwogfQogCitib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Omlz
U3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29uc3QKK3sKKyAgICBpZiAo
aXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOb3RlIHRhaHQg
dGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHN0cnVjdHVyZSBzZXQgaXMgZW1wdHku
CisgICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG1fc2V0KSB7CisgICAgICAg
IGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbykpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmVxdWFsc1Nsb3coY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc2V0Lm1fcG9pbnRlciAh
PSBvdGhlci5tX3NldC5tX3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAppbmRleCBjYTk0YTc5Yjc0N2JkOTEy
NjhiMTJjZTJkMDg0MjE3ODBmNzYyOTYzLi41MWY3OTM3ZDU1MTgxZjVmZjZjNTZjZjQwMGVlNTk0
NWEzOTI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUFic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cnVjdHVyZUFic3RyYWN0VmFsdWUuaApAQCAtMTYzLDYgKzE2MywxMiBAQCBjbGFzcyBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlzTmVpdGhlckNsZWFyTm9yVG9wKCkpCiAg
ICAgICAgICAgICBmaWx0ZXJTbG93KHR5cGUpOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBmaWx0ZXJDbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCisgICAgewor
ICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSkKKyAgICAgICAgICAgIGZpbHRlckNs
YXNzSW5mb1Nsb3coY2xhc3NJbmZvKTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0
CiAgICAgewpAQCAtMjMxLDYgKzIzNyw4IEBAIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUg
ewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29u
c3Q7CiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhl
cikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qKSBjb25z
dDsKICAgICAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJl
bmNlcyYpIGNvbnN0OwogICAgIApAQCAtMjQxLDYgKzI0OSw3IEBAIGNsYXNzIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUgewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1h
Y3lUaHJlc2hvbGQgPSAyOwogICAgIAogICAgIHZvaWQgZmlsdGVyU2xvdyhTcGVjdWxhdGVkVHlw
ZSB0eXBlKTsKKyAgICB2b2lkIGZpbHRlckNsYXNzSW5mb1Nsb3coY29uc3QgQ2xhc3NJbmZvKik7
CiAgICAgYm9vbCBtZXJnZVNsb3coY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIp
OwogICAgIAogICAgIGJvb2wgZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMzg2MzkwMDk2MGE2OGZkZTA4
Y2Y0YmIwNjFkMjQ3NDVmNzFiY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiRE9NSklUUmVnLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBQYXRjaHBvaW50UGFyYW1zIHsKK1dURl9N
QUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOworcHVibGljOgorICAgIHZpcnR1YWwg
flBhdGNocG9pbnRQYXJhbXMoKSB7IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ3Muc2l6ZSgpOyB9CisgICAgY29uc3QgUmVnJiBhdCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdzW2luZGV4XTsgfQorICAgIGNvbnN0IFJlZyYgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAgICBHUFJS
ZWcgZ3BTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2dwU2NyYXRjaFtp
bmRleF07IH0KKyAgICBGUFJSZWcgZnBTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2ZwU2NyYXRjaFtpbmRleF07IH0KKworICAgIFBhdGNocG9pbnRQYXJhbXMoVmVjdG9y
PFJlZz4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4m
JiBmcFNjcmF0Y2gpCisgICAgICAgIDogbV9yZWdzKFdURk1vdmUocmVncykpCisgICAgICAgICwg
bV9ncFNjcmF0Y2goV1RGTW92ZShncFNjcmF0Y2gpKQorICAgICAgICAsIG1fZnBTY3JhdGNoKFdU
Rk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorCisgICAgVmVjdG9y
PFJlZz4gbV9yZWdzOworICAgIFZlY3RvcjxHUFJSZWc+IG1fZ3BTY3JhdGNoOworICAgIFZlY3Rv
cjxGUFJSZWc+IG1fZnBTY3JhdGNoOworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRSZWcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYyMzg2NjM1NmVjZjA3ZWIy
OTM1YjY0YmYzMGYzNjc3ZGI1M2Q1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUmVnLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworI2lmIEVOQUJMRShKSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gSXQgaXMgcXVpdGUgdW5m
b3J0dW5hdGUgdGhhdCAzMiBiaXQgZW52aXJvbm1lbnQgZXhpc3RzIG9uIERGRyEgVGhpcyBtZWFu
cyB0aGF0IEpTVmFsdWVSZWdzIGNvbnRhaW5zIDIgcmVnaXN0ZXJzCisvLyBpbiBzdWNoIGFuIGVu
dmlyb25tZW50LiBJZiB3ZSB1c2UgR1BSUmVnIGFuZCBGUFJSZWcgaW4gRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcywgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyBtYXkgY29udGFpbgorLy8gZGlmZmVyZW50
IG51bWJlciBvZiByZWdpc3RlcnMgaW4gMzJiaXQgYW5kIDY0Yml0IGVudmlyb25tZW50cyB3aGVu
IHdlIHBhc3MgSlNWYWx1ZVJlZ3MsIGl0IGlzIGNvbmZ1c2luZy4KKy8vIFRoZXJlZm9yZSwgd2Ug
aW50cm9kdWNlIGFuIGFic3RyYWN0aW9uIHRoYXQgRE9NSklUOjpSZWcsIHdoaWNoIGlzIGEgcG9s
eW1vcnBoaWMgcmVnaXN0ZXIgY2xhc3MuIEl0IGNhbiByZWZlciBGUFJSZWcsCisvLyBHUFJSZWcs
IGFuZCAiSlNWYWx1ZVJlZ3MiLiBOb3RlIHRoYXQgaXNHUFIoKSB3aWxsIHJldHVybiBmYWxzZSBp
ZiB0aGUgdGFyZ2V0IFJlZyBpcyAiSlNWYWx1ZVJlZ3MiIGV2ZW4gaWYgdGhlCisvLyBlbnZpcm9u
bWVudCBpcyA2NGJpdC4KK2NsYXNzIFJlZyB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBl
IDogdWludDhfdCB7CisgICAgICAgIEdQUiA9IDAsCisgICAgICAgIEZQUiA9IDEsCisgICAgICAg
IEpTVmFsdWUgPSAyLAorICAgIH07CisKKyAgICBSZWcoR1BSUmVnIHJlZykKKyAgICAgICAgOiBt
X3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9CisKKyAgICBSZWcoRlBSUmVnIHJlZykKKyAgICAg
ICAgOiBtX3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9CisKKyAgICBSZWcoSlNWYWx1ZVJlZ3Mg
cmVncykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVncykKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBpc0dQUigpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudC5pbmRleCgpID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUeXBlOjpHUFIpOyB9CisgICAgYm9vbCBpc0ZQUigpIGNvbnN0IHsgcmV0dXJu
IG1fdmFyaWFudC5pbmRleCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUeXBlOjpGUFIpOyB9
CisgICAgYm9vbCBpc0pTVmFsdWVSZWdzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50LmluZGV4
KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkpTVmFsdWUpOyB9CisKKyAgICBHUFJS
ZWcgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0dQUigpKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8R1BSUmVnPihtX3ZhcmlhbnQpOworICAgIH0K
KyAgICBGUFJSZWcgZnByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0ZQUigpKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8RlBSUmVnPihtX3ZhcmlhbnQp
OworICAgIH0KKyAgICBKU1ZhbHVlUmVncyBqc1ZhbHVlUmVncygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNKU1ZhbHVlUmVncygpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJp
bWVudGFsOjpnZXQ8SlNWYWx1ZVJlZ3M+KG1fdmFyaWFudCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PEdQUlJlZywgRlBSUmVnLCBKU1ZhbHVlUmVn
cz4gbV92YXJpYW50OworfTsKKworfSB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDNjZWY5OTgzNTM1N2NmY2M0Y2M5ZDdk
MmJiMTYyY2Y5OGIwZmYyOGUuLjBhN2MwNTA2YWU5MTYwNDc3NTI1MzdiMjMxMWQxZTNmZjdjZTI3
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTI2NSw2ICsyNjUsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIERlZmluZURhdGFQ
cm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgY2FzZSBDaGVj
a0RPTToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCAyNWRkNjY3ZjVkODUzZmM5N2UzM2Y2MGZlOTIxYTMwNDE1Y2M1NmQ0Li5kN2Nk
OGRjMzM5MWIwNGFkYzZlYmU4MmY4ZjcxYTIyNDgxODZmMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00NCw2ICs0NCw4IEBACiAjaW5j
bHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFi
aWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKKyNpbmNs
dWRlICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJGVExBdmFpbGFibGVSZWNvdmVyeS5oIgpAQCAt
MTA0Myw2ICsxMDQ1LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgICAgICBjb21waWxlVW5yZWFjaGFibGUoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAgY29tcGlsZUNoZWNr
RE9NKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAg
ICAgICAgY29tcGlsZUNhbGxET00oKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtODY1NSw2ICs4NjYz
LDk0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBjcmFzaCgpOwog
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNoZWNrRE9NKCkKKyAgICB7CisgICAgICAgIExWYWx1
ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBSZWZQdHI8RE9N
SklUOjpQYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUtPmRvbUpJVCgpLT5jaGVja0RPTSgpOwor
CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQo
Vm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihjZWxsKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnM7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVy
cyA9IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOworCisgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2luOwor
ICAgICAgICB1bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRPZmZzZXQgPSBwYXRjaHBvaW50LT5udW1D
aGlsZHJlbigpOworICAgICAgICBPU1JFeGl0RGVzY3JpcHRvciogZXhpdERlc2NyaXB0b3IgPSBh
cHBlbmRPU1JFeGl0RGVzY3JpcHRvcihqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQx
KCkubm9kZSgpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kQ29sZEFueXMoYnVpbGRFeGl0
QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBvcmlnaW4uZm9yRXhpdCwganNWYWx1ZVZhbHVlKGNl
bGwpKSk7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAg
ICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgICAgIFZl
Y3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBh
cmFtc1swXS5ncHIoKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAg
ICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
czsgKytpKQorICAgICAgICAgICAgICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNj
cmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRs
ZSA9IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3Jp
Z2luLCBwYXJhbXMsIG9zckV4aXRBcmd1bWVudE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICBE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFyYW1zKFdURk1vdmUocmVncyksIFdURk1v
dmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1
bihqaXQsIGRvbUpJVFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2so
Wz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIubGluayhmYWlsdXJlQ2FzZXMsIGxpbmtCdWZmZXIubG9jYXRpb25PZihoYW5kbGUtPmxh
YmVsKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CisgICAgfQorCisgICAgdm9p
ZCBjb21waWxlQ2FsbERPTSgpCisgICAgeworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0g
bG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUg
Y2VsbCA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKworICAgICAg
ICBSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUtPmRvbUpJVCgpLT5j
YWxsRE9NKCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBh
dGNocG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNl
bGwpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7CisgICAgICAgIHBhdGNocG9pbnQt
Pm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOwor
CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAg
ICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RE9N
SklUOjpSZWc+IHJlZ3M7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogcGF0Y2hwb2ludCBz
aG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdpc3Rlci4K
KyAgICAgICAgICAgICAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklUOjpQYXRjaHBvaW50
IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAgICAgICAgICAgICAgICByZWdzLmFwcGVu
ZChKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFw
cGVuZChwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFt
c1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzNdLmdwcigp
KTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbNF0uZ3ByKCkpOworCisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQocGFy
YW1zLmdwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgZnBTY3JhdGNoLmFwcGVuZChwYXJhbXMuZnBTY3JhdGNoKGkpKTsKKworICAgICAgICAg
ICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAg
ICAgICAgICAgICAgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIGRvbUpJVFBhcmFtcyhXVEZNb3Zl
KHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAg
ICAgICAgICAgZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9y
Q2FsbCgpOworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOworICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBhcmVFcU9iamVjdE9yT3RoZXJUb09iamVjdChFZGdlIGxlZnRDaGlsZCwgRWRn
ZSByaWdodENoaWxkKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDc2OTQ5MWEzNjdiYTVmZjE0MGI1Mzg3YjhiNWZjMmI3ZjhjNmM2ODAu
LmM2ZDhiYzNlZGVjNWUyMzRjZWZlNzI3OGRiZWE1ODRhMjdiNzNkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTIwOSw5ICsxMjA5LDkgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAKICAg
ICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRl
ZEV4Y2VwdGlvbkNoZWNrIH07CiAgICAgZW51bSBFeGNlcHRpb25KdW1wV2lkdGggeyBOb3JtYWxK
dW1wV2lkdGgsIEZhckp1bXBXaWR0aCB9OwotICAgIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAogICAgICAgICBF
eGNlcHRpb25DaGVja0tpbmQgPSBOb3JtYWxFeGNlcHRpb25DaGVjaywgRXhjZXB0aW9uSnVtcFdp
ZHRoID0gTm9ybWFsSnVtcFdpZHRoKTsKLSAgICBKdW1wIGVtaXROb25QYXRjaGFibGVFeGNlcHRp
b25DaGVjaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4
Y2VwdGlvbkNoZWNrKCk7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCiAgICAgc3Rh
dGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdD
b3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IGYxNTAwMGIzODIzMTIxYzczNmIyNmJkNzdhNDg4MjQ3OWE1YmRjN2UuLmE2OWZkNWQy
NzAxMTAxZjBlMTE4MTcxY2JhMzkzMmI1NThiN2ZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJET01KSVRH
ZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVkZSAi
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTcy
LDYgKzc1LDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNTM3LDEyICs1NDEsMTA4IEBAIGNs
YXNzIFNpbXBsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBXcml0ZUJh
cnJpZXI8SlNDOjpVbmtub3duPiBtX2hpZGRlblZhbHVlOwogfTsKIAorY2xhc3MgRE9NSklUR2V0
dGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIERPTUpJVEdldHRl
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2Jq
ZWN0VHlwZSArIDEpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIERPTUpJVEdldHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBET01KSVRHZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERPTUpJVEdldHRlcj4odm0uaGVhcCwgc2l6ZW9mKERPTUpJVEdldHRlcikpKSBET01K
SVRHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgICAgICByZXR1cm4gZ2V0dGVyOworICAgIH0KKworICAgIGludDMyX3QgdmFsdWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAgY2xh
c3MgRE9NSklUR2V0dGVyRE9NSklUIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIERPTUpJVEdldHRlckRPTUpJVCgpCisgICAgICAgICAgICA6IERP
TUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdldHRlcjo6Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBE
T01KSVRHZXR0ZXI6OmluZm8oKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAg
ICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRj
aHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
PV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2Fz
ZXM7CisgICAgICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoOCgKKyAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICBSZWY8RE9NSklUOjpQ
YXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3Mo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0gcGFyYW1zWzJdLmdwcigpOworCisgICAg
ICAgICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoZG9tLCBET01KSVRH
ZXR0ZXI6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdHMucGF5bG9hZEdQUigpKTsKKyAgICAgICAg
ICAgICAgICBqaXQuYm94SW50MzIocmVzdWx0cy5wYXlsb2FkR1BSKCksIHJlc3VsdHMpOworICAg
ICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICB9CisgICAgfTsK
KworICAgIHN0YXRpYyBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyR2V0dGVyU2V0
dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01KSVRHZXR0ZXJE
T01KSVQ+IGdyYXBoOworICAgICAgICByZXR1cm4gJmdyYXBoLmdldCgpOworICAgIH0KKworICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihET01KSVRHZXR0ZXIsIG1fdmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBkb21KSVRHZXR0ZXJHZXR0
ZXJTZXR0ZXIoKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0
ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIoKSwgZG9t
SklULT5zZXR0ZXIoKSwgZG9tSklUKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3VzdG9tR2V0dGVyIiksIGN1c3RvbUdl
dHRlclNldHRlciwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nvcik7CisgICAgfQorCisgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgICAgIERPTUpJVEdldHRlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9N
SklUR2V0dGVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICBpZiAoIXRo
aXNPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+
bV92YWx1ZSkpOworICAgIH0KKworICAgIGludDMyX3QgbV92YWx1ZSB7IDQyIH07Cit9OworCiAK
IGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8gPSB7ICJFbGVtZW50IiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVtZW50KSB9OwogY29uc3QgQ2xhc3NJbmZv
IE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVyYWRlciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIpIH07CiBjb25zdCBDbGFzc0luZm8gUm9v
dDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoUm9vdCkgfTsKIGNvbnN0IENsYXNzSW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIklt
cHVyZUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW1wdXJl
R2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlcjo6c19pbmZvID0geyAiQ3Vz
dG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShDdXN0b21H
ZXR0ZXIpIH07Citjb25zdCBDbGFzc0luZm8gRE9NSklUR2V0dGVyOjpzX2luZm8gPSB7ICJET01K
SVRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEdl
dHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRp
bWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFy
cmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9iamVjdDo6c19pbmZvID0geyAiU2ltcGxl
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaW1wbGVPYmpl
Y3QpIH07CiBzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQYXNzZWQgeyBmYWxzZSB9OwpAQCAtNTcx
LDYgKzY3MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlUHJveHkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVp
bHRpbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3Rh
dGUqKTsKQEAgLTg1NSw2ICs5NTYsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNH
bG9iYWxPYmplY3QgewogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0
dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAgICAgICBhZGRGdW5jdGlv
bih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0
dGVyT2JqZWN0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRHZXR0
ZXJPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQnVpbHRpbiIsIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbiwg
Mik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rp
b25DcmVhdGVHbG9iYWxPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldElt
cHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7
CkBAIC0xMzU5LDYgKzE0NjEsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIERPTUpJVEdldHRlciogcmVzdWx0ID0gRE9N
SklUR2V0dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3gu
aCBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCmluZGV4IGFkOWQ1YzU3M2YwYmYwNWQwODNlM2I2NWIy
MjI3NzViYTM0OTIxNjcuLmI2NjEzMjE5MTkxNzU4MDY4MTRiNDZhMWQyMGEyZDE3ZDk4YWE2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JveC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Jv
eC5oCkBAIC00MCw2ICs0MCwxMCBAQCBjbGFzcyBCb3ggewogICAgIHsKICAgICB9CiAKKyAgICBC
b3goc3RkOjpudWxscHRyX3QpCisgICAgeworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgQm94IGNyZWF0ZShBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCA1MTM2MTE4OGNjYzQyMWUwODNiY2EyNTQ2YzNhZDg5NGIyNjgwZTA4Li43
NDkyNTgwYTQ1ZTkxMjg3ZmNkNDNkMWQ4YzE3ZWNiNTE0ZTg5ZWM0IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtET01KSVRdIEFkZCBpbml0aWFsIENoZWNrRE9NIGFuZCBDYWxsRE9NIGltcGxlbWVudGF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKGFjY2Vzcyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItc3VwZXIt
cG9seS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgor
ICAgICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisKIDIwMTYtMTAtMDMgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG8tZ2VuZXJhdGUgV0FTTU9wcy5oLCBzaGFy
ZSB3aXRoIHRlc3RpbmcgSlNPTiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21q
aXQtZ2V0dGVyLXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZiOWUyN2NlOWZhM2Y0MjBjYWI4NQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qcwpAQCAt
MCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0MSA9IGNyZWF0ZURPTUpJ
VEdldHRlck9iamVjdCgpOwordmFyIGRvbWppdDIgPSBjcmVhdGVET01KSVRHZXR0ZXJPYmplY3Qo
KTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4gZG9taml0LmN1c3Rv
bUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKChpICYgMHgxKSA/IGRvbWppdDEgOiBkb21q
aXQyKSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7
Citkb21qaXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFjY2Vzcyhkb21qaXQxKSwgODQpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ODdk
ZDNiNzRhMTg0NzEwMmQzMzY0OTkwNjMyZDI0YWNiZTM3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMKQEAgLTAsMCArMSwxOCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJp
bmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdHMgPSBbXTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpCisgICAgZG9taml0cy5wdXNoKGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgp
KTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4gZG9taml0LmN1c3Rv
bUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWUyOyArK2kpIHsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbWppdHMubGVuZ3RoOyArK2op
CisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXRzW2pdKSwgODQpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWpp
dC1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhMjg4NDJhNTZlMDZmNDQ2MGY3ODU0OTVkZjU1MDlm
N2I5YjMxZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIu
anMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdCA9IGNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCgpOworCitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAg
IHJldHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZShhY2Nlc3MoZG9taml0
KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citk
b21qaXQudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNzKGRvbWppdCksIDg0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290681</attachid>
            <date>2016-10-04 18:56:52 -0700</date>
            <delta_ts>2016-10-04 19:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004185341.patch</filename>
            <type>text/plain</type>
            <size>63912</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi4zZTFhMGMxYzgwZjAzYTNl
ZDYyNTBjM2U4ZDFkZTIyYTI3ZjU3NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzcgQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlckNsYXNzSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNET01KSVQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Ok9wSW5mb1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjphbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzT2YpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpmaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6flBhdGNocG9p
bnRQYXJhbXMpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmF0KToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpncFNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmZwU2NyYXRjaCk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtczo6UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgICogZG9taml0
L0RPTUpJVFJlZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OlJlZyk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0dQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjppc0ZQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0pTVmFsdWVSZWdzKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omdwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjpmcHIpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6anNWYWx1ZVJlZ3MpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRH
ZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6RE9NSklUR2V0dGVyRE9NSklUOjpET01KSVRHZXR0ZXJET01KSVQpOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmRvbUpJVEdldHRlckdldHRlclNldHRlcik6Cisg
ICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0
ZXI6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0x
MC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBS
RUdSRVNTSU9OIChyMjA2Nzc4KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hh
a3JhQ29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGlu
ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggNTlhMWE1NzdjMDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3
NTY3MjQ1NWI4ZThkZjI1NjVjYThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0JveC5oOgorICAgICAgICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5
Ym9hcmRFdmVudC5rZXkgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRjNDQyNmViZWNiODBlZmRiZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLmI2OTdlNjE3YzJhOTkz
MDI3MTRhOWI3M2I5YjFiYmQ2NGQyMTMxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMDk4LDYgKzIwOTgsOCBAQAogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
Nzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUz
Nzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0Qx
REE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJl
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOUQ0NUY1MUQzOTAw
NTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQzOTcsNiAr
NDM5OSw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1
bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzdBRDgzQTFEQTQ5
MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUmVnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5
emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNB
bmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5RDlEODQx
RDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxODMsNiArNzE4Nyw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVy
U2V0dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNo
cG9pbnQuaCAqLywKKwkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hw
b2ludFBhcmFtcy5oICovLAorCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRS
ZWcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc2MDAsNiArNzYwNiw3IEBACiAJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3
IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzN0FEODNEMURBNDkyODYwMEYzRDQxMiAvKiBET01KSVRSZWcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzkyQzhBMUI0NjE4ODQw
MDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIx
NjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODQyOCw2ICs4NDM1LDcgQEAKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMg
LyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8q
IEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1
MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0MxREE0OTI4NjAw
RjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VmZmVjdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAppbmRl
eCBjMDQ3NDhmNmEzODczNTBhMDMxMDMxZTNiYzFiMDUyOTA1YmU5Y2E5Li5iZWM0Nzg2NThiZGU5
Y2YyOTdkOTBlMmNlYWI4NmUxMjJhMTczYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFZmZlY3RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5oCkBAIC03OCw2ICs3OCwxNSBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEVmZmVjdHMgZm9yQ2hlY2soKQorICAgIHsK
KyAgICAgICAgRWZmZWN0cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0g
dHJ1ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGluZyBhZnRlciBl
eGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxNjFhY2VkNzJiYTY2YjE4MTdhNWYz
YTQ3OWJiYjkzMzEyZGNhYzg5Li5hMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTQsOSArNjE0LDcg
QEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVja1N1YjoKICAg
ICBjYXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJlc3VsdC5leGl0c1Np
ZGV3YXlzID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGlu
ZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCi0gICAgICAg
IHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAgICBj
YXNlIFNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDcxOWQ4ZjI3MjgzZjVkMTIzY2U1NzcxNTQ1ZTQ2OWJmODFhZmYyMjcu
LjI0MjUyOTJhZmY2MDU5YWFhNzhjYjg0OTdkMTg2YjliNTA0MmU2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMzUzLDYg
KzM1MywxMiBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSB0eXBlKQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CisgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU1N0cmluZzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKKworICAgIGlm
IChjbGFzc0luZm8gPT0gU3ltYm9sOjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OworCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjRmluYWxPYmplY3Q7CiAgICAgCkBAIC0zODUsNiArMzkxLDkgQEAgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQogICAgIAogICAgIGlmIChpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisKKyAgICBpZiAoY2xhc3NJbmZvLT5p
c1N1YkNsYXNzT2YoSlNBcnJheTo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVk
QXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTT2JqZWN0Ojpp
bmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAppbmRleCA1OTcyODE2
NjJlOGFkMWZmYWE4NTU2MjJjNzA1OWE0NzRiMmY0NDZlLi5iY2Y2ZDdlNzMxZmNkN2UwNTM1M2Fm
ZDY5YjhiOWE0MzkzZmJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApAQCAtMTM0LDEwICsxMzQsMTcgQEAgY2xhc3MgQWJz
dHJhY3RJbnRlcnByZXRlciB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJCeVZhbHVlKGZvck5vZGUo
bm9kZSksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhUIG5vZGUsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckNsYXNzSW5mbyhmb3JO
b2RlKG5vZGUpLCBjbGFzc0luZm8pOworICAgIH0KKwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmls
dGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBh
ZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJy
YXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZhbHVlKTsKKyAgICBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhBYnN0cmFjdFZhbHVlJiwgY29uc3QgQ2xh
c3NJbmZvKik7CiAgICAgCiAgICAgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKCkgeyByZXR1cm4g
bV9waGlDaGlsZHJlbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGNlNmJl
ZjlhZDNmZDA1NzlmZTVhYTllMDFhODRlNzNiZTY4ZjZkNGEuLjlkZmM2M2RjNjhhMThkMTQ0ZGNj
NGU1NzdkN2YxNDY3YmU2YTdjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJERkdBYnN0cmFj
dEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc2hNYXBJbXBsLmgiCkBAIC0yMjYzLDYgKzIyNjQsMjggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuY2xlYXIoKTsgLy8gVGhlIHJlc3VsdCBpcyBub3QgYSBKUyB2YWx1ZS4KICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICBKU1ZhbHVlIGNvbnN0YW50
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbnN0YW50
KSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxs
KCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNvbnN0
YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3ViQ2xhc3NPZihub2RlLT5jbGFz
c0luZm8oKSkpCisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
CisgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNr
QXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTMwNTEsNiArMzA3NCwxNiBAQCBGaWx0
cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0
ZXJCeVZhbHVlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KK0Zp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZp
bHRlckNsYXNzSW5mbygKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pCit7CisgICAgaWYgKHZhbHVlLmZpbHRlckNsYXNzSW5mbyhtX2dyYXBoLCBj
bGFzc0luZm8pID09IEZpbHRyYXRpb25PSykKKyAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsK
KyAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgIHJldHVybiBDb250cmFkaWN0aW9u
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZm
ZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsK
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IGMz
ZWZkYWNlZTc4ZDZhY2VlZjY1YTk4MzI4NDFiZDZmNDFiY2E0N2YuLmJmMWU0OTkwMDdhOThjMjRi
MGE5NDkzZjAwNzM5MWNiNmZjYTQ4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMzA2LDYgKzMwNiwyMSBAQCBGaWx0cmF0aW9uUmVz
dWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVz
KQogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KCk7CiB9CiAKK0ZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiBncmFwaCwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIEZp
bHRyYXRpb25PSzsKKworICAgIG1fdHlwZSAmPSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY2xh
c3NJbmZvKTsKKyAgICBtX3N0cnVjdHVyZS5maWx0ZXJDbGFzc0luZm8oY2xhc3NJbmZvKTsKKwor
ICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOworICAgIGZpbHRlclZhbHVlQnlUeXBlKCk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZUNs
YXJpdHkoZ3JhcGgpOworfQorCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRl
cihTcGVjdWxhdGVkVHlwZSB0eXBlKQogewogICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAppbmRl
eCAzMmViMGYxOWM1YzkxZjY3NzE4ZTczZDBhN2MzOGUxOWZjZjI4M2VmLi44YTkxMDE0MDc1NjNh
YjEzZWEwMGQ1YzZiY2U4ODRjNTkyODAzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7CiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1
ZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoY29uc3QgQWJzdHJhY3RWYWx1ZSYpOwor
ICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiwgY29uc3QgQ2xhc3NJ
bmZvKik7CiAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVy
cmVkVHlwZTo6RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwYjVmYjk1ZDk1N2IxMmE0MzgxY2ZmYjli
NmMyYTRlYjMyYWIzYTRkLi45OGJhMzdiNmU4ZTkyODA0ZmUzYmEyNjFkNTQxOWZjYzhlMmNlMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3Vs
YXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsK
ICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvciYsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOworICAgIGJvb2wgaGFu
ZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHByZXNlbmNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25v
d24gb2Zmc2V0IGFuZCBzdHJ1Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2
YWxpZGl0eSBvZiB0aGUgY29uZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlm
IGl0IGVuY291bnRlcnMgYSBjb250cmFkaWN0aW9uLgpAQCAtMjY1OSw2ICsyNjYwLDIwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgR2V0QnlJZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
ID0gdmFyaWFudC5kb21KSVQoKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oZG9t
SklUKSwgT3BJbmZvKGRvbUpJVC0+dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOworICAgIE5v
ZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7
CisgICAgYWRkVmFyQXJnQ2hpbGQoZ2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRo
aXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJ
bmZvKHByZWRpY3Rpb24pKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1
bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCkBAIC0zMzI0LDYgKzMzMzksMTQgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlv
bigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOwogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNz
VHlwZTo6R2V0IHx8ICF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkpOworCisgICAgaWYgKHZhcmlh
bnQuZG9tSklUKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlv
bk9wZXJhbmQsIHZhcmlhbnQsIGJhc2UsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlh
bnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLCBsb2FkZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMWU1NTVmZTFh
ZmYyZmUzMWFlODk1Y2FmNTk4ZTZmYzkzZWUzYWY4ZC4uNTA0M2M0ZDE0MGY1NDJlZWUyYTU0MmI0
ZTA5Mzg0ZTAyNzgzMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTg4NSw2ICs4ODUsMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihCdXR0ZXJmbHlMb2MsIEpTT2JqZWN0X2J1dHRlcmZseSwgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNh
c2UgQ2hlY2tET006CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZv
KCkpKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICByZWFk
KFdvcmxkKTsKKyAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFk
KEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVkNjMyOWQyOGY1ZmYzYmY2NWEx
Y2ZjYTQ3YWE2Nzc0MTY5MzVlMmYuLmQ5YmM3ZTcwOWExMWNkNGUzZDE5YmViNWViOGUyMDAxYmYz
YTBmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNTgsNiArMTU4LDI4IEBAIGNsYXNzIENvbnN0YW50Rm9s
ZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tET006
IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXND
ZWxsKCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNz
SW5mbygpKSkgeworICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5k
ZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6IHsKICAgICAgICAgICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCmluZGV4IDMxODU1OTZjZjkzM2NlMDg5NjEyYmM5YTQ1N2UxYjJkNTc0NmM3NTkuLjU3
MjZjYjVlNmU3YTQyNjdiZTcyZTY3ZGNhMzdjYjk3YTdjMDFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxs
RE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBmZDZkZDU0NGU4MDI0OWQ4MmRiMTAyYTA2NjQ5YzY5
MDY1OWE4OTY5Li40MTc4Nzk4ZmNkYjQzOWM4M2I3ZDQwOWZmNDdlY2QyNTdhNTZiMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2OTAsNiAr
MTY5MCwxNSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOyAvLyBHbG9iYWxPYmplY3QuCisgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOyAvLyBE
T00uCisgICAgICAgICAgICBicmVhazsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
Ly8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3Jn
ZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDk5YTgyYzljZDk2YWE3
OGMzYjA0MGVjNTRlZDllZTEyZjAxZGU4MjYuLjQyMzdhNTI2MjQ5OTIxZDAzZmNiYTZmODhiYjA2
NTZhN2U2YjE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ2LDYg
KzE0NDYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4
cDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgorICAgICAgICBjYXNlIENhbGxET006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMTIsNyArMjMx
MywyOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNCYXNpY0Jsb2NrTG9jYXRp
b24oKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxCYXNpY0Jsb2NrTG9jYXRpb24qPigp
OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzRE9NSklUKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvcCgpID09IENoZWNrRE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9CisK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNET01KSVQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkdldHRl
clNldHRlcio+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNDbGFzc0luZm8oKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tET007CisgICAgfQorCisgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5h
czxjb25zdCBDbGFzc0luZm8qPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CkBAIC0yMzky
LDYgKzI0MTQsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAg
ICAgICAgICAgICB1LnBvaW50ZXIgPSBwb2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5m
b1dyYXBwZXIoY29uc3Qgdm9pZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVy
OworICAgICAgICB9CiAgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBp
bnQzMikKICAgICAgICAgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNDE1LDEyICsy
NDQyLDIzIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3Jh
cHBlciYgb3BlcmF0b3I9KGNvbnN0IHZvaWQqIGNvbnN0UG9pbnRlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0
UG9pbnRlcjsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29u
c3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwg
VD46OnR5cGUKKyAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LnBvaW50
ZXIpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBB
TFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlICYmIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odS5jb25zdFBvaW50ZXIpOworICAgICAgICB9
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1
dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCwgVD46OnR5cGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHUuaW50MzI7CkBAIC0yNDM0LDYgKzI0NzIsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90IGludDY0
OwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNv
bnN0UG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgIH07CiAgICAgT3BJbmZvV3JhcHBlciBtX29w
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNWFkYTg5
YmMxMzhhNjUwNDBhZWVhOWQyZmE3ZGEzZjA2MGQzMWU4Li45YzNmYjkwZWEwNmIwY2Y5MDU4ZTUx
NjYwZTViNThmMjVmN2MyNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0zOTYsNiArMzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhHZXRNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvYWRG
cm9tSlNNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKElzTm9uRW1wdHlNYXBC
dWNrZXQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgXAorICAgIC8qIE5vZGVzIGZvciBET00g
SklUICovXAorICAgIG1hY3JvKENoZWNrRE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNp
bmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVl
bnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFz
aykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1
MmQzYjVkOGVmNGYzM2UwOWI1ZDdlNWNiZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3
ZjllYzQ3MDZkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQz
LDYgKzQzLDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2Vu
ZGlmCiAgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAg
ICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAg
IHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ1OTQx
OGFiNzEyMWY3MDE4YTlkYzIzM2M3MGUwZmNiZWU3ZWQ0M2IuLmVhOTIxNTYyNWQxZTlmZjAyZGUw
N2NlNzA5NjUzY2M5NTdhNGM1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyAr
Njk5LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRv
TnVtYmVyOiB7CisgICAgICAgIGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGlj
dGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MTksNiArODIwLDkg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
YWJlNjcyYTg5NGZjZWY0YzFkOGFjMDM5MWVhZmFhZDZmYzdjYTlmOC4uYzdlMWI2YjczZGI4MTcx
MGEyOGE4OGRiMzFkNTJkZjZlZTMwZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2Fz
ZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAg
ICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA2YjY0NDU0NDFiMTE1YjJmMjdkNTlhOTYzZGJlNTgwZGRmZjNlMGRl
Li4yNzhiYzdmZGI3MWE0ZWRjNDk1NTQxMGI0ZGE3NWVkZjU4NjNjNmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgs
OCBAQAogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVy
YXRvci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBA
IC03MDU3LDYgKzcwNTksNzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRl
cmZseShOb2RlKiBub2RlKQogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
IAorc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3Rv
cjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRlcnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZl
Y3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gsIERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnM7ICsraSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7Cisg
ICAgICAgIGdwU2NyYXRjaC5hcHBlbmQodGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xk
ZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBvcmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7Cisg
ICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFw
cGVuZCh0ZW1wb3JhcnkuZnByKCkpOworICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUo
dGVtcG9yYXJ5KSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2Fs
bERPTShOb2RlKiBub2RlKQoreworICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworICAgIEFTU0VSVChwYXRjaHBvaW50KTsK
KworICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBmcFNj
cmF0Y2g7CisgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgLy8gRklYTUU6IHBh
dGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIg
cmVnaXN0ZXIuCisgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBj
bG9iYmVyIGluZm9ybWF0aW9uIGlzIG5pY2UuCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xv
YmFsT2JqZWN0KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCAxKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisg
ICAgcmVncy5hcHBlbmQocmVzdWx0LnJlZ3MoKSk7CisgICAgcmVncy5hcHBlbmQoZ2xvYmFsT2Jq
ZWN0LmdwcigpKTsKKyAgICByZWdzLmFwcGVuZChiYXNlLmdwcigpKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHJlZ3MuYXBwZW5kKHN0YXRpY19jYXN0PEdQUlJlZz4oR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CisgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPEdQUlRlbXBv
cmFyeT4gZ3BUZW1wcmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmll
czsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BU
ZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50
LmdldCgpKTsKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgcGFyYW1zKFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICBwYXRjaHBv
aW50LT5nZW5lcmF0b3IoKS0+cnVuKG1faml0LCBwYXJhbXMpOworICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LnJlZ3MoKSwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
aGVja0RPTShOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBXZSBjYW4gYWRkIHRoZSBmYWxs
YmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0IGlubGluZXMganNEeW5hbWljQ2FzdCB0aGluZ3MgaGVy
ZS4KKyAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gbm9kZS0+ZG9tSklU
KCktPmNoZWNrRE9NKCk7CisKKyAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgVmVj
dG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICByZWdzLmFwcGVuZChiYXNlR1BSKTsK
KworICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsKKyAgICBWZWN0b3I8RlBS
VGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CisgICAgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNG
b3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFyaWVzLCBncFNjcmF0Y2gs
IGZwU2NyYXRjaCwgcGF0Y2hwb2ludC5nZXQoKSk7CisKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMgcGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShm
cFNjcmF0Y2gpKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IHBh
dGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4obV9qaXQsIHBhcmFtcyk7CisgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIGZhaWx1cmVDYXNlcyk7CisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6dGVtcG9yYXJ5UmVnaXN0ZXJGb3JQdXRCeVZhbChHUFJUZW1w
b3JhcnkmIHRlbXBvcmFyeSwgQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5
VmFsV2lsbE5lZWRFeHRyYVJlZ2lzdGVyKGFycmF5TW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMWRhYjkyMTVjMGExYWNhNDQzNTYz
N2IxMzI2MWFhYTcyYzU2MjJlZi4uYTdkZWIyNmJjZTkxYTk2YzdmNjM0ODkzYTBiOGQ1YTFlNGIz
YTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMjUzOCw2ICsyNTM4LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQg
Y29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0
ZXJmbHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNhbGxET00oTm9kZSopOworICAgIHZvaWQg
Y29tcGlsZUNoZWNrRE9NKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJhc2VPcGVyYW5kVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlPcGVy
YW5kVHlwZSwgdHlwZW5hbWUgVmFsdWVPcGVyYW5kVHlwZSwgdHlwZW5hbWUgVGFnVHlwZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDU4ODQ2Mzg1ODE3OWQ5MGI5Y2I2NTQxZTQ2ZDNkZWI5MmEwMmIwZmEuLmNiZjZl
MjQwOWVmYjcwNWZhZjRjZDFlMWYwYWU2YTA4MGMyMGMwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTQzMCw2
ICs1NDMwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxl
Q2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrRE9NOgorICAg
ICAgICBjb21waWxlQ2hlY2tET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgdW5yZWFjaGFibGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggOTZhN2RhZjBiZjNiOGYzOThhMGIzY2E1ODUzMjY1OTBlMDNjYTgwZC4uYjM3YTI0N2U2
ZTI0M2NhYzIwZmI5NjU4MjViYzE4MzI3ZTMwNzYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NTYxLDYgKzU1NjEsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICBjb21waWxlQ2hlY2tET00obm9kZSk7Cisg
ICAgICAgIGJyZWFrOworCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNhbGxUaWVy
VXAgPSBtX2ppdC5icmFuY2hBZGQzMigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCmluZGV4IDdhODIzZWU4NmNhOTNh
ZGFiNDYzMzRkNWRlZjIyNjE2ZTc3MmIwMzguLjg4ZDU3NzU2OWFmOWIwM2RjOThkNGNjYzRiN2Y3
YzRhNzEyODIzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAg
ICAgICAgfSk7CiB9CiAKK3ZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJ
bmZvU2xvdyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBBU1NFUlQoIWlzVG9w
KCkpOworICAgIG1fc2V0LmdlbmVyaWNGaWx0ZXIoCisgICAgICAgIFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5p
c1N1YkNsYXNzT2YoY2xhc3NJbmZvKTsKKyAgICAgICAgfSk7Cit9CisKIGJvb2wgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzSW5maW5pdGUoKSkKQEAgLTMxOSw2ICszMjgsMTkgQEAgYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhl
cikgY29uc3QKICAgICByZXR1cm4gb3ZlcmxhcHMob3RoZXIubV9zZXQpOwogfQogCitib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykgY29uc3QKK3sKKyAgICBpZiAoaXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBOb3RlIHRhaHQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhl
IHN0cnVjdHVyZSBzZXQgaXMgZW1wdHkuCisgICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA6IG1fc2V0KSB7CisgICAgICAgIGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNT
dWJDbGFzc09mKGNsYXNzSW5mbykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmVxdWFs
c1Nsb3coY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1fc2V0Lm1fcG9pbnRlciAhPSBvdGhlci5tX3NldC5tX3BvaW50ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
aAppbmRleCBjYTk0YTc5Yjc0N2JkOTEyNjhiMTJjZTJkMDg0MjE3ODBmNzYyOTYzLi41MWY3OTM3
ZDU1MTgxZjVmZjZjNTZjZjQwMGVlNTk0NWEzOTI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaApAQCAtMTYzLDYg
KzE2MywxMiBAQCBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlz
TmVpdGhlckNsZWFyTm9yVG9wKCkpCiAgICAgICAgICAgICBmaWx0ZXJTbG93KHR5cGUpOwogICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJDbGFzc0luZm8oY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCisgICAgeworICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3Ao
KSkKKyAgICAgICAgICAgIGZpbHRlckNsYXNzSW5mb1Nsb3coY2xhc3NJbmZvKTsKKyAgICB9CiAg
ICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtMjMxLDYgKzIzNyw4IEBAIGNsYXNz
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
U3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViQ2xhc3NP
Zihjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJl
bmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OwogICAgIApAQCAtMjQxLDYgKzI0
OSw3IEBAIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQgPSAyOwogICAgIAogICAgIHZvaWQg
ZmlsdGVyU2xvdyhTcGVjdWxhdGVkVHlwZSB0eXBlKTsKKyAgICB2b2lkIGZpbHRlckNsYXNzSW5m
b1Nsb3coY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgYm9vbCBtZXJnZVNsb3coY29uc3QgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpOwogICAgIAogICAgIGJvb2wgZXF1YWxzU2xvdyhjb25z
dCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyMzg2MzkwMDk2MGE2OGZkZTA4Y2Y0YmIwNjFkMjQ3NDVmNzFiY2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiRE9NSklUUmVnLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBQ
YXRjaHBvaW50UGFyYW1zIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMp
OworcHVibGljOgorICAgIHZpcnR1YWwgflBhdGNocG9pbnRQYXJhbXMoKSB7IH0KKworICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlZ3Muc2l6ZSgpOyB9CisgICAgY29uc3Qg
UmVnJiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9yZWdzW2luZGV4XTsgfQor
ICAgIGNvbnN0IFJlZyYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
YXQoaW5kZXgpOyB9CisKKyAgICBHUFJSZWcgZ3BTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2dwU2NyYXRjaFtpbmRleF07IH0KKyAgICBGUFJSZWcgZnBTY3JhdGNoKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2ZwU2NyYXRjaFtpbmRleF07IH0KKworICAg
IFBhdGNocG9pbnRQYXJhbXMoVmVjdG9yPFJlZz4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdw
U2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogbV9yZWdzKFdU
Rk1vdmUocmVncykpCisgICAgICAgICwgbV9ncFNjcmF0Y2goV1RGTW92ZShncFNjcmF0Y2gpKQor
ICAgICAgICAsIG1fZnBTY3JhdGNoKFdURk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorCisgICAgVmVjdG9yPFJlZz4gbV9yZWdzOworICAgIFZlY3RvcjxHUFJSZWc+
IG1fZ3BTY3JhdGNoOworICAgIFZlY3RvcjxGUFJSZWc+IG1fZnBTY3JhdGNoOworfTsKKworfSB9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRSZWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWYyMzg2NjM1NmVjZjA3ZWIyOTM1YjY0YmYzMGYzNjc3ZGI1M2Q1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKQEAgLTAs
MCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVnLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKworLy8gSXQgaXMgcXVpdGUgdW5mb3J0dW5hdGUgdGhhdCAzMiBiaXQgZW52aXJvbm1lbnQg
ZXhpc3RzIG9uIERGRyEgVGhpcyBtZWFucyB0aGF0IEpTVmFsdWVSZWdzIGNvbnRhaW5zIDIgcmVn
aXN0ZXJzCisvLyBpbiBzdWNoIGFuIGVudmlyb25tZW50LiBJZiB3ZSB1c2UgR1BSUmVnIGFuZCBG
UFJSZWcgaW4gRE9NSklUUGF0Y2hwb2ludFBhcmFtcywgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyBt
YXkgY29udGFpbgorLy8gZGlmZmVyZW50IG51bWJlciBvZiByZWdpc3RlcnMgaW4gMzJiaXQgYW5k
IDY0Yml0IGVudmlyb25tZW50cyB3aGVuIHdlIHBhc3MgSlNWYWx1ZVJlZ3MsIGl0IGlzIGNvbmZ1
c2luZy4KKy8vIFRoZXJlZm9yZSwgd2UgaW50cm9kdWNlIGFuIGFic3RyYWN0aW9uIHRoYXQgRE9N
SklUOjpSZWcsIHdoaWNoIGlzIGEgcG9seW1vcnBoaWMgcmVnaXN0ZXIgY2xhc3MuIEl0IGNhbiBy
ZWZlciBGUFJSZWcsCisvLyBHUFJSZWcsIGFuZCAiSlNWYWx1ZVJlZ3MiLiBOb3RlIHRoYXQgaXNH
UFIoKSB3aWxsIHJldHVybiBmYWxzZSBpZiB0aGUgdGFyZ2V0IFJlZyBpcyAiSlNWYWx1ZVJlZ3Mi
IGV2ZW4gaWYgdGhlCisvLyBlbnZpcm9ubWVudCBpcyA2NGJpdC4KK2NsYXNzIFJlZyB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEdQUiA9IDAsCisg
ICAgICAgIEZQUiA9IDEsCisgICAgICAgIEpTVmFsdWUgPSAyLAorICAgIH07CisKKyAgICBSZWco
R1BSUmVnIHJlZykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9CisKKyAg
ICBSZWcoRlBSUmVnIHJlZykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWcoSlNWYWx1ZVJlZ3MgcmVncykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVncykK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0dQUigpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFu
dC5pbmRleCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUeXBlOjpHUFIpOyB9CisgICAgYm9v
bCBpc0ZQUigpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudC5pbmRleCgpID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUeXBlOjpGUFIpOyB9CisgICAgYm9vbCBpc0pTVmFsdWVSZWdzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6
OkpTVmFsdWUpOyB9CisKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc0dQUigpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8R1BS
UmVnPihtX3ZhcmlhbnQpOworICAgIH0KKyAgICBGUFJSZWcgZnByKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc0ZQUigpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFs
OjpnZXQ8RlBSUmVnPihtX3ZhcmlhbnQpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyBqc1ZhbHVl
UmVncygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNKU1ZhbHVlUmVncygpKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8SlNWYWx1ZVJlZ3M+KG1fdmFyaWFu
dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PEdQ
UlJlZywgRlBSUmVnLCBKU1ZhbHVlUmVncz4gbV92YXJpYW50OworfTsKKworfSB9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDNjZWY5OTgzNTM1N2NmY2M0Y2M5ZDdkMmJiMTYyY2Y5OGIwZmYyOGUuLjBhN2MwNTA2YWU5MTYw
NDc3NTI1MzdiMjMxMWQxZTNmZjdjZTI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2NSw2ICsyNjUsOCBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVTdHJpY3RF
cToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29y
UHJvcGVydHk6CisgICAgY2FzZSBDaGVja0RPTToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyNWRkNjY3ZjVkODUzZmM5N2UzM2Y2
MGZlOTIxYTMwNDE1Y2M1NmQ0Li5kN2NkOGRjMzM5MWIwNGFkYzZlYmU4MmY4ZjcxYTIyNDgxODZm
MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIK
ICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAi
REZHT1NSRXhpdEZ1enouaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVk
ZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJGVExB
dmFpbGFibGVSZWNvdmVyeS5oIgpAQCAtMTA0Myw2ICsxMDQ1LDEyIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgICAgICBjb21waWxlVW5y
ZWFjaGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrRE9NOgor
ICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgY29tcGlsZUNhbGxET00oKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExv
b3BIaW50OgpAQCAtODY1NSw2ICs4NjYzLDk0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIAogICAgICAgICBjcmFzaCgpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNoZWNrRE9N
KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKworICAgICAgICBSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUt
PmRvbUpJVCgpLT5jaGVja0RPTSgpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihjZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJz
OworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlT3Jp
Z2luIG9yaWdpbiA9IG1fb3JpZ2luOworICAgICAgICB1bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRP
ZmZzZXQgPSBwYXRjaHBvaW50LT5udW1DaGlsZHJlbigpOworICAgICAgICBPU1JFeGl0RGVzY3Jp
cHRvciogZXhpdERlc2NyaXB0b3IgPSBhcHBlbmRPU1JFeGl0RGVzY3JpcHRvcihqc1ZhbHVlVmFs
dWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kQ29sZEFueXMoYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBvcmlnaW4u
Zm9yRXhpdCwganNWYWx1ZVZhbHVlKGNlbGwpKSk7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3Jh
dGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKworICAgICAg
ICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1swXS5ncHIoKSk7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7
ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3Jh
dGNoKGkpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21K
SVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBmcFNj
cmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAgUmVm
UHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExh
dGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2luLCBwYXJhbXMsIG9zckV4aXRBcmd1bWVudE9mZnNl
dCk7CisKKyAgICAgICAgICAgICAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFy
YW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gp
KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9
IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIGRvbUpJVFBhcmFtcyk7CisKKyAgICAgICAg
ICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlQ2FzZXMsIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihoYW5kbGUtPmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNo
ZWNrKCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlQ2FsbERPTSgpCisgICAgeworICAgICAg
ICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMCkpOworICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpKTsKKworICAgICAgICBSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21K
SVQgPSBtX25vZGUtPmRvbUpJVCgpLT5jYWxsRE9NKCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnM7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+
bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOworCisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpSZWc+IHJlZ3M7CisKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2Fu
IHJldXNlICJiYXNlIiByZWdpc3Rlci4KKyAgICAgICAgICAgICAgICAvLyBUZWFjaGluZyBERkcg
YWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAg
ICAgICAgICAgICAgICByZWdzLmFwcGVuZChKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVn
cy5hcHBlbmQocGFyYW1zWzNdLmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChw
YXJhbXNbNF0uZ3ByKCkpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAg
ICAgIGdwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmdwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZnBTY3JhdGNoLmFwcGVuZChwYXJhbXMuZnBT
Y3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJh
bXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAgICAgRE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zIGRvbUpJVFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1v
dmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgZG9tSklULT5nZW5lcmF0b3IoKS0+cnVu
KGppdCwgZG9tSklUUGFyYW1zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgpOworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNo
cG9pbnQpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBhcmVFcU9iamVjdE9yT3RoZXJUb09i
amVjdChFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDc2OTQ5MWEzNjdiYTVmZjE0
MGI1Mzg3YjhiNWZjMmI3ZjhjNmM2ODAuLmM2ZDhiYzNlZGVjNWUyMzRjZWZlNzI3OGRiZWE1ODRh
MjdiNzNkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aApAQCAtMTIwOSw5ICsxMjA5LDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1h
bEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07CiAgICAgZW51bSBFeGNl
cHRpb25KdW1wV2lkdGggeyBOb3JtYWxKdW1wV2lkdGgsIEZhckp1bXBXaWR0aCB9OwotICAgIEp1
bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEp1bXAgZW1pdEV4
Y2VwdGlvbkNoZWNrKAogICAgICAgICBFeGNlcHRpb25DaGVja0tpbmQgPSBOb3JtYWxFeGNlcHRp
b25DaGVjaywgRXhjZXB0aW9uSnVtcFdpZHRoID0gTm9ybWFsSnVtcFdpZHRoKTsKLSAgICBKdW1w
IGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKCk7CiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfQ09VTlRFUlMpCiAgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVy
JiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVu
dCA9IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGYxNTAwMGIzODIzMTIxYzczNmIyNmJkNzdh
NDg4MjQ3OWE1YmRjN2UuLmE2OWZkNWQyNzAxMTAxZjBlMTE4MTcxY2JhMzkzMmI1NThiN2ZmYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQnV0dGVy
Zmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRp
b24uaCIKKyNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1
ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApA
QCAtNTM3LDEyICs1NDEsMTA4IEBAIGNsYXNzIFNpbXBsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2hpZGRlblZhbHVl
OwogfTsKIAorY2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIERPTUpJVEdldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVEdldHRlciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01KSVRHZXR0ZXIqIGdldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlcj4odm0uaGVhcCwgc2l6
ZW9mKERPTUpJVEdldHRlcikpKSBET01KSVRHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gZ2V0dGVyOworICAg
IH0KKworICAgIGludDMyX3QgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWU7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUR2V0dGVyRE9NSklUIDogcHVibGljIERP
TUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUpJVEdldHRlckRP
TUpJVCgpCisgICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdldHRlcjo6
Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVRHZXR0ZXI6OmluZm8oKSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBv
dmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAgICAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFt
c1swXS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmpl
Y3RUeXBlICsgMSkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0K
KworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMg
PSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0g
cGFyYW1zWzJdLmdwcigpOworCisgICAgICAgICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoZG9tLCBET01KSVRHZXR0ZXI6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdHMu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBqaXQuYm94SW50MzIocmVzdWx0cy5wYXls
b2FkR1BSKCksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBv
aW50OworICAgICAgICB9CisgICAgfTsKKworICAgIHN0YXRpYyBET01KSVQ6OkdldHRlclNldHRl
ciogZG9tSklUR2V0dGVyR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxET01KSVRHZXR0ZXJET01KSVQ+IGdyYXBoOworICAgICAgICByZXR1cm4gJmdy
YXBoLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYWx1ZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihET01KSVRHZXR0ZXIsIG1fdmFsdWUpOyB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVQgPSBkb21KSVRHZXR0ZXJHZXR0ZXJTZXR0ZXIoKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgZG9tSklULT5nZXR0ZXIoKSwgZG9tSklULT5zZXR0ZXIoKSwgZG9tSklUKTsKKyAgICAgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Y3VzdG9tR2V0dGVyIiksIGN1c3RvbUdldHRlclNldHRlciwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3Nvcik7CisgICAgfQorCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
ICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgIERPTUpJVEdldHRlciogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV92YWx1ZSkpOworICAgIH0KKworICAgIGludDMyX3Qg
bV92YWx1ZSB7IDQyIH07Cit9OworCiAKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8g
PSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVt
ZW50KSB9OwogY29uc3QgQ2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVy
YWRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIp
IH07CiBjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKIGNvbnN0IENsYXNzSW5mbyBJbXB1
cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSW1wdXJlR2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIEN1c3Rv
bUdldHRlcjo6c19pbmZvID0geyAiQ3VzdG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShDdXN0b21HZXR0ZXIpIH07Citjb25zdCBDbGFzc0luZm8gRE9NSklU
R2V0dGVyOjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1l
QXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9i
amVjdDo6c19pbmZvID0geyAiU2ltcGxlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShTaW1wbGVPYmplY3QpIH07CiBzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQ
YXNzZWQgeyBmYWxzZSB9OwpAQCAtNTcxLDYgKzY3MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHkoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VEdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqKTsKQEAgLTg1NSw2ICs5NTYsNyBAQCBjbGFzcyBH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogCiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIs
IDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCIs
IGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQnVpbHRpbiIs
IGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbiwgMik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3Jl
YXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QsIDApOwogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJ
bXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CkBAIC0xMzU5LDYgKzE0NjEsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIERP
TUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3Ry
dWN0dXJlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3guaCBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCmluZGV4IGFk
OWQ1YzU3M2YwYmYwNWQwODNlM2I2NWIyMjI3NzViYTM0OTIxNjcuLmI2NjEzMjE5MTkxNzU4MDY4
MTRiNDZhMWQyMGEyZDE3ZDk4YWE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JveC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCkBAIC00MCw2ICs0MCwxMCBAQCBjbGFzcyBCb3gg
ewogICAgIHsKICAgICB9CiAKKyAgICBCb3goc3RkOjpudWxscHRyX3QpCisgICAgeworICAgIH0K
KwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgQm94IGNy
ZWF0ZShBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MTM2MTE4OGNjYzQyMWUwODNi
Y2EyNTQ2YzNhZDg5NGIyNjgwZTA4Li43NDkyNTgwYTQ1ZTkxMjg3ZmNkNDNkMWQ4YzE3ZWNiNTE0
ZTg5ZWM0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBpbml0aWFsIENoZWNrRE9N
IGFuZCBDYWxsRE9NIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisgICAgICAgICogc3Ry
ZXNzL2RvbWppdC1nZXR0ZXItc3VwZXItcG9seS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisKIDIwMTYt
MTAtMDMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG8t
Z2VuZXJhdGUgV0FTTU9wcy5oLCBzaGFyZSB3aXRoIHRlc3RpbmcgSlNPTiBmaWxlCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kb21qaXQtZ2V0dGVyLXBvbHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZi
OWUyN2NlOWZhM2Y0MjBjYWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rv
bWppdC1nZXR0ZXItcG9seS5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2
YXIgZG9taml0MSA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOwordmFyIGRvbWppdDIgPSBj
cmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sK
KyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKChp
ICYgMHgxKSA/IGRvbWppdDEgOiBkb21qaXQyKSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBj
dXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFj
Y2Vzcyhkb21qaXQxKSwgODQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdl
dHRlci1zdXBlci1wb2x5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1w
b2x5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0ODdkZDNiNzRhMTg0NzEwMmQzMzY0OTkwNjMyZDI0YWNiZTM3
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVy
LXBvbHkuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdHMg
PSBbXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgZG9taml0cy5wdXNoKGNy
ZWF0ZURPTUpJVEdldHRlck9iamVjdCgpKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sK
KyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGRvbWppdHMubGVuZ3RoOyArK2opCisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXRz
W2pdKSwgODQpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhMjg4NDJh
NTZlMDZmNDQ2MGY3ODU0OTVkZjU1MDlmN2I5YjMxZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsK
K30KKwordmFyIGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOworCitmdW5jdGlv
biBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsgZG9t
aml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAg
ICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0
b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNz
KGRvbWppdCksIDg0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290682</attachid>
            <date>2016-10-04 19:00:31 -0700</date>
            <delta_ts>2016-10-04 19:05:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004185720.patch</filename>
            <type>text/plain</type>
            <size>63912</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi4zZTFhMGMxYzgwZjAzYTNl
ZDYyNTBjM2U4ZDFkZTIyYTI3ZjU3NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzcgQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlckNsYXNzSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNET01KSVQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Ok9wSW5mb1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjphbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzT2YpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpmaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6flBhdGNocG9p
bnRQYXJhbXMpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmF0KToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpncFNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmZwU2NyYXRjaCk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtczo6UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgICogZG9taml0
L0RPTUpJVFJlZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OlJlZyk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0dQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjppc0ZQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0pTVmFsdWVSZWdzKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omdwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjpmcHIpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6anNWYWx1ZVJlZ3MpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRH
ZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6RE9NSklUR2V0dGVyRE9NSklUOjpET01KSVRHZXR0ZXJET01KSVQpOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmRvbUpJVEdldHRlckdldHRlclNldHRlcik6Cisg
ICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0
ZXI6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0x
MC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBS
RUdSRVNTSU9OIChyMjA2Nzc4KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hh
a3JhQ29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGlu
ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggNTlhMWE1NzdjMDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3
NTY3MjQ1NWI4ZThkZjI1NjVjYThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0JveC5oOgorICAgICAgICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5
Ym9hcmRFdmVudC5rZXkgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRjNDQyNmViZWNiODBlZmRiZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLmI2OTdlNjE3YzJhOTkz
MDI3MTRhOWI3M2I5YjFiYmQ2NGQyMTMxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMDk4LDYgKzIwOTgsOCBAQAogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
Nzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUz
Nzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0Qx
REE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJl
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOUQ0NUY1MUQzOTAw
NTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQzOTcsNiAr
NDM5OSw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1
bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzdBRDgzQTFEQTQ5
MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUmVnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5
emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNB
bmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5RDlEODQx
RDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxODMsNiArNzE4Nyw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVy
U2V0dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNo
cG9pbnQuaCAqLywKKwkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hw
b2ludFBhcmFtcy5oICovLAorCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRS
ZWcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc2MDAsNiArNzYwNiw3IEBACiAJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3
IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzN0FEODNEMURBNDkyODYwMEYzRDQxMiAvKiBET01KSVRSZWcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzkyQzhBMUI0NjE4ODQw
MDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIx
NjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODQyOCw2ICs4NDM1LDcgQEAKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMg
LyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8q
IEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1
MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0MxREE0OTI4NjAw
RjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VmZmVjdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAppbmRl
eCBjMDQ3NDhmNmEzODczNTBhMDMxMDMxZTNiYzFiMDUyOTA1YmU5Y2E5Li5iZWM0Nzg2NThiZGU5
Y2YyOTdkOTBlMmNlYWI4NmUxMjJhMTczYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFZmZlY3RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5oCkBAIC03OCw2ICs3OCwxNSBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEVmZmVjdHMgZm9yQ2hlY2soKQorICAgIHsK
KyAgICAgICAgRWZmZWN0cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0g
dHJ1ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGluZyBhZnRlciBl
eGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxNjFhY2VkNzJiYTY2YjE4MTdhNWYz
YTQ3OWJiYjkzMzEyZGNhYzg5Li5hMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTQsOSArNjE0LDcg
QEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVja1N1YjoKICAg
ICBjYXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJlc3VsdC5leGl0c1Np
ZGV3YXlzID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGlu
ZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCi0gICAgICAg
IHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAgICBj
YXNlIFNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDcxOWQ4ZjI3MjgzZjVkMTIzY2U1NzcxNTQ1ZTQ2OWJmODFhZmYyMjcu
LjI0MjUyOTJhZmY2MDU5YWFhNzhjYjg0OTdkMTg2YjliNTA0MmU2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMzUzLDYg
KzM1MywxMiBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSB0eXBlKQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CisgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU1N0cmluZzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKKworICAgIGlm
IChjbGFzc0luZm8gPT0gU3ltYm9sOjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OworCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjRmluYWxPYmplY3Q7CiAgICAgCkBAIC0zODUsNiArMzkxLDkgQEAgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQogICAgIAogICAgIGlmIChpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisKKyAgICBpZiAoY2xhc3NJbmZvLT5p
c1N1YkNsYXNzT2YoSlNBcnJheTo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVk
QXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTT2JqZWN0Ojpp
bmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAppbmRleCA1OTcyODE2
NjJlOGFkMWZmYWE4NTU2MjJjNzA1OWE0NzRiMmY0NDZlLi5iY2Y2ZDdlNzMxZmNkN2UwNTM1M2Fm
ZDY5YjhiOWE0MzkzZmJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApAQCAtMTM0LDEwICsxMzQsMTcgQEAgY2xhc3MgQWJz
dHJhY3RJbnRlcnByZXRlciB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJCeVZhbHVlKGZvck5vZGUo
bm9kZSksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhUIG5vZGUsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckNsYXNzSW5mbyhmb3JO
b2RlKG5vZGUpLCBjbGFzc0luZm8pOworICAgIH0KKwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmls
dGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBh
ZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJy
YXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZhbHVlKTsKKyAgICBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhBYnN0cmFjdFZhbHVlJiwgY29uc3QgQ2xh
c3NJbmZvKik7CiAgICAgCiAgICAgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKCkgeyByZXR1cm4g
bV9waGlDaGlsZHJlbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGNlNmJl
ZjlhZDNmZDA1NzlmZTVhYTllMDFhODRlNzNiZTY4ZjZkNGEuLjlkZmM2M2RjNjhhMThkMTQ0ZGNj
NGU1NzdkN2YxNDY3YmU2YTdjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJERkdBYnN0cmFj
dEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc2hNYXBJbXBsLmgiCkBAIC0yMjYzLDYgKzIyNjQsMjggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuY2xlYXIoKTsgLy8gVGhlIHJlc3VsdCBpcyBub3QgYSBKUyB2YWx1ZS4KICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICBKU1ZhbHVlIGNvbnN0YW50
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbnN0YW50
KSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxs
KCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNvbnN0
YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3ViQ2xhc3NPZihub2RlLT5jbGFz
c0luZm8oKSkpCisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
CisgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNr
QXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTMwNTEsNiArMzA3NCwxNiBAQCBGaWx0
cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0
ZXJCeVZhbHVlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KK0Zp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZp
bHRlckNsYXNzSW5mbygKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pCit7CisgICAgaWYgKHZhbHVlLmZpbHRlckNsYXNzSW5mbyhtX2dyYXBoLCBj
bGFzc0luZm8pID09IEZpbHRyYXRpb25PSykKKyAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsK
KyAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgIHJldHVybiBDb250cmFkaWN0aW9u
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZm
ZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsK
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IGMz
ZWZkYWNlZTc4ZDZhY2VlZjY1YTk4MzI4NDFiZDZmNDFiY2E0N2YuLmJmMWU0OTkwMDdhOThjMjRi
MGE5NDkzZjAwNzM5MWNiNmZjYTQ4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMzA2LDYgKzMwNiwyMSBAQCBGaWx0cmF0aW9uUmVz
dWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVz
KQogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KCk7CiB9CiAKK0ZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiBncmFwaCwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIEZp
bHRyYXRpb25PSzsKKworICAgIG1fdHlwZSAmPSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY2xh
c3NJbmZvKTsKKyAgICBtX3N0cnVjdHVyZS5maWx0ZXJDbGFzc0luZm8oY2xhc3NJbmZvKTsKKwor
ICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOworICAgIGZpbHRlclZhbHVlQnlUeXBlKCk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZUNs
YXJpdHkoZ3JhcGgpOworfQorCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRl
cihTcGVjdWxhdGVkVHlwZSB0eXBlKQogewogICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAppbmRl
eCAzMmViMGYxOWM1YzkxZjY3NzE4ZTczZDBhN2MzOGUxOWZjZjI4M2VmLi44YTkxMDE0MDc1NjNh
YjEzZWEwMGQ1YzZiY2U4ODRjNTkyODAzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7CiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1
ZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoY29uc3QgQWJzdHJhY3RWYWx1ZSYpOwor
ICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiwgY29uc3QgQ2xhc3NJ
bmZvKik7CiAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVy
cmVkVHlwZTo6RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwYjVmYjk1ZDk1N2IxMmE0MzgxY2ZmYjli
NmMyYTRlYjMyYWIzYTRkLi45OGJhMzdiNmU4ZTkyODA0ZmUzYmEyNjFkNTQxOWZjYzhlMmNlMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3Vs
YXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsK
ICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvciYsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOworICAgIGJvb2wgaGFu
ZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHByZXNlbmNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25v
d24gb2Zmc2V0IGFuZCBzdHJ1Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2
YWxpZGl0eSBvZiB0aGUgY29uZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlm
IGl0IGVuY291bnRlcnMgYSBjb250cmFkaWN0aW9uLgpAQCAtMjY1OSw2ICsyNjYwLDIwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgR2V0QnlJZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
ID0gdmFyaWFudC5kb21KSVQoKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oZG9t
SklUKSwgT3BJbmZvKGRvbUpJVC0+dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOworICAgIE5v
ZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7
CisgICAgYWRkVmFyQXJnQ2hpbGQoZ2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRo
aXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJ
bmZvKHByZWRpY3Rpb24pKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1
bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCkBAIC0zMzI0LDYgKzMzMzksMTQgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlv
bigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOwogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNz
VHlwZTo6R2V0IHx8ICF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkpOworCisgICAgaWYgKHZhcmlh
bnQuZG9tSklUKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlv
bk9wZXJhbmQsIHZhcmlhbnQsIGJhc2UsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlh
bnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLCBsb2FkZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMWU1NTVmZTFh
ZmYyZmUzMWFlODk1Y2FmNTk4ZTZmYzkzZWUzYWY4ZC4uNTA0M2M0ZDE0MGY1NDJlZWUyYTU0MmI0
ZTA5Mzg0ZTAyNzgzMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTg4NSw2ICs4ODUsMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihCdXR0ZXJmbHlMb2MsIEpTT2JqZWN0X2J1dHRlcmZseSwgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNh
c2UgQ2hlY2tET006CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZv
KCkpKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICByZWFk
KFdvcmxkKTsKKyAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFk
KEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVkNjMyOWQyOGY1ZmYzYmY2NWEx
Y2ZjYTQ3YWE2Nzc0MTY5MzVlMmYuLmQ5YmM3ZTcwOWExMWNkNGUzZDE5YmViNWViOGUyMDAxYmYz
YTBmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNTgsNiArMTU4LDI4IEBAIGNsYXNzIENvbnN0YW50Rm9s
ZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tET006
IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXND
ZWxsKCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNz
SW5mbygpKSkgeworICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5k
ZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6IHsKICAgICAgICAgICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCmluZGV4IDMxODU1OTZjZjkzM2NlMDg5NjEyYmM5YTQ1N2UxYjJkNTc0NmM3NTkuLjU3
MjZjYjVlNmU3YTQyNjdiZTcyZTY3ZGNhMzdjYjk3YTdjMDFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxs
RE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBmZDZkZDU0NGU4MDI0OWQ4MmRiMTAyYTA2NjQ5YzY5
MDY1OWE4OTY5Li40MTc4Nzk4ZmNkYjQzOWM4M2I3ZDQwOWZmNDdlY2QyNTdhNTZiMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2OTAsNiAr
MTY5MCwxNSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOyAvLyBHbG9iYWxPYmplY3QuCisgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOyAvLyBE
T00uCisgICAgICAgICAgICBicmVhazsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
Ly8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3Jn
ZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDk5YTgyYzljZDk2YWE3
OGMzYjA0MGVjNTRlZDllZTEyZjAxZGU4MjYuLjQyMzdhNTI2MjQ5OTIxZDAzZmNiYTZmODhiYjA2
NTZhN2U2YjE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ2LDYg
KzE0NDYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4
cDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgorICAgICAgICBjYXNlIENhbGxET006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMTIsNyArMjMx
MywyOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNCYXNpY0Jsb2NrTG9jYXRp
b24oKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxCYXNpY0Jsb2NrTG9jYXRpb24qPigp
OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzRE9NSklUKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvcCgpID09IENoZWNrRE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9CisK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNET01KSVQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkdldHRl
clNldHRlcio+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNDbGFzc0luZm8oKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tET007CisgICAgfQorCisgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5h
czxjb25zdCBDbGFzc0luZm8qPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CkBAIC0yMzky
LDYgKzI0MTQsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAg
ICAgICAgICAgICB1LnBvaW50ZXIgPSBwb2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5m
b1dyYXBwZXIoY29uc3Qgdm9pZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVy
OworICAgICAgICB9CiAgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBp
bnQzMikKICAgICAgICAgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNDE1LDEyICsy
NDQyLDIzIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3Jh
cHBlciYgb3BlcmF0b3I9KGNvbnN0IHZvaWQqIGNvbnN0UG9pbnRlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0
UG9pbnRlcjsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29u
c3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwg
VD46OnR5cGUKKyAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LnBvaW50
ZXIpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBB
TFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlICYmIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odS5jb25zdFBvaW50ZXIpOworICAgICAgICB9
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1
dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCwgVD46OnR5cGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHUuaW50MzI7CkBAIC0yNDM0LDYgKzI0NzIsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90IGludDY0
OwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNv
bnN0UG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgIH07CiAgICAgT3BJbmZvV3JhcHBlciBtX29w
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNWFkYTg5
YmMxMzhhNjUwNDBhZWVhOWQyZmE3ZGEzZjA2MGQzMWU4Li45YzNmYjkwZWEwNmIwY2Y5MDU4ZTUx
NjYwZTViNThmMjVmN2MyNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0zOTYsNiArMzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhHZXRNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvYWRG
cm9tSlNNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKElzTm9uRW1wdHlNYXBC
dWNrZXQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgXAorICAgIC8qIE5vZGVzIGZvciBET00g
SklUICovXAorICAgIG1hY3JvKENoZWNrRE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNp
bmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVl
bnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFz
aykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1
MmQzYjVkOGVmNGYzM2UwOWI1ZDdlNWNiZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3
ZjllYzQ3MDZkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQz
LDYgKzQzLDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2Vu
ZGlmCiAgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAg
ICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAg
IHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ1OTQx
OGFiNzEyMWY3MDE4YTlkYzIzM2M3MGUwZmNiZWU3ZWQ0M2IuLmVhOTIxNTYyNWQxZTlmZjAyZGUw
N2NlNzA5NjUzY2M5NTdhNGM1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyAr
Njk5LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRv
TnVtYmVyOiB7CisgICAgICAgIGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGlj
dGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MTksNiArODIwLDkg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
YWJlNjcyYTg5NGZjZWY0YzFkOGFjMDM5MWVhZmFhZDZmYzdjYTlmOC4uYzdlMWI2YjczZGI4MTcx
MGEyOGE4OGRiMzFkNTJkZjZlZTMwZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2Fz
ZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAg
ICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA2YjY0NDU0NDFiMTE1YjJmMjdkNTlhOTYzZGJlNTgwZGRmZjNlMGRl
Li5hM2RlYzVkMTQ2OWQ4ZDQ0Y2VhMzRlOTdmNjFlMTE2MWM2YTIwNDk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgs
OCBAQAogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVy
YXRvci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBA
IC03MDU3LDYgKzcwNTksNzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRl
cmZseShOb2RlKiBub2RlKQogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
IAorc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3Rv
cjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRlcnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZl
Y3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gsIERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnM7ICsraSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7Cisg
ICAgICAgIGdwU2NyYXRjaC5hcHBlbmQodGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xk
ZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBvcmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7Cisg
ICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFw
cGVuZCh0ZW1wb3JhcnkuZnByKCkpOworICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUo
dGVtcG9yYXJ5KSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2Fs
bERPTShOb2RlKiBub2RlKQoreworICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworICAgIEFTU0VSVChwYXRjaHBvaW50KTsK
KworICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBmcFNj
cmF0Y2g7CisgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgLy8gRklYTUU6IHBh
dGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIg
cmVnaXN0ZXIuCisgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBj
bG9iYmVyIGluZm9ybWF0aW9uIGlzIG5pY2UuCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xv
YmFsT2JqZWN0KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCAxKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisg
ICAgcmVncy5hcHBlbmQocmVzdWx0LnJlZ3MoKSk7CisgICAgcmVncy5hcHBlbmQoZ2xvYmFsT2Jq
ZWN0LmdwcigpKTsKKyAgICByZWdzLmFwcGVuZChiYXNlLmdwcigpKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHJlZ3MuYXBwZW5kKHN0YXRpY19jYXN0PEdQUlJlZz4oR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CisgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPEdQUlRlbXBv
cmFyeT4gZ3BUZW1wcmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmll
czsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BU
ZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50
LmdldCgpKTsKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgcGFyYW1zKFdURk1vdmUocmVn
cyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICBwYXRjaHBv
aW50LT5nZW5lcmF0b3IoKS0+cnVuKG1faml0LCBwYXJhbXMpOworICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LnJlZ3MoKSwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
aGVja0RPTShOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBXZSBjYW4gYWRkIHRoZSBmYWxs
YmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0IGlubGluZXMganNEeW5hbWljQ2FzdCB0aGluZ3MgaGVy
ZS4KKyAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gbm9kZS0+ZG9tSklU
KCktPmNoZWNrRE9NKCk7CisKKyAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgVmVj
dG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICByZWdzLmFwcGVuZChiYXNlR1BSKTsK
KworICAgIFZlY3RvcjxHUFJUZW1wb3Jhcnk+IGdwVGVtcHJhcmllczsKKyAgICBWZWN0b3I8RlBS
VGVtcG9yYXJ5PiBmcFRlbXByYXJpZXM7CisgICAgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNG
b3JQYXRjaHBvaW50KHRoaXMsIGdwVGVtcHJhcmllcywgZnBUZW1wcmFyaWVzLCBncFNjcmF0Y2gs
IGZwU2NyYXRjaCwgcGF0Y2hwb2ludC5nZXQoKSk7CisKKyAgICBET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMgcGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShm
cFNjcmF0Y2gpKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9IHBh
dGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4obV9qaXQsIHBhcmFtcyk7CisgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIGZhaWx1cmVDYXNlcyk7CisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6dGVtcG9yYXJ5UmVnaXN0ZXJGb3JQdXRCeVZhbChHUFJUZW1w
b3JhcnkmIHRlbXBvcmFyeSwgQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5
VmFsV2lsbE5lZWRFeHRyYVJlZ2lzdGVyKGFycmF5TW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMWRhYjkyMTVjMGExYWNhNDQzNTYz
N2IxMzI2MWFhYTcyYzU2MjJlZi4uYTdkZWIyNmJjZTkxYTk2YzdmNjM0ODkzYTBiOGQ1YTFlNGIz
YTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMjUzOCw2ICsyNTM4LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQg
Y29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0
ZXJmbHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNhbGxET00oTm9kZSopOworICAgIHZvaWQg
Y29tcGlsZUNoZWNrRE9NKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJhc2VPcGVyYW5kVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlPcGVy
YW5kVHlwZSwgdHlwZW5hbWUgVmFsdWVPcGVyYW5kVHlwZSwgdHlwZW5hbWUgVGFnVHlwZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDU4ODQ2Mzg1ODE3OWQ5MGI5Y2I2NTQxZTQ2ZDNkZWI5MmEwMmIwZmEuLmNiZjZl
MjQwOWVmYjcwNWZhZjRjZDFlMWYwYWU2YTA4MGMyMGMwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTQzMCw2
ICs1NDMwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxl
Q2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrRE9NOgorICAg
ICAgICBjb21waWxlQ2hlY2tET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgdW5yZWFjaGFibGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggOTZhN2RhZjBiZjNiOGYzOThhMGIzY2E1ODUzMjY1OTBlMDNjYTgwZC4uYjM3YTI0N2U2
ZTI0M2NhYzIwZmI5NjU4MjViYzE4MzI3ZTMwNzYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NTYxLDYgKzU1NjEsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICBjb21waWxlQ2hlY2tET00obm9kZSk7Cisg
ICAgICAgIGJyZWFrOworCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNhbGxUaWVy
VXAgPSBtX2ppdC5icmFuY2hBZGQzMigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCmluZGV4IDdhODIzZWU4NmNhOTNh
ZGFiNDYzMzRkNWRlZjIyNjE2ZTc3MmIwMzguLjg4ZDU3NzU2OWFmOWIwM2RjOThkNGNjYzRiN2Y3
YzRhNzEyODIzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcApAQCAtMjU4LDYgKzI1OCwxNSBAQCB2b2lkIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAg
ICAgICAgfSk7CiB9CiAKK3ZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJ
bmZvU2xvdyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK3sKKyAgICBBU1NFUlQoIWlzVG9w
KCkpOworICAgIG1fc2V0LmdlbmVyaWNGaWx0ZXIoCisgICAgICAgIFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5p
c1N1YkNsYXNzT2YoY2xhc3NJbmZvKTsKKyAgICAgICAgfSk7Cit9CisKIGJvb2wgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzSW5maW5pdGUoKSkKQEAgLTMxOSw2ICszMjgsMTkgQEAgYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhl
cikgY29uc3QKICAgICByZXR1cm4gb3ZlcmxhcHMob3RoZXIubV9zZXQpOwogfQogCitib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykgY29uc3QKK3sKKyAgICBpZiAoaXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBOb3RlIHRhaHQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhl
IHN0cnVjdHVyZSBzZXQgaXMgZW1wdHkuCisgICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA6IG1fc2V0KSB7CisgICAgICAgIGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNT
dWJDbGFzc09mKGNsYXNzSW5mbykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmVxdWFs
c1Nsb3coY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1fc2V0Lm1fcG9pbnRlciAhPSBvdGhlci5tX3NldC5tX3BvaW50ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
aAppbmRleCBjYTk0YTc5Yjc0N2JkOTEyNjhiMTJjZTJkMDg0MjE3ODBmNzYyOTYzLi41MWY3OTM3
ZDU1MTgxZjVmZjZjNTZjZjQwMGVlNTk0NWEzOTI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaApAQCAtMTYzLDYg
KzE2MywxMiBAQCBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlz
TmVpdGhlckNsZWFyTm9yVG9wKCkpCiAgICAgICAgICAgICBmaWx0ZXJTbG93KHR5cGUpOwogICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJDbGFzc0luZm8oY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCisgICAgeworICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3Ao
KSkKKyAgICAgICAgICAgIGZpbHRlckNsYXNzSW5mb1Nsb3coY2xhc3NJbmZvKTsKKyAgICB9CiAg
ICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtMjMxLDYgKzIzNyw4IEBAIGNsYXNz
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogICAgIAogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
U3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViQ2xhc3NP
Zihjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJl
bmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OwogICAgIApAQCAtMjQxLDYgKzI0
OSw3IEBAIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQgPSAyOwogICAgIAogICAgIHZvaWQg
ZmlsdGVyU2xvdyhTcGVjdWxhdGVkVHlwZSB0eXBlKTsKKyAgICB2b2lkIGZpbHRlckNsYXNzSW5m
b1Nsb3coY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgYm9vbCBtZXJnZVNsb3coY29uc3QgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpOwogICAgIAogICAgIGJvb2wgZXF1YWxzU2xvdyhjb25z
dCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyMzg2MzkwMDk2MGE2OGZkZTA4Y2Y0YmIwNjFkMjQ3NDVmNzFiY2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiRE9NSklUUmVnLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCitjbGFzcyBQ
YXRjaHBvaW50UGFyYW1zIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMp
OworcHVibGljOgorICAgIHZpcnR1YWwgflBhdGNocG9pbnRQYXJhbXMoKSB7IH0KKworICAgIHVu
c2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlZ3Muc2l6ZSgpOyB9CisgICAgY29uc3Qg
UmVnJiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9yZWdzW2luZGV4XTsgfQor
ICAgIGNvbnN0IFJlZyYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
YXQoaW5kZXgpOyB9CisKKyAgICBHUFJSZWcgZ3BTY3JhdGNoKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2dwU2NyYXRjaFtpbmRleF07IH0KKyAgICBGUFJSZWcgZnBTY3JhdGNoKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2ZwU2NyYXRjaFtpbmRleF07IH0KKworICAg
IFBhdGNocG9pbnRQYXJhbXMoVmVjdG9yPFJlZz4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdw
U2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogbV9yZWdzKFdU
Rk1vdmUocmVncykpCisgICAgICAgICwgbV9ncFNjcmF0Y2goV1RGTW92ZShncFNjcmF0Y2gpKQor
ICAgICAgICAsIG1fZnBTY3JhdGNoKFdURk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorCisgICAgVmVjdG9yPFJlZz4gbV9yZWdzOworICAgIFZlY3RvcjxHUFJSZWc+
IG1fZ3BTY3JhdGNoOworICAgIFZlY3RvcjxGUFJSZWc+IG1fZnBTY3JhdGNoOworfTsKKworfSB9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRSZWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWYyMzg2NjM1NmVjZjA3ZWIyOTM1YjY0YmYzMGYzNjc3ZGI1M2Q1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUmVnLmgKQEAgLTAs
MCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVnLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKworLy8gSXQgaXMgcXVpdGUgdW5mb3J0dW5hdGUgdGhhdCAzMiBiaXQgZW52aXJvbm1lbnQg
ZXhpc3RzIG9uIERGRyEgVGhpcyBtZWFucyB0aGF0IEpTVmFsdWVSZWdzIGNvbnRhaW5zIDIgcmVn
aXN0ZXJzCisvLyBpbiBzdWNoIGFuIGVudmlyb25tZW50LiBJZiB3ZSB1c2UgR1BSUmVnIGFuZCBG
UFJSZWcgaW4gRE9NSklUUGF0Y2hwb2ludFBhcmFtcywgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyBt
YXkgY29udGFpbgorLy8gZGlmZmVyZW50IG51bWJlciBvZiByZWdpc3RlcnMgaW4gMzJiaXQgYW5k
IDY0Yml0IGVudmlyb25tZW50cyB3aGVuIHdlIHBhc3MgSlNWYWx1ZVJlZ3MsIGl0IGlzIGNvbmZ1
c2luZy4KKy8vIFRoZXJlZm9yZSwgd2UgaW50cm9kdWNlIGFuIGFic3RyYWN0aW9uIHRoYXQgRE9N
SklUOjpSZWcsIHdoaWNoIGlzIGEgcG9seW1vcnBoaWMgcmVnaXN0ZXIgY2xhc3MuIEl0IGNhbiBy
ZWZlciBGUFJSZWcsCisvLyBHUFJSZWcsIGFuZCAiSlNWYWx1ZVJlZ3MiLiBOb3RlIHRoYXQgaXNH
UFIoKSB3aWxsIHJldHVybiBmYWxzZSBpZiB0aGUgdGFyZ2V0IFJlZyBpcyAiSlNWYWx1ZVJlZ3Mi
IGV2ZW4gaWYgdGhlCisvLyBlbnZpcm9ubWVudCBpcyA2NGJpdC4KK2NsYXNzIFJlZyB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEdQUiA9IDAsCisg
ICAgICAgIEZQUiA9IDEsCisgICAgICAgIEpTVmFsdWUgPSAyLAorICAgIH07CisKKyAgICBSZWco
R1BSUmVnIHJlZykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9CisKKyAg
ICBSZWcoRlBSUmVnIHJlZykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVnKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWcoSlNWYWx1ZVJlZ3MgcmVncykKKyAgICAgICAgOiBtX3ZhcmlhbnQocmVncykK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0dQUigpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFu
dC5pbmRleCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUeXBlOjpHUFIpOyB9CisgICAgYm9v
bCBpc0ZQUigpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudC5pbmRleCgpID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUeXBlOjpGUFIpOyB9CisgICAgYm9vbCBpc0pTVmFsdWVSZWdzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6
OkpTVmFsdWUpOyB9CisKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc0dQUigpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8R1BS
UmVnPihtX3ZhcmlhbnQpOworICAgIH0KKyAgICBGUFJSZWcgZnByKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc0ZQUigpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFs
OjpnZXQ8RlBSUmVnPihtX3ZhcmlhbnQpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyBqc1ZhbHVl
UmVncygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNKU1ZhbHVlUmVncygpKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8SlNWYWx1ZVJlZ3M+KG1fdmFyaWFu
dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PEdQ
UlJlZywgRlBSUmVnLCBKU1ZhbHVlUmVncz4gbV92YXJpYW50OworfTsKKworfSB9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDNjZWY5OTgzNTM1N2NmY2M0Y2M5ZDdkMmJiMTYyY2Y5OGIwZmYyOGUuLjBhN2MwNTA2YWU5MTYw
NDc3NTI1MzdiMjMxMWQxZTNmZjdjZTI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2NSw2ICsyNjUsOCBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVTdHJpY3RF
cToKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29y
UHJvcGVydHk6CisgICAgY2FzZSBDaGVja0RPTToKKyAgICBjYXNlIENhbGxET006CiAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyNWRkNjY3ZjVkODUzZmM5N2UzM2Y2
MGZlOTIxYTMwNDE1Y2M1NmQ0Li5iODVhYjdjYjYyZGRjYTBjMmM3ZTQzMjk5NjAxMTk3NmMxZTE1
NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIK
ICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAi
REZHT1NSRXhpdEZ1enouaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVk
ZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJGVExB
dmFpbGFibGVSZWNvdmVyeS5oIgpAQCAtMTA0Myw2ICsxMDQ1LDEyIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgICAgICBjb21waWxlVW5y
ZWFjaGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNrRE9NOgor
ICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgY29tcGlsZUNhbGxET00oKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExv
b3BIaW50OgpAQCAtODY1NSw2ICs4NjYzLDk0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIAogICAgICAgICBjcmFzaCgpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNoZWNrRE9N
KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKworICAgICAgICBSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUt
PmRvbUpJVCgpLT5jaGVja0RPTSgpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihjZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJz
OworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlT3Jp
Z2luIG9yaWdpbiA9IG1fb3JpZ2luOworICAgICAgICB1bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRP
ZmZzZXQgPSBwYXRjaHBvaW50LT5udW1DaGlsZHJlbigpOworICAgICAgICBPU1JFeGl0RGVzY3Jp
cHRvciogZXhpdERlc2NyaXB0b3IgPSBhcHBlbmRPU1JFeGl0RGVzY3JpcHRvcihqc1ZhbHVlVmFs
dWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kQ29sZEFueXMoYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBvcmlnaW4u
Zm9yRXhpdCwganNWYWx1ZVZhbHVlKGNlbGwpKSk7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3Jh
dGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKworICAgICAg
ICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1swXS5ncHIoKSk7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7
ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3Jh
dGNoKGkpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21K
SVQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBmcFNj
cmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAgUmVm
UHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExh
dGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2luLCBwYXJhbXMsIG9zckV4aXRBcmd1bWVudE9mZnNl
dCk7CisKKyAgICAgICAgICAgICAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFy
YW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gp
KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcyA9
IGRvbUpJVC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIGRvbUpJVFBhcmFtcyk7CisKKyAgICAgICAg
ICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlQ2FzZXMsIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihoYW5kbGUtPmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNo
ZWNrKCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlQ2FsbERPTSgpCisgICAgeworICAgICAg
ICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMCkpOworICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpKTsKKworICAgICAgICBSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50PiBkb21K
SVQgPSBtX25vZGUtPmRvbUpJVCgpLT5jYWxsRE9NKCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnM7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+
bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOworCisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4g
Z3BTY3JhdGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpSZWc+IHJlZ3M7CisKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2Fu
IHJldXNlICJiYXNlIiByZWdpc3Rlci4KKyAgICAgICAgICAgICAgICAvLyBUZWFjaGluZyBERkcg
YWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAg
ICAgICAgICAgICAgICByZWdzLmFwcGVuZChKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVn
cy5hcHBlbmQocGFyYW1zWzNdLmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChw
YXJhbXNbNF0uZ3ByKCkpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAg
ICAgIGdwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmdwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3Rl
cnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZnBTY3JhdGNoLmFwcGVuZChwYXJhbXMuZnBT
Y3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJh
bXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAgICAgRE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zIGRvbUpJVFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1v
dmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgZG9tSklULT5nZW5lcmF0b3IoKS0+cnVu
KGppdCwgZG9tSklUUGFyYW1zKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgpOworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNo
cG9pbnQpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBhcmVFcU9iamVjdE9yT3RoZXJUb09i
amVjdChFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDc2OTQ5MWEzNjdiYTVmZjE0
MGI1Mzg3YjhiNWZjMmI3ZjhjNmM2ODAuLmM2ZDhiYzNlZGVjNWUyMzRjZWZlNzI3OGRiZWE1ODRh
MjdiNzNkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aApAQCAtMTIwOSw5ICsxMjA5LDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1h
bEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07CiAgICAgZW51bSBFeGNl
cHRpb25KdW1wV2lkdGggeyBOb3JtYWxKdW1wV2lkdGgsIEZhckp1bXBXaWR0aCB9OwotICAgIEp1
bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEp1bXAgZW1pdEV4
Y2VwdGlvbkNoZWNrKAogICAgICAgICBFeGNlcHRpb25DaGVja0tpbmQgPSBOb3JtYWxFeGNlcHRp
b25DaGVjaywgRXhjZXB0aW9uSnVtcFdpZHRoID0gTm9ybWFsSnVtcFdpZHRoKTsKLSAgICBKdW1w
IGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKCk7CiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfQ09VTlRFUlMpCiAgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVy
JiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVu
dCA9IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGYxNTAwMGIzODIzMTIxYzczNmIyNmJkNzdh
NDg4MjQ3OWE1YmRjN2UuLmE2OWZkNWQyNzAxMTAxZjBlMTE4MTcxY2JhMzkzMmI1NThiN2ZmYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQnV0dGVy
Zmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRp
b24uaCIKKyNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgogI2luY2x1
ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApA
QCAtNTM3LDEyICs1NDEsMTA4IEBAIGNsYXNzIFNpbXBsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2hpZGRlblZhbHVl
OwogfTsKIAorY2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIERPTUpJVEdldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVEdldHRlciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01KSVRHZXR0ZXIqIGdldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlcj4odm0uaGVhcCwgc2l6
ZW9mKERPTUpJVEdldHRlcikpKSBET01KSVRHZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gZ2V0dGVyOworICAg
IH0KKworICAgIGludDMyX3QgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWU7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUR2V0dGVyRE9NSklUIDogcHVibGljIERP
TUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUpJVEdldHRlckRP
TUpJVCgpCisgICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdldHRlcjo6
Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVRHZXR0ZXI6OmluZm8oKSkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBv
dmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAgICAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFt
c1swXS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmpl
Y3RUeXBlICsgMSkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0K
KworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMg
PSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0g
cGFyYW1zWzJdLmdwcigpOworCisgICAgICAgICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoZG9tLCBET01KSVRHZXR0ZXI6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdHMu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBqaXQuYm94SW50MzIocmVzdWx0cy5wYXls
b2FkR1BSKCksIHJlc3VsdHMpOworICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBv
aW50OworICAgICAgICB9CisgICAgfTsKKworICAgIHN0YXRpYyBET01KSVQ6OkdldHRlclNldHRl
ciogZG9tSklUR2V0dGVyR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxET01KSVRHZXR0ZXJET01KSVQ+IGdyYXBoOworICAgICAgICByZXR1cm4gJmdy
YXBoLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYWx1ZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihET01KSVRHZXR0ZXIsIG1fdmFsdWUpOyB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVQgPSBkb21KSVRHZXR0ZXJHZXR0ZXJTZXR0ZXIoKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgZG9tSklULT5nZXR0ZXIoKSwgZG9tSklULT5zZXR0ZXIoKSwgZG9tSklUKTsKKyAgICAgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Y3VzdG9tR2V0dGVyIiksIGN1c3RvbUdldHRlclNldHRlciwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3Nvcik7CisgICAgfQorCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
ICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgIERPTUpJVEdldHRlciogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV92YWx1ZSkpOworICAgIH0KKworICAgIGludDMyX3Qg
bV92YWx1ZSB7IDQyIH07Cit9OworCiAKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8g
PSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVt
ZW50KSB9OwogY29uc3QgQ2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVy
YWRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIp
IH07CiBjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKIGNvbnN0IENsYXNzSW5mbyBJbXB1
cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSW1wdXJlR2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIEN1c3Rv
bUdldHRlcjo6c19pbmZvID0geyAiQ3VzdG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShDdXN0b21HZXR0ZXIpIH07Citjb25zdCBDbGFzc0luZm8gRE9NSklU
R2V0dGVyOjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1l
QXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9i
amVjdDo6c19pbmZvID0geyAiU2ltcGxlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShTaW1wbGVPYmplY3QpIH07CiBzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQ
YXNzZWQgeyBmYWxzZSB9OwpAQCAtNTcxLDYgKzY3MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHkoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VEdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqKTsKQEAgLTg1NSw2ICs5NTYsNyBAQCBjbGFzcyBH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogCiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIs
IDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCIs
IGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQnVpbHRpbiIs
IGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbiwgMik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3Jl
YXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QsIDApOwogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJ
bXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CkBAIC0xMzU5LDYgKzE0NjEsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIERP
TUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3Ry
dWN0dXJlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3guaCBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCmluZGV4IGFk
OWQ1YzU3M2YwYmYwNWQwODNlM2I2NWIyMjI3NzViYTM0OTIxNjcuLmI2NjEzMjE5MTkxNzU4MDY4
MTRiNDZhMWQyMGEyZDE3ZDk4YWE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JveC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCkBAIC00MCw2ICs0MCwxMCBAQCBjbGFzcyBCb3gg
ewogICAgIHsKICAgICB9CiAKKyAgICBCb3goc3RkOjpudWxscHRyX3QpCisgICAgeworICAgIH0K
KwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgQm94IGNy
ZWF0ZShBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MTM2MTE4OGNjYzQyMWUwODNi
Y2EyNTQ2YzNhZDg5NGIyNjgwZTA4Li43NDkyNTgwYTQ1ZTkxMjg3ZmNkNDNkMWQ4YzE3ZWNiNTE0
ZTg5ZWM0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBpbml0aWFsIENoZWNrRE9N
IGFuZCBDYWxsRE9NIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisgICAgICAgICogc3Ry
ZXNzL2RvbWppdC1nZXR0ZXItc3VwZXItcG9seS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisKIDIwMTYt
MTAtMDMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG8t
Z2VuZXJhdGUgV0FTTU9wcy5oLCBzaGFyZSB3aXRoIHRlc3RpbmcgSlNPTiBmaWxlCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kb21qaXQtZ2V0dGVyLXBvbHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZi
OWUyN2NlOWZhM2Y0MjBjYWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rv
bWppdC1nZXR0ZXItcG9seS5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2
YXIgZG9taml0MSA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOwordmFyIGRvbWppdDIgPSBj
cmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sK
KyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKChp
ICYgMHgxKSA/IGRvbWppdDEgOiBkb21qaXQyKSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBj
dXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFj
Y2Vzcyhkb21qaXQxKSwgODQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdl
dHRlci1zdXBlci1wb2x5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1w
b2x5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0ODdkZDNiNzRhMTg0NzEwMmQzMzY0OTkwNjMyZDI0YWNiZTM3
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVy
LXBvbHkuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdHMg
PSBbXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgZG9taml0cy5wdXNoKGNy
ZWF0ZURPTUpJVEdldHRlck9iamVjdCgpKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sK
KyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGRvbWppdHMubGVuZ3RoOyArK2opCisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXRz
W2pdKSwgODQpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhMjg4NDJh
NTZlMDZmNDQ2MGY3ODU0OTVkZjU1MDlmN2I5YjMxZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsK
K30KKwordmFyIGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOworCitmdW5jdGlv
biBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsgZG9t
aml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAg
ICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0
b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNz
KGRvbWppdCksIDg0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290683</attachid>
            <date>2016-10-04 19:05:45 -0700</date>
            <delta_ts>2016-10-04 23:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004190234.patch</filename>
            <type>text/plain</type>
            <size>63887</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi4zZTFhMGMxYzgwZjAzYTNl
ZDYyNTBjM2U4ZDFkZTIyYTI3ZjU3NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzcgQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlckNsYXNzSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZURPTUpJVEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0
YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNET01KSVQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJ
VCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Ok9wSW5mb1dyYXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5m
b1dyYXBwZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjphbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzT2YpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZmlsdGVyQ2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpmaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6flBhdGNocG9p
bnRQYXJhbXMpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OnNpemUp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmF0KToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpncFNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmZwU2NyYXRjaCk6CisgICAgICAgIChKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtczo6UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgICogZG9taml0
L0RPTUpJVFJlZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OlJlZyk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0dQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjppc0ZQUik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjppc0pTVmFsdWVSZWdzKToK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omdwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
UmVnOjpmcHIpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6anNWYWx1ZVJlZ3MpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja0RPTSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRH
ZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6RE9NSklUR2V0dGVyRE9NSklUOjpET01KSVRHZXR0ZXJET01KSVQpOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmRvbUpJVEdldHRlckdldHRlclNldHRlcik6Cisg
ICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0
ZXI6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0x
MC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBS
RUdSRVNTSU9OIChyMjA2Nzc4KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hh
a3JhQ29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGlu
ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggNTlhMWE1NzdjMDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3
NTY3MjQ1NWI4ZThkZjI1NjVjYThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0JveC5oOgorICAgICAgICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5
Ym9hcmRFdmVudC5rZXkgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRjNDQyNmViZWNiODBlZmRiZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLmI2OTdlNjE3YzJhOTkz
MDI3MTRhOWI3M2I5YjFiYmQ2NGQyMTMxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMDk4LDYgKzIwOTgsOCBAQAogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
Nzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUz
Nzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0Qx
REE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJl
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOUQ0NUY1MUQzOTAw
NTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQzOTcsNiAr
NDM5OSw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1
bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzdBRDgzQTFEQTQ5
MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUmVnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5
emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNB
bmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5RDlEODQx
RDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxODMsNiArNzE4Nyw4IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVy
U2V0dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNo
cG9pbnQuaCAqLywKKwkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hw
b2ludFBhcmFtcy5oICovLAorCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRS
ZWcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc2MDAsNiArNzYwNiw3IEBACiAJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3
IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzN0FEODNEMURBNDkyODYwMEYzRDQxMiAvKiBET01KSVRSZWcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzkyQzhBMUI0NjE4ODQw
MDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIx
NjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODQyOCw2ICs4NDM1LDcgQEAKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMg
LyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8q
IEpJVE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1
MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0MxREE0OTI4NjAw
RjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VmZmVjdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAppbmRl
eCBjMDQ3NDhmNmEzODczNTBhMDMxMDMxZTNiYzFiMDUyOTA1YmU5Y2E5Li5iZWM0Nzg2NThiZGU5
Y2YyOTdkOTBlMmNlYWI4NmUxMjJhMTczYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFZmZlY3RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5oCkBAIC03OCw2ICs3OCwxNSBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEVmZmVjdHMgZm9yQ2hlY2soKQorICAgIHsK
KyAgICAgICAgRWZmZWN0cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0g
dHJ1ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGluZyBhZnRlciBl
eGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxNjFhY2VkNzJiYTY2YjE4MTdhNWYz
YTQ3OWJiYjkzMzEyZGNhYzg5Li5hMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTQsOSArNjE0LDcg
QEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVja1N1YjoKICAg
ICBjYXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJlc3VsdC5leGl0c1Np
ZGV3YXlzID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGlu
ZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCi0gICAgICAg
IHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAgICBj
YXNlIFNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDcxOWQ4ZjI3MjgzZjVkMTIzY2U1NzcxNTQ1ZTQ2OWJmODFhZmYyMjcu
LjI0MjUyOTJhZmY2MDU5YWFhNzhjYjg0OTdkMTg2YjliNTA0MmU2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMzUzLDYg
KzM1MywxMiBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSB0eXBlKQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CisgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU1N0cmluZzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKKworICAgIGlm
IChjbGFzc0luZm8gPT0gU3ltYm9sOjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OworCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjRmluYWxPYmplY3Q7CiAgICAgCkBAIC0zODUsNiArMzkxLDkgQEAgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQogICAgIAogICAgIGlmIChpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisKKyAgICBpZiAoY2xhc3NJbmZvLT5p
c1N1YkNsYXNzT2YoSlNBcnJheTo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVk
QXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTT2JqZWN0Ojpp
bmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAppbmRleCA1OTcyODE2
NjJlOGFkMWZmYWE4NTU2MjJjNzA1OWE0NzRiMmY0NDZlLi5iY2Y2ZDdlNzMxZmNkN2UwNTM1M2Fm
ZDY5YjhiOWE0MzkzZmJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApAQCAtMTM0LDEwICsxMzQsMTcgQEAgY2xhc3MgQWJz
dHJhY3RJbnRlcnByZXRlciB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJCeVZhbHVlKGZvck5vZGUo
bm9kZSksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhUIG5vZGUsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckNsYXNzSW5mbyhmb3JO
b2RlKG5vZGUpLCBjbGFzc0luZm8pOworICAgIH0KKwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmls
dGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBh
ZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJy
YXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZhbHVlKTsKKyAgICBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhBYnN0cmFjdFZhbHVlJiwgY29uc3QgQ2xh
c3NJbmZvKik7CiAgICAgCiAgICAgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKCkgeyByZXR1cm4g
bV9waGlDaGlsZHJlbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGNlNmJl
ZjlhZDNmZDA1NzlmZTVhYTllMDFhODRlNzNiZTY4ZjZkNGEuLjlkZmM2M2RjNjhhMThkMTQ0ZGNj
NGU1NzdkN2YxNDY3YmU2YTdjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJERkdBYnN0cmFj
dEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc2hNYXBJbXBsLmgiCkBAIC0yMjYzLDYgKzIyNjQsMjggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuY2xlYXIoKTsgLy8gVGhlIHJlc3VsdCBpcyBub3QgYSBKUyB2YWx1ZS4KICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICBKU1ZhbHVlIGNvbnN0YW50
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbnN0YW50
KSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxs
KCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNvbnN0
YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3ViQ2xhc3NPZihub2RlLT5jbGFz
c0luZm8oKSkpCisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
CisgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNr
QXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTMwNTEsNiArMzA3NCwxNiBAQCBGaWx0
cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0
ZXJCeVZhbHVlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KK0Zp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZp
bHRlckNsYXNzSW5mbygKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pCit7CisgICAgaWYgKHZhbHVlLmZpbHRlckNsYXNzSW5mbyhtX2dyYXBoLCBj
bGFzc0luZm8pID09IEZpbHRyYXRpb25PSykKKyAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsK
KyAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgIHJldHVybiBDb250cmFkaWN0aW9u
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZm
ZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsK
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IGMz
ZWZkYWNlZTc4ZDZhY2VlZjY1YTk4MzI4NDFiZDZmNDFiY2E0N2YuLmJmMWU0OTkwMDdhOThjMjRi
MGE5NDkzZjAwNzM5MWNiNmZjYTQ4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMzA2LDYgKzMwNiwyMSBAQCBGaWx0cmF0aW9uUmVz
dWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVz
KQogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KCk7CiB9CiAKK0ZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiBncmFwaCwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIEZp
bHRyYXRpb25PSzsKKworICAgIG1fdHlwZSAmPSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY2xh
c3NJbmZvKTsKKyAgICBtX3N0cnVjdHVyZS5maWx0ZXJDbGFzc0luZm8oY2xhc3NJbmZvKTsKKwor
ICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOworICAgIGZpbHRlclZhbHVlQnlUeXBlKCk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZUNs
YXJpdHkoZ3JhcGgpOworfQorCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRl
cihTcGVjdWxhdGVkVHlwZSB0eXBlKQogewogICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAppbmRl
eCAzMmViMGYxOWM1YzkxZjY3NzE4ZTczZDBhN2MzOGUxOWZjZjI4M2VmLi44YTkxMDE0MDc1NjNh
YjEzZWEwMGQ1YzZiY2U4ODRjNTkyODAzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7CiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1
ZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoY29uc3QgQWJzdHJhY3RWYWx1ZSYpOwor
ICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiwgY29uc3QgQ2xhc3NJ
bmZvKik7CiAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVy
cmVkVHlwZTo6RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwYjVmYjk1ZDk1N2IxMmE0MzgxY2ZmYjli
NmMyYTRlYjMyYWIzYTRkLi45OGJhMzdiNmU4ZTkyODA0ZmUzYmEyNjFkNTQxOWZjYzhlMmNlMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3Vs
YXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsK
ICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvciYsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOworICAgIGJvb2wgaGFu
ZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHByZXNlbmNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25v
d24gb2Zmc2V0IGFuZCBzdHJ1Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2
YWxpZGl0eSBvZiB0aGUgY29uZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlm
IGl0IGVuY291bnRlcnMgYSBjb250cmFkaWN0aW9uLgpAQCAtMjY1OSw2ICsyNjYwLDIwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgR2V0QnlJZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
ID0gdmFyaWFudC5kb21KSVQoKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oZG9t
SklUKSwgT3BJbmZvKGRvbUpJVC0+dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOworICAgIE5v
ZGUqIGdsb2JhbE9iamVjdCA9IGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7
CisgICAgYWRkVmFyQXJnQ2hpbGQoZ2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRo
aXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc05vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJ
bmZvKHByZWRpY3Rpb24pKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCiAgICAgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qIGZ1
bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCkBAIC0zMzI0LDYgKzMzMzksMTQgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlv
bigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOwogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNz
VHlwZTo6R2V0IHx8ICF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkpOworCisgICAgaWYgKHZhcmlh
bnQuZG9tSklUKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlv
bk9wZXJhbmQsIHZhcmlhbnQsIGJhc2UsIHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlh
bnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLCBsb2FkZWRWYWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMWU1NTVmZTFh
ZmYyZmUzMWFlODk1Y2FmNTk4ZTZmYzkzZWUzYWY4ZC4uNTA0M2M0ZDE0MGY1NDJlZWUyYTU0MmI0
ZTA5Mzg0ZTAyNzgzMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTg4NSw2ICs4ODUsMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihCdXR0ZXJmbHlMb2MsIEpTT2JqZWN0X2J1dHRlcmZseSwgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNh
c2UgQ2hlY2tET006CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZv
KCkpKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICByZWFk
KFdvcmxkKTsKKyAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFk
KEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDVkNjMyOWQyOGY1ZmYzYmY2NWEx
Y2ZjYTQ3YWE2Nzc0MTY5MzVlMmYuLmQ5YmM3ZTcwOWExMWNkNGUzZDE5YmViNWViOGUyMDAxYmYz
YTBmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNTgsNiArMTU4LDI4IEBAIGNsYXNzIENvbnN0YW50Rm9s
ZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tET006
IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXND
ZWxsKCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNz
SW5mbygpKSkgeworICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5k
ZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6IHsKICAgICAgICAgICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1f
Z3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCmluZGV4IDMxODU1OTZjZjkzM2NlMDg5NjEyYmM5YTQ1N2UxYjJkNTc0NmM3NTkuLjU3
MjZjYjVlNmU3YTQyNjdiZTcyZTY3ZGNhMzdjYjk3YTdjMDFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxs
RE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2Ug
R2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBmZDZkZDU0NGU4MDI0OWQ4MmRiMTAyYTA2NjQ5YzY5
MDY1OWE4OTY5Li40MTc4Nzk4ZmNkYjQzOWM4M2I3ZDQwOWZmNDdlY2QyNTdhNTZiMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2OTAsNiAr
MTY5MCwxNSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOyAvLyBHbG9iYWxPYmplY3QuCisgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOyAvLyBE
T00uCisgICAgICAgICAgICBicmVhazsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
Ly8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3Jn
ZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDk5YTgyYzljZDk2YWE3
OGMzYjA0MGVjNTRlZDllZTEyZjAxZGU4MjYuLjQyMzdhNTI2MjQ5OTIxZDAzZmNiYTZmODhiYjA2
NTZhN2U2YjE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ2LDYg
KzE0NDYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4
cDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgorICAgICAgICBjYXNlIENhbGxET006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMTIsNyArMjMx
MywyOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIEFTU0VSVChoYXNCYXNpY0Jsb2NrTG9jYXRp
b24oKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxCYXNpY0Jsb2NrTG9jYXRpb24qPigp
OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzRE9NSklUKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvcCgpID09IENoZWNrRE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9CisK
KyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNET01KSVQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkdldHRl
clNldHRlcio+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNDbGFzc0luZm8oKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tET007CisgICAgfQorCisgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5h
czxjb25zdCBDbGFzc0luZm8qPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CkBAIC0yMzky
LDYgKzI0MTQsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAg
ICAgICAgICAgICB1LnBvaW50ZXIgPSBwb2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5m
b1dyYXBwZXIoY29uc3Qgdm9pZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVy
OworICAgICAgICB9CiAgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBp
bnQzMikKICAgICAgICAgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNDE1LDEyICsy
NDQyLDIzIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3Jh
cHBlciYgb3BlcmF0b3I9KGNvbnN0IHZvaWQqIGNvbnN0UG9pbnRlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0
UG9pbnRlcjsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29u
c3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwg
VD46OnR5cGUKKyAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LnBvaW50
ZXIpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBB
TFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlICYmIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odS5jb25zdFBvaW50ZXIpOworICAgICAgICB9
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1
dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkgPT0gNCwgVD46OnR5cGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHUuaW50MzI7CkBAIC0yNDM0LDYgKzI0NzIsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90IGludDY0
OwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNv
bnN0UG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgIH07CiAgICAgT3BJbmZvV3JhcHBlciBtX29w
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNWFkYTg5
YmMxMzhhNjUwNDBhZWVhOWQyZmE3ZGEzZjA2MGQzMWU4Li45YzNmYjkwZWEwNmIwY2Y5MDU4ZTUx
NjYwZTViNThmMjVmN2MyNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0zOTYsNiArMzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhHZXRNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvYWRG
cm9tSlNNYXBCdWNrZXQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKElzTm9uRW1wdHlNYXBC
dWNrZXQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgXAorICAgIC8qIE5vZGVzIGZvciBET00g
SklUICovXAorICAgIG1hY3JvKENoZWNrRE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNp
bmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVl
bnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFz
aykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1
MmQzYjVkOGVmNGYzM2UwOWI1ZDdlNWNiZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3
ZjllYzQ3MDZkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQz
LDYgKzQzLDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2Vu
ZGlmCiAgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAg
ICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAg
IHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ1OTQx
OGFiNzEyMWY3MDE4YTlkYzIzM2M3MGUwZmNiZWU3ZWQ0M2IuLmVhOTIxNTYyNWQxZTlmZjAyZGUw
N2NlNzA5NjUzY2M5NTdhNGM1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyAr
Njk5LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRv
TnVtYmVyOiB7CisgICAgICAgIGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTog
ewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGlj
dGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MTksNiArODIwLDkg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
YWJlNjcyYTg5NGZjZWY0YzFkOGFjMDM5MWVhZmFhZDZmYzdjYTlmOC4uYzdlMWI2YjczZGI4MTcx
MGEyOGE4OGRiMzFkNTJkZjZlZTMwZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2Fz
ZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAg
ICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA2YjY0NDU0NDFiMTE1YjJmMjdkNTlhOTYzZGJlNTgwZGRmZjNlMGRl
Li43ZDA5ZDdlMjkzMDQzZWM5ZTZhZGQ0ZTg0ZGMwOGJmZWM2MTgxNTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgs
OCBAQAogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVy
YXRvci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBA
IC03MDU3LDYgKzcwNTksNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRl
cmZseShOb2RlKiBub2RlKQogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
IAorc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3Rv
cjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRlcnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZl
Y3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gsIERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnM7ICsraSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7Cisg
ICAgICAgIGdwU2NyYXRjaC5hcHBlbmQodGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xk
ZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBvcmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7Cisg
ICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFw
cGVuZCh0ZW1wb3JhcnkuZnByKCkpOworICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUo
dGVtcG9yYXJ5KSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2Fs
bERPTShOb2RlKiBub2RlKQoreworICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworCisgICAgVmVjdG9yPEdQUlJlZz4gZ3BT
Y3JhdGNoOworICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICBWZWN0b3I8RE9NSklU
OjpSZWc+IHJlZ3M7CisKKyAgICAvLyBGSVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdh
eSB0byB0ZWxsIHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdpc3Rlci4KKyAgICAvLyBUZWFjaGlu
ZyBERkcgYWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmlj
ZS4KKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3QodGhpcywgbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICByZWdzLmFwcGVuZChyZXN1bHQucmVn
cygpKTsKKyAgICByZWdzLmFwcGVuZChnbG9iYWxPYmplY3QuZ3ByKCkpOworICAgIHJlZ3MuYXBw
ZW5kKGJhc2UuZ3ByKCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmVncy5hcHBlbmQoc3Rh
dGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICByZWdzLmFw
cGVuZChzdGF0aWNfY2FzdDxHUFJSZWc+KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcikp
OworI2VuZGlmCisKKyAgICBWZWN0b3I8R1BSVGVtcG9yYXJ5PiBncFRlbXByYXJpZXM7CisgICAg
VmVjdG9yPEZQUlRlbXBvcmFyeT4gZnBUZW1wcmFyaWVzOworICAgIGFsbG9jYXRlVGVtcG9yYXJ5
UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludCh0aGlzLCBncFRlbXByYXJpZXMsIGZwVGVtcHJhcmllcywg
Z3BTY3JhdGNoLCBmcFNjcmF0Y2gsIHBhdGNocG9pbnQuZ2V0KCkpOworICAgIERPTUpJVDo6UGF0
Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4obV9q
aXQsIHBhcmFtcyk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQucmVncygpLCBub2RlKTsKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9NKE5vZGUqIG5vZGUpCit7Cisg
ICAgLy8gRklYTUU6IFdlIGNhbiBhZGQgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIHRoYXQg
aW5saW5lcyBqc0R5bmFtaWNDYXN0IHRoaW5ncyBoZXJlLgorICAgIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2hlY2tET00oKTsKKworICAgIFZl
Y3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7Cisg
ICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgIHJlZ3MuYXBwZW5kKGJhc2VHUFIpOworCisgICAgVmVjdG9yPEdQUlRlbXBvcmFy
eT4gZ3BUZW1wcmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmllczsK
KyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1w
cmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50Lmdl
dCgpKTsKKworICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdz
KSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gcGF0Y2hwb2ludC0+Z2VuZXJhdG9yKCktPnJ1
bihtX2ppdCwgcGFyYW1zKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLT5jaGlsZDEoKSwgZmFpbHVyZUNhc2Vz
KTsKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjp0ZW1w
b3JhcnlSZWdpc3RlckZvclB1dEJ5VmFsKEdQUlRlbXBvcmFyeSYgdGVtcG9yYXJ5LCBBcnJheU1v
ZGUgYXJyYXlNb2RlKQogewogICAgIGlmICghcHV0QnlWYWxXaWxsTmVlZEV4dHJhUmVnaXN0ZXIo
YXJyYXlNb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCAxZGFiOTIxNWMwYTFhY2E0NDM1NjM3YjEzMjYxYWFhNzJjNTYyMmVmLi5hN2Rl
YjI2YmNlOTFhOTZjN2Y2MzQ4OTNhMGI4ZDVhMWU0YjNhNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yNTM4LDYgKzI1MzgsOCBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlQ2FsbERPTShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSopOwog
ICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9w
ZXJhbmRUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9w
ZXJhbmRUeXBlLCB0eXBlbmFtZSBUYWdUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTg4NDYzODU4MTc5ZDkw
YjljYjY1NDFlNDZkM2RlYjkyYTAyYjBmYS4uY2JmNmUyNDA5ZWZiNzA1ZmFmNGNkMWUxZjBhZTZh
MDgwYzIwYzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01NDMwLDYgKzU0MzAsMTQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9NKG5vZGUpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGNvbXBpbGVDaGVja0RPTShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICB1bnJl
YWNoYWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5NmE3ZGFmMGJmM2I4ZjM5OGEw
YjNjYTU4NTMyNjU5MGUwM2NhODBkLi5iMzdhMjQ3ZTZlMjQzY2FjMjBmYjk2NTgyNWJjMTgzMjdl
MzA3NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTU1NjEsNiArNTU2MSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBp
bGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tET006Cisg
ICAgICAgIGNvbXBpbGVDaGVja0RPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFC
TEUoRlRMX0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5jcHAKaW5kZXggN2E4MjNlZTg2Y2E5M2FkYWI0NjMzNGQ1ZGVmMjI2MTZlNzcyYjAz
OC4uODhkNTc3NTY5YWY5YjAzZGM5OGQ0Y2NjNGI3ZjdjNGE3MTI4MjMxMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwCkBAIC0yNTgsNiArMjU4LDE1IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Zmls
dGVyU2xvdyhTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgICAgICB9KTsKIH0KIAordm9pZCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKQoreworICAgIEFTU0VSVCghaXNUb3AoKSk7CisgICAgbV9zZXQuZ2VuZXJpY0Zp
bHRlcigKKyAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pOwor
ICAgICAgICB9KTsKK30KKwogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQpAQCAt
MzE5LDYgKzMyOCwxOSBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNv
bnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBvdmVy
bGFwcyhvdGhlci5tX3NldCk7CiB9CiAKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAoreworICAgIGlmIChp
c0luZmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE5vdGUgdGFodCB0
aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RydWN0dXJlIHNldCBpcyBlbXB0eS4K
KyAgICBmb3IgKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlIDogbV9zZXQpIHsKKyAgICAgICAg
aWYgKCFzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKIHsKICAgICBBU1NFUlQobV9zZXQubV9wb2ludGVyICE9
IG90aGVyLm1fc2V0Lm1fcG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCmluZGV4IGNhOTRhNzliNzQ3YmQ5MTI2
OGIxMmNlMmQwODQyMTc4MGY3NjI5NjMuLjUxZjc5MzdkNTUxODFmNWZmNmM1NmNmNDAwZWU1OTQ1
YTM5MjgxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5oCkBAIC0xNjMsNiArMTYzLDEyIEBAIGNsYXNzIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSkKICAg
ICAgICAgICAgIGZpbHRlclNsb3codHlwZSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZpbHRlckNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICB7Cisg
ICAgICAgIGlmIChpc05laXRoZXJDbGVhck5vclRvcCgpKQorICAgICAgICAgICAgZmlsdGVyQ2xh
c3NJbmZvU2xvdyhjbGFzc0luZm8pOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QK
ICAgICB7CkBAIC0yMzEsNiArMjM3LDggQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7
CiAgICAgCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25z
dDsKICAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVy
KSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0
OwogICAgIAogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVu
Y2VzJikgY29uc3Q7CiAgICAgCkBAIC0yNDEsNiArMjQ5LDcgQEAgY2xhc3MgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsb2JiZXJlZFN1cHJlbWFj
eVRocmVzaG9sZCA9IDI7CiAgICAgCiAgICAgdm9pZCBmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBl
IHR5cGUpOworICAgIHZvaWQgZmlsdGVyQ2xhc3NJbmZvU2xvdyhjb25zdCBDbGFzc0luZm8qKTsK
ICAgICBib29sIG1lcmdlU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcik7
CiAgICAgCiAgICAgYm9vbCBlcXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUm
IG90aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRQYXRjaHBvaW50UGFyYW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzODYzOTAwOTYwYTY4ZmRlMDhj
ZjRiYjA2MWQyNDc0NWY3MWJjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJET01KSVRSZWcuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIFBhdGNocG9pbnRQYXJhbXMgeworV1RGX01B
S0VfTk9OQ09QWUFCTEUoUGF0Y2hwb2ludFBhcmFtcyk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
UGF0Y2hwb2ludFBhcmFtcygpIHsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVncy5zaXplKCk7IH0KKyAgICBjb25zdCBSZWcmIGF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBtX3JlZ3NbaW5kZXhdOyB9CisgICAgY29uc3QgUmVnJiBvcGVyYXRvcltd
KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIEdQUlJl
ZyBncFNjcmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZ3BTY3JhdGNoW2lu
ZGV4XTsgfQorICAgIEZQUlJlZyBmcFNjcmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fZnBTY3JhdGNoW2luZGV4XTsgfQorCisgICAgUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8
UmVnPiYmIHJlZ3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYm
IGZwU2NyYXRjaCkKKyAgICAgICAgOiBtX3JlZ3MoV1RGTW92ZShyZWdzKSkKKyAgICAgICAgLCBt
X2dwU2NyYXRjaChXVEZNb3ZlKGdwU2NyYXRjaCkpCisgICAgICAgICwgbV9mcFNjcmF0Y2goV1RG
TW92ZShmcFNjcmF0Y2gpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBWZWN0b3I8
UmVnPiBtX3JlZ3M7CisgICAgVmVjdG9yPEdQUlJlZz4gbV9ncFNjcmF0Y2g7CisgICAgVmVjdG9y
PEZQUlJlZz4gbV9mcFNjcmF0Y2g7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFJlZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRSZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIzODY2MzU2ZWNmMDdlYjI5
MzViNjRiZjMwZjM2NzdkYjUzZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRSZWcuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCisjaWYgRU5BQkxFKEpJVCkKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCisvLyBJdCBpcyBxdWl0ZSB1bmZv
cnR1bmF0ZSB0aGF0IDMyIGJpdCBlbnZpcm9ubWVudCBleGlzdHMgb24gREZHISBUaGlzIG1lYW5z
IHRoYXQgSlNWYWx1ZVJlZ3MgY29udGFpbnMgMiByZWdpc3RlcnMKKy8vIGluIHN1Y2ggYW4gZW52
aXJvbm1lbnQuIElmIHdlIHVzZSBHUFJSZWcgYW5kIEZQUlJlZyBpbiBET01KSVRQYXRjaHBvaW50
UGFyYW1zLCBET01KSVRQYXRjaHBvaW50UGFyYW1zIG1heSBjb250YWluCisvLyBkaWZmZXJlbnQg
bnVtYmVyIG9mIHJlZ2lzdGVycyBpbiAzMmJpdCBhbmQgNjRiaXQgZW52aXJvbm1lbnRzIHdoZW4g
d2UgcGFzcyBKU1ZhbHVlUmVncywgaXQgaXMgY29uZnVzaW5nLgorLy8gVGhlcmVmb3JlLCB3ZSBp
bnRyb2R1Y2UgYW4gYWJzdHJhY3Rpb24gdGhhdCBET01KSVQ6OlJlZywgd2hpY2ggaXMgYSBwb2x5
bW9ycGhpYyByZWdpc3RlciBjbGFzcy4gSXQgY2FuIHJlZmVyIEZQUlJlZywKKy8vIEdQUlJlZywg
YW5kICJKU1ZhbHVlUmVncyIuIE5vdGUgdGhhdCBpc0dQUigpIHdpbGwgcmV0dXJuIGZhbHNlIGlm
IHRoZSB0YXJnZXQgUmVnIGlzICJKU1ZhbHVlUmVncyIgZXZlbiBpZiB0aGUKKy8vIGVudmlyb25t
ZW50IGlzIDY0Yml0LgorY2xhc3MgUmVnIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUg
OiB1aW50OF90IHsKKyAgICAgICAgR1BSID0gMCwKKyAgICAgICAgRlBSID0gMSwKKyAgICAgICAg
SlNWYWx1ZSA9IDIsCisgICAgfTsKKworICAgIFJlZyhHUFJSZWcgcmVnKQorICAgICAgICA6IG1f
dmFyaWFudChyZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhGUFJSZWcgcmVnKQorICAgICAg
ICA6IG1fdmFyaWFudChyZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhKU1ZhbHVlUmVncyBy
ZWdzKQorICAgICAgICA6IG1fdmFyaWFudChyZWdzKQorICAgIHsKKyAgICB9CisKKyAgICBib29s
IGlzR1BSKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFR5cGU6OkdQUik7IH0KKyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4g
bV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkZQUik7IH0K
KyAgICBib29sIGlzSlNWYWx1ZVJlZ3MoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQuaW5kZXgo
KSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6SlNWYWx1ZSk7IH0KKworICAgIEdQUlJl
ZyBncHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzR1BSKCkpOworICAgICAgICBy
ZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxHUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQor
ICAgIEZQUlJlZyBmcHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRlBSKCkpOwor
ICAgICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxGUFJSZWc+KG1fdmFyaWFudCk7
CisgICAgfQorICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc0pTVmFsdWVSZWdzKCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBlcmlt
ZW50YWw6OmdldDxKU1ZhbHVlUmVncz4obV92YXJpYW50KTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgc3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8R1BSUmVnLCBGUFJSZWcsIEpTVmFsdWVSZWdz
PiBtX3ZhcmlhbnQ7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggM2NlZjk5ODM1MzU3Y2ZjYzRjYzlkN2Qy
YmIxNjJjZjk4YjBmZjI4ZS4uMGE3YzA1MDZhZTkxNjA0Nzc1MjUzN2IyMzExZDFlM2ZmN2NlMjc2
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMjY1LDYgKzI2NSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgRGVmaW5lRGF0YVBy
b3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICBjYXNlIENoZWNr
RE9NOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAg
ICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IDI1ZGQ2NjdmNWQ4NTNmYzk3ZTMzZjYwZmU5MjFhMzA0MTVjYzU2ZDQuLmI4NWFi
N2NiNjJkZGNhMGMyYzdlNDMyOTk2MDExOTc2YzFlMTU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNs
dWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0RnV6ei5oIgorI2luY2x1
ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1z
LmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5LmgiCkBAIC0x
MDQzLDYgKzEwNDUsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICAgICAgICAgIGNvbXBpbGVVbnJlYWNoYWJsZSgpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgICAgICBjb21waWxlQ2hlY2tE
T00oKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAg
ICAgICBjb21waWxlQ2FsbERPTSgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC04NjU1LDYgKzg2NjMs
OTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIGNyYXNoKCk7CiAg
ICAgfQorCisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oKQorICAgIHsKKyAgICAgICAgTFZhbHVl
IGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFJlZlB0cjxET01K
SVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisK
KyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChW
b2lkKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJz
ID0gZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisKKyAgICAgICAgU3RhdGUqIHN0YXRl
ID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9vcmlnaW47Cisg
ICAgICAgIHVuc2lnbmVkIG9zckV4aXRBcmd1bWVudE9mZnNldCA9IHBhdGNocG9pbnQtPm51bUNo
aWxkcmVuKCk7CisgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yKiBleGl0RGVzY3JpcHRvciA9IGFw
cGVuZE9TUkV4aXREZXNjcmlwdG9yKGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEo
KS5ub2RlKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRDb2xkQW55cyhidWlsZEV4aXRB
cmd1bWVudHMoZXhpdERlc2NyaXB0b3IsIG9yaWdpbi5mb3JFeGl0LCBqc1ZhbHVlVmFsdWUoY2Vs
bCkpKTsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVj
dG9yPERPTUpJVDo6UmVnPiByZWdzOworCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFy
YW1zWzBdLmdwcigpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAg
ICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJz
OyArK2kpCisgICAgICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmZwU2Ny
YXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxl
ID0gZXhpdERlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoKnN0YXRlLCBCYWRUeXBlLCBvcmln
aW4sIHBhcmFtcywgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0KTsKKworICAgICAgICAgICAgICAgIERP
TUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBkb21KSVRQYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVu
KGppdCwgZG9tSklUUGFyYW1zKTsKKworICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGZhaWx1cmVDYXNlcywgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhhbmRsZS0+bGFi
ZWwpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBwYXRj
aHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbXBpbGVDYWxsRE9NKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBs
b3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBj
ZWxsID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworCisgICAgICAg
IFJlZlB0cjxET01KSVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNh
bGxET00oKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0
Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihn
bG9iYWxPYmplY3QpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2Vs
bCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBv
aW50KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnMgPSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICAgICAgICAgICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxET01K
SVQ6OlJlZz4gcmVnczsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBwYXRjaHBvaW50IHNo
b3VsZCBoYXZlIGEgd2F5IHRvIHRlbGwgdGhpcyBjYW4gcmV1c2UgImJhc2UiIHJlZ2lzdGVyLgor
ICAgICAgICAgICAgICAgIC8vIFRlYWNoaW5nIERGRyBhYm91dCBET01KSVQ6OlBhdGNocG9pbnQg
Y2xvYmJlciBpbmZvcm1hdGlvbiBpcyBuaWNlLgorICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5k
KEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBw
ZW5kKHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1z
WzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbM10uZ3ByKCkp
OworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1s0XS5ncHIoKSk7CisKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJh
bXMuZ3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkb21KSVQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAg
ICAgICBmcFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5mcFNjcmF0Y2goaSkpOworCisgICAgICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25I
YW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAg
ICAgICAgICAgICBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMgZG9tSklUUGFyYW1zKFdURk1vdmUo
cmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAg
ICAgICAgICBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
YWxsKCk7CisgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7CisgICAgfQogICAgIAogICAg
IHZvaWQgY29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0KEVkZ2UgbGVmdENoaWxkLCBFZGdl
IHJpZ2h0Q2hpbGQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKaW5kZXggNzY5NDkxYTM2N2JhNWZmMTQwYjUzODdiOGI1ZmMyYjdmOGM2YzY4MC4u
YzZkOGJjM2VkZWM1ZTIzNGNlZmU3Mjc4ZGJlYTU4NGEyN2I3M2Q2YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMjA5LDkgKzEyMDksOSBAQCBj
bGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIAogICAg
IGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVk
RXhjZXB0aW9uQ2hlY2sgfTsKICAgICBlbnVtIEV4Y2VwdGlvbkp1bXBXaWR0aCB7IE5vcm1hbEp1
bXBXaWR0aCwgRmFySnVtcFdpZHRoIH07Ci0gICAgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soCiAgICAgICAgIEV4
Y2VwdGlvbkNoZWNrS2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBFeGNlcHRpb25KdW1wV2lk
dGggPSBOb3JtYWxKdW1wV2lkdGgpOwotICAgIEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSnVtcCBlbWl0Tm9uUGF0Y2hhYmxlRXhj
ZXB0aW9uQ2hlY2soKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICBzdGF0
aWMgdm9pZCBlbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0Nv
dW50ZXImIGNvdW50ZXIsIGludDMyX3QgaW5jcmVtZW50ID0gMSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggZjE1MDAwYjM4MjMxMjFjNzM2YjI2YmQ3N2E0ODgyNDc5YTViZGM3ZS4uYTY5ZmQ1ZDI3
MDExMDFmMGUxMTgxNzFjYmEzOTMyYjU1OGI3ZmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgorI2luY2x1ZGUgIkRPTUpJVEdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNzIs
NiArNzUsNyBAQAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC01MzcsMTIgKzU0MSwxMDggQEAgY2xh
c3MgU2ltcGxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFdyaXRlQmFy
cmllcjxKU0M6OlVua25vd24+IG1faGlkZGVuVmFsdWU7CiB9OwogCitjbGFzcyBET01KSVRHZXR0
ZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgRE9NSklUR2V0dGVy
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmpl
Y3RUeXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgRE9NSklUR2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIERPTUpJVEdldHRlciogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RE9NSklUR2V0dGVyPih2bS5oZWFwLCBzaXplb2YoRE9NSklUR2V0dGVyKSkpIERPTUpJ
VEdldHRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgaW50MzJfdCB2YWx1ZSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBjbGFz
cyBET01KSVRHZXR0ZXJET01KSVQgOiBwdWJsaWMgRE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRE9NSklUR2V0dGVyRE9NSklUKCkKKyAgICAgICAgICAgIDogRE9N
SklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyOjpjdXN0b21HZXR0ZXIsIG51bGxwdHIsIERP
TUpJVEdldHRlcjo6aW5mbygpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNo
cG9pbnQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNl
czsKKyAgICAgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAorICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorCisgICAgICAgIFJlZjxET01KSVQ6OlBh
dGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8
RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygp
OworICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMl0uZ3ByKCk7CisKKyAgICAg
ICAgICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhkb20sIERPTUpJVEdl
dHRlcjo6b2Zmc2V0T2ZWYWx1ZSgpKSwgcmVzdWx0cy5wYXlsb2FkR1BSKCkpOworICAgICAgICAg
ICAgICAgIGppdC5ib3hJbnQzMihyZXN1bHRzLnBheWxvYWRHUFIoKSwgcmVzdWx0cyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJHZXR0ZXJTZXR0
ZXIoKQorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTUpJVEdldHRlckRP
TUpJVD4gZ3JhcGg7CisgICAgICAgIHJldHVybiAmZ3JhcGguZ2V0KCk7CisgICAgfQorCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZhbHVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KERPTUpJVEdldHRlciwgbV92YWx1ZSk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IGRvbUpJVEdldHRlckdldHRl
clNldHRlcigpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRl
ciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBkb21K
SVQtPnNldHRlcigpLCBkb21KSVQpOworICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0
dGVyU2V0dGVyLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICAgICAgRE9NSklUR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01K
SVRHZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlmICghdGhp
c09iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5t
X3ZhbHVlKSk7CisgICAgfQorCisgICAgaW50MzJfdCBtX3ZhbHVlIHsgNDIgfTsKK307CisKIAog
Y29uc3QgQ2xhc3NJbmZvIEVsZW1lbnQ6OnNfaW5mbyA9IHsgIkVsZW1lbnQiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEVsZW1lbnQpIH07CiBjb25zdCBDbGFzc0luZm8g
TWFzcXVlcmFkZXI6OnNfaW5mbyA9IHsgIk1hc3F1ZXJhZGVyIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShNYXNxdWVyYWRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBSb290
OjpzX2luZm8gPSB7ICJSb290IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShSb290KSB9OwogY29uc3QgQ2xhc3NJbmZvIEltcHVyZUdldHRlcjo6c19pbmZvID0geyAiSW1w
dXJlR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbXB1cmVH
ZXR0ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0
b21HZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdl
dHRlcikgfTsKK2NvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9IHsgIkRPTUpJ
VEdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0
dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGlt
ZUFycmF5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJy
YXkpIH07CiBjb25zdCBDbGFzc0luZm8gU2ltcGxlT2JqZWN0OjpzX2luZm8gPSB7ICJTaW1wbGVP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNpbXBsZU9iamVj
dCkgfTsKIHN0YXRpYyBib29sIHRlc3QyNjJBc3luY1Bhc3NlZCB7IGZhbHNlIH07CkBAIC01NzEs
NiArNjcxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVQcm94eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWls
dGluKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0
ZSopOwpAQCAtODU1LDYgKzk1Niw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0ds
b2JhbE9iamVjdCB7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJbXB1cmVHZXR0
ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0
ZXJPYmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVEdldHRl
ck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKICAgICAgICAg
YWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAy
KTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5jdGlv
bkNyZWF0ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1w
dXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsK
QEAgLTEzNTksNiArMTQ2MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
RE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyKiByZXN1bHQgPSBET01K
SVRHZXR0ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JveC5o
IGIvU291cmNlL1dURi93dGYvQm94LmgKaW5kZXggYWQ5ZDVjNTczZjBiZjA1ZDA4M2UzYjY1YjIy
Mjc3NWJhMzQ5MjE2Ny4uYjY2MTMyMTkxOTE3NTgwNjgxNGI0NmExZDIwYTJkMTdkOThhYTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQm94LmgKKysrIGIvU291cmNlL1dURi93dGYvQm94
LmgKQEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIEJveCB7CiAgICAgewogICAgIH0KIAorICAgIEJv
eChzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgogICAgIHN0YXRpYyBCb3ggY3JlYXRlKEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDUxMzYxMTg4Y2NjNDIxZTA4M2JjYTI1NDZjM2FkODk0YjI2ODBlMDguLjc0
OTI1ODBhNDVlOTEyODdmY2Q0M2QxZDhjMTdlY2I1MTRlODllYzQgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxET00gaW1wbGVtZW50YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoYWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1w
b2x5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6Cisg
ICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoYWNjZXNzKToKKwogMjAxNi0xMC0wMyAgSkYgQmFzdGllbiAgPGpmYmFz
dGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXV0by1nZW5lcmF0ZSBXQVNNT3BzLmgsIHNoYXJl
IHdpdGggdGVzdGluZyBKU09OIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWpp
dC1nZXR0ZXItcG9seS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZTMxMWVmODkxZTAzMGU2MWE4ZmI5ZTI3Y2U5ZmEzZjQyMGNhYjg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzCkBAIC0w
LDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK3ZhciBkb21qaXQxID0gY3JlYXRlRE9NSklU
R2V0dGVyT2JqZWN0KCk7Cit2YXIgZG9taml0MiA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgp
OworCitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9t
R2V0dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkKKyAgICBzaG91bGRCZShhY2Nlc3MoKGkgJiAweDEpID8gZG9taml0MSA6IGRvbWpp
dDIpLCA4NCk7CisKK3Nob3VsZEJlKGFjY2Vzcyh7IGN1c3RvbUdldHRlcjogNDIgfSksIDg0KTsK
K2RvbWppdDEudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNzKGRvbWppdDEpLCA4NCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4N2Rk
M2I3NGExODQ3MTAyZDMzNjQ5OTA2MzJkMjRhY2JlMzdiZQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItc3VwZXItcG9seS5qcwpAQCAtMCwwICsxLDE4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmlu
ZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0cyA9IFtdOworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDA7ICsraSkKKyAgICBkb21qaXRzLnB1c2goY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KCkp
OworCitmdW5jdGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9t
R2V0dGVyICsgZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTI7ICsraSkgeworICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9taml0cy5sZW5ndGg7ICsraikK
KyAgICAgICAgc2hvdWxkQmUoYWNjZXNzKGRvbWppdHNbal0pLCA4NCk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0
LWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmEyODg0MmE1NmUwNmY0NDYwZjc4NTQ5NWRmNTUwOWY3
YjliMzFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5q
cwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0ID0gY3JlYXRl
RE9NSklUR2V0dGVyT2JqZWN0KCk7CisKK2Z1bmN0aW9uIGFjY2Vzcyhkb21qaXQpCit7CisgICAg
cmV0dXJuIGRvbWppdC5jdXN0b21HZXR0ZXIgKyBkb21qaXQuY3VzdG9tR2V0dGVyOworfQorCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXQp
LCA4NCk7CisKK3Nob3VsZEJlKGFjY2Vzcyh7IGN1c3RvbUdldHRlcjogNDIgfSksIDg0KTsKK2Rv
bWppdC50ZXN0ID0gNDQ7CitzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgODQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290691</attachid>
            <date>2016-10-04 23:38:22 -0700</date>
            <delta_ts>2016-10-04 23:42:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004233511.patch</filename>
            <type>text/plain</type>
            <size>71652</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2NhMjY0ZmY1M2UwZDc0ZGQ1YWY1YjMyYjUyMDMzZTMyMDg0YThhLi43OWE1N2NlMjYyOTNjN2U2
NDgwM2Q2NjJmZTRjZTI1ZDE3NTJlN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNTAgQEAKIDIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om1ha2VzQ2FsbHMpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpkdW1w
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6Okdl
dEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVz
Ojppc0N1c3RvbSk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OnRha2VzU2xvd1BhdGgp
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjppc1NpbXBsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6ZmlsdGVyQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0
ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RPTUpJVCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6ZG9tSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDbGFzc0luZm8p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6T3BJbmZvV3JhcHBlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6
T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9N
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mb1Nsb3cpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0
L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zOjp+UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6
YXQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6Om9wZXJhdG9yW10p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmdwU2NyYXRjaCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6ZnBTY3JhdGNoKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpQYXRjaHBvaW50UGFyYW1zKToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUUmVnLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6
OlJlZzo6UmVnKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OmlzR1BSKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmlzRlBSKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omlz
SlNWYWx1ZVJlZ3MpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6Z3ByKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmZwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjpqc1Zh
bHVlUmVncyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrRE9NKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5yZWFjaGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqc2Mu
Y3BwOgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpET01KSVROb2RlKToKKyAgICAgICAgKFdU
Rjo6RE9NSklUTm9kZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6RE9NSklUTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6dmFsdWUpOgorICAgICAgICAo
V1RGOjpET01KSVROb2RlOjpvZmZzZXRPZlZhbHVlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0
dGVyOjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdURjo6RE9NSklUR2V0dGVyOjpET01KSVROb2RlRE9NSklUOjpET01KSVROb2RlRE9NSklUKToK
KyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpkb21KSVROb2RlR2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KToK
KyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKworMjAxNi0xMC0w
NCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBSRUdS
RVNTSU9OIChyMjA2Nzc4KTogUmVsZWFzZSBKU0MgdGVzdCBDaGFrcmFDb3JlLnlhbWwvQ2hha3Jh
Q29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmpzLmRlZmF1bHQgZmFpbGluZwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM3CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTlhMWE1NzdjMDdkZWFkMWI2YWZkNGYyMDZhYmQxYTk0NTBjYzQ1MS4uZjljM2M3NTY3
MjQ1NWI4ZThkZjI1NjVjYThiM2IwNzEyNjBlM2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ni0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk0
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L0JveC5oOgorICAgICAgICAoV1RGOjpCb3g6OkJveCk6CisKIDIwMTYtMTAtMDMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgS2V5Ym9h
cmRFdmVudC5rZXkgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRj
NDQyNmViZWNiODBlZmRiZWU0ODFiYmU2OGVkOGJjM2U5ZmFmMTcuLmI2OTdlNjE3YzJhOTkzMDI3
MTRhOWI3M2I5YjFiYmQ2NGQyMTMxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMDk4LDYgKzIwOTgsOCBAQAogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0
RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0
RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM3QUQ4M0MxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
N0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM3QUQ4M0QxREE0
OTI4NjAwRjNENDEyIC8qIERPTUpJVFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJlZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYz
Q0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0
Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOUQ0NUY1MUQzOTAwNTYw
MEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnBy
ZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQzOTcsNiArNDM5
OSw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVB
bmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzdBRDgzQTFEQTQ5Mjgw
MDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUmVnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFs
eXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5RDlEODQxRDM5
MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxODMsNiArNzE4Nyw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0
dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9p
bnQuaCAqLywKKwkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcy5oICovLAorCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTc2MDAsNiArNzYwNiw3IEBACiAJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8q
IEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYx
MTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzN0FEODNEMURBNDkyODYwMEYzRDQxMiAvKiBET01KSVRSZWcuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzkyQzhBMUI0NjE4ODQwMDg0
NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIxNjgx
QTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtODQyOCw2ICs4NDM1LDcgQEAKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyog
eHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMTc4OEUxRDM5OUI4MDAwQjFBNTY3IC8qIEpJ
VE1hdGhJQ0ZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTE1MzlCOTEyREM5OTQ1MDBF
RjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0MxREE0OTI4NjAwRjNE
NDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0
Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VmZmVjdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAppbmRleCBj
MDQ3NDhmNmEzODczNTBhMDMxMDMxZTNiYzFiMDUyOTA1YmU5Y2E5Li5iZWM0Nzg2NThiZGU5Y2Yy
OTdkOTBlMmNlYWI4NmUxMjJhMTczYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCkBAIC03OCw2ICs3OCwxNSBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEVmZmVjdHMgZm9yQ2hlY2soKQorICAgIHsKKyAg
ICAgICAgRWZmZWN0cyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0gdHJ1
ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGluZyBhZnRlciBleGl0
aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAgICAgIHJlc3VsdC5yZWFk
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAg
ICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdGVybWlu
YWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxNjFhY2VkNzJiYTY2YjE4MTdhNWYzYTQ3
OWJiYjkzMzEyZGNhYzg5Li5hMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4NDBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTQsOSArNjE0LDcgQEAg
RWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVja1N1YjoKICAgICBj
YXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIHJlc3VsdC5leGl0c1NpZGV3
YXlzID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGluZyBh
ZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCi0gICAgICAgIHJl
c3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHJlc3VsdCA9IEVmZmVjdHM6
OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAgICBjYXNl
IFNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAppbmRleCBjYjc2ZDA1ZjA5ZjE4NjY2NGFjYjNiYmUwZmM3ODg2OTJmMDEwODIzLi4wM2Yy
ODViMDYzMzM2OWQ3YWNmYWUyYTI1OTM2ZTM5ZTY1ODVkOThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDIsNiArMjQyLDcg
QEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgZG9tSklUID0gYWNjZXNzLmRv
bUpJVCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbUpJVCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHNsb3dQYXRoU3RhdGUsIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQubV9zdGF0ZSA9IEN1c3RvbTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRlZmF1bHQ6
IHsKQEAgLTI1OSw2ICsyNjAsMTYgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKIAogICAgICAgICAgICAgICAg
IGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKHNsb3dQYXRoU3RhdGUsIHRydWUpOworCisgICAgICAgICAg
ICAgICAgaWYgKGRvbUpJVCkgeworICAgICAgICAgICAgICAgICAgICAvLyBHaXZlIHVwIHdoZW4g
Y3V0b20gYWNjZXNzZXMgYXJlIG5vdCBtZXJnZWQgaW50byBvbmUuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQubnVtVmFyaWFudHMoKSAhPSAxKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSB1cCB3aGVuIGN1c3Rv
bSBhY2Nlc3MgYW5kIHNpbXBsZSBhY2Nlc3MgYXJlIG1peGVkLgorICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0Lm1fc3RhdGUgPT0gQ3VzdG9tKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSB9CiAgICAgICAgIH0K
QEAgLTM1Niw2ICszNjcsNyBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25z
dAogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKICAgICBj
YXNlIFRha2VzU2xvd1BhdGg6CisgICAgY2FzZSBDdXN0b206CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBjYXNlIFNpbXBsZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV92YXJpYW50
cy5zaXplKCk7IGktLTspIHsKQEAgLTM5Nyw2ICs0MDksOSBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIFNpbXBsZToKICAgICAgICAg
b3V0LnByaW50KCJTaW1wbGUiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDdXN0b206Cisg
ICAgICAgIG91dC5wcmludCgiQ3VzdG9tIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGFr
ZXNTbG93UGF0aDoKICAgICAgICAgb3V0LnByaW50KCJUYWtlc1Nsb3dQYXRoIik7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmgKaW5kZXggZjQ5ZTE1MzIxZmQ3OGRlOGNmYjMzOWE0ZTUzNDlhZjdjMDlkODEwOS4uODRjMzM4
ZTU0MjZkZTJmNzI3ZWY0YzhhYTJkNGYxZjg2YjVhNjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IEdldEJ5SWRTdGF0dXMgewogICAgICAgICBOb0luZm9ybWF0aW9uLCAgLy8gSXQncyB1bmNhY2hl
ZCBzbyB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uLgogICAgICAgICBTaW1wbGUsICAgICAgICAgLy8g
SXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2VzcyB0byBhIGtub3duIG9iamVjdCBwcm9wZXJ0
eSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHBvc3NpYmxlIHN0cnVjdHVyZSBj
aGFpbiBhbmQgYSBwb3NzaWJsZSBzcGVjaWZpYyB2YWx1ZS4KKyAgICAgICAgQ3VzdG9tLCAgICAg
ICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIGN1c3RvbSBhY2Nlc3NvciB3aXRoIGEgcG9zc2libGUg
c3RydWN0dXJlIGNoYWluLgogICAgICAgICBUYWtlc1Nsb3dQYXRoLCAgLy8gSXQncyBrbm93biB0
byBvZnRlbiB0YWtlIHNsb3cgcGF0aC4KICAgICAgICAgTWFrZXNDYWxscyAgICAgIC8vIEl0J3Mg
a25vd24gdG8gdGFrZSBwYXRocyB0aGF0IG1ha2UgY2FsbHMuCiAgICAgfTsKQEAgLTY0LDcgKzY1
LDcgQEAgY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAg
ICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewotICAgICAgICBBU1NF
UlQoKHN0YXRlID09IFNpbXBsZSkgPT0gdmFyaWFudC5pc1NldCgpKTsKKyAgICAgICAgQVNTRVJU
KChzdGF0ZSA9PSBTaW1wbGUgfHwgc3RhdGUgPT0gQ3VzdG9tKSA9PSB2YXJpYW50LmlzU2V0KCkp
OwogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAgICB9CiAgICAgCkBAIC04
MiwxNCArODMsMTYgQEAgY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiAgICAgYm9vbCBpc1NldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gTm9JbmZvcm1hdGlvbjsgfQogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICBib29sIGlzU2ltcGxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBib29sIGlzQ3VzdG9tKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBDdXN0b207IH0KIAogICAgIHNpemVfdCBudW1WYXJpYW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMuc2l6ZSgpOyB9CiAgICAgY29uc3QgVmVjdG9y
PEdldEJ5SWRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRz
OyB9CiAgICAgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KICAgICBjb25zdCBHZXRCeUlkVmFyaWFudCYgb3Bl
cmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogCi0gICAg
Ym9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQ
YXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQorICAgIGJvb2wgdGFrZXNTbG93UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1h
a2VzQ2FsbHMgfHwgbV9zdGF0ZSA9PSBDdXN0b207IH0KICAgICBib29sIG1ha2VzQ2FsbHMoKSBj
b25zdDsKKyAgICBib29sIG1ha2VzQ3VzdG9tQWNjZXNzZXMoKSBjb25zdDsKICAgICAKICAgICBi
b29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cAppbmRleCA3MTlkOGYyNzI4M2Y1ZDEyM2NlNTc3MTU0NWU0NjliZjgxYWZmMjI3Li4yNDI1Mjky
YWZmNjA1OWFhYTc4Y2I4NDk3ZDE4NmI5YjUwNDJlNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTM1Myw2ICszNTMsMTIg
QEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJh
eVR5cGUgdHlwZSkKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogeworICAgIGlmIChjbGFzc0luZm8gPT0gSlNTdHJp
bmc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CisKKyAgICBpZiAoY2xhc3NJ
bmZvID09IFN5bWJvbDo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKKwogICAg
IGlmIChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4g
U3BlY0ZpbmFsT2JqZWN0OwogICAgIApAQCAtMzg1LDYgKzM5MSw5IEBAIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKICAg
ICAKICAgICBpZiAoaXNUeXBlZFZpZXcoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
KQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoY2xhc3NJbmZv
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpOworCisgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFz
c09mKEpTQXJyYXk6OmluZm8oKSkpCisgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5Owog
ICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU09iamVjdDo6aW5mbygpKSkK
ICAgICAgICAgcmV0dXJuIFNwZWNPYmplY3RPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKaW5kZXggNTk3MjgxNjYyZThhZDFm
ZmFhODU1NjIyYzcwNTlhNDc0YjJmNDQ2ZS4uYmNmNmQ3ZTczMWZjZDdlMDUzNTNhZmQ2OWI4Yjlh
NDM5M2ZiYTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKQEAgLTEzNCwxMCArMTM0LDE3IEBAIGNsYXNzIEFic3RyYWN0SW50
ZXJwcmV0ZXIgewogICAgICAgICByZXR1cm4gZmlsdGVyQnlWYWx1ZShmb3JOb2RlKG5vZGUpLCB2
YWx1ZSk7CiAgICAgfQogICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oVCBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8oZm9yTm9kZShub2Rl
KSwgY2xhc3NJbmZvKTsKKyAgICB9CisKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihBYnN0
cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRU
eXBlcyA9IFNwZWNOb25lKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMo
QWJzdHJhY3RWYWx1ZSYsIEFycmF5TW9kZXMpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEFic3RyYWN0VmFsdWUmLCBTcGVjdWxhdGVkVHlwZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBm
aWx0ZXJCeVZhbHVlKEFic3RyYWN0VmFsdWUmLCBGcm96ZW5WYWx1ZSk7CisgICAgRmlsdHJhdGlv
blJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oQWJzdHJhY3RWYWx1ZSYsIGNvbnN0IENsYXNzSW5mbyop
OwogICAgIAogICAgIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbigpIHsgcmV0dXJuIG1fcGhpQ2hp
bGRyZW4uZ2V0KCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBjZTZiZWY5YWQzZmQw
NTc5ZmU1YWE5ZTAxYTg0ZTczYmU2OGY2ZDRhLi45ZGZjNjNkYzY4YTE4ZDE0NGRjYzRlNTc3ZDdm
MTQ2N2JlNmE3YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkdldEJ5
SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNoTWFw
SW1wbC5oIgpAQCAtMjI2Myw2ICsyMjY0LDI4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LmNsZWFyKCk7IC8vIFRoZSByZXN1bHQgaXMgbm90IGEgSlMgdmFsdWUuCiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ2hlY2tET006IHsKKyAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjb25zdGFudCkgeworICAg
ICAgICAgICAgaWYgKGNvbnN0YW50LmlzQ2VsbCgpICYmIGNvbnN0YW50LmFzQ2VsbCgpLT5pbmhl
cml0cyhub2RlLT5jbGFzc0luZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZv
dW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICAgICAgICAgIEFTU0VSVChjb25zdGFudCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworCisgICAg
ICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YkNsYXNzT2Yobm9kZS0+Y2xhc3NJbmZvKCkp
KQorICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKworICAgICAg
ICBmaWx0ZXJDbGFzc0luZm8odmFsdWUsIG5vZGUtPmNsYXNzSW5mbygpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5t
YWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGVja0FycmF5OiB7
CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBu
b2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CkBAIC0zMDUxLDYgKzMwNzQsMTYgQEAgRmlsdHJhdGlvblJl
c3VsdCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyQnlWYWx1
ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CitGaWx0cmF0aW9u
UmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJDbGFz
c0luZm8oCisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQoreworICAgIGlmICh2YWx1ZS5maWx0ZXJDbGFzc0luZm8obV9ncmFwaCwgY2xhc3NJbmZv
KSA9PSBGaWx0cmF0aW9uT0spCisgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CisgICAgbV9z
dGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKyAgICByZXR1cm4gQ29udHJhZGljdGlvbjsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiB2b2lkIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRG91YmxlVW5hcnlPcEVmZmVjdHMoTm9k
ZSogbm9kZSwgZG91YmxlKCplcXVpdmFsZW50RnVuY3Rpb24pKGRvdWJsZSkpCiB7CiAgICAgSlNW
YWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAppbmRleCBjM2VmZGFjZWU3
OGQ2YWNlZWY2NWE5ODMyODQxYmQ2ZjQxYmNhNDdmLi5iZjFlNDk5MDA3YTk4YzI0YjBhOTQ5M2Yw
MDczOTFjYjZmY2E0OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5jcHAKQEAgLTMwNiw2ICszMDYsMjEgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0
cmFjdFZhbHVlOjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2RlcykKICAgICBy
ZXR1cm4gbm9ybWFsaXplQ2xhcml0eSgpOwogfQogCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
VmFsdWU6OmZpbHRlckNsYXNzSW5mbyhHcmFwaCYgZ3JhcGgsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKQoreworICAgIGlmIChpc0NsZWFyKCkpCisgICAgICAgIHJldHVybiBGaWx0cmF0aW9u
T0s7CisKKyAgICBtX3R5cGUgJj0gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNsYXNzSW5mbyk7
CisgICAgbV9zdHJ1Y3R1cmUuZmlsdGVyQ2xhc3NJbmZvKGNsYXNzSW5mbyk7CisKKyAgICBtX3N0
cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKworICAgIGZpbHRlckFycmF5TW9kZXNCeVR5cGUoKTsK
KyAgICBmaWx0ZXJWYWx1ZUJ5VHlwZSgpOworICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KGdy
YXBoKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoU3BlY3Vs
YXRlZFR5cGUgdHlwZSkKIHsKICAgICBpZiAoKG1fdHlwZSAmIHR5cGUpID09IG1fdHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKaW5kZXggMzJlYjBm
MTljNWM5MWY2NzcxOGU3M2QwYTdjMzhlMTlmY2YyODNlZi4uOGE5MTAxNDA3NTYzYWIxM2VhMDBk
NWM2YmNlODg0YzU5MjgwMzE2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmgKQEAgLTMwNyw2ICszMDcsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUpOwogICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShjb25zdCBGcm96ZW5WYWx1ZSYgdmFsdWUpOwogICAg
IEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKGNvbnN0IEFic3RyYWN0VmFsdWUmKTsKKyAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhHcmFwaCYsIGNvbnN0IENsYXNzSW5mbyopOwog
CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6
OkRlc2NyaXB0b3ImKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMGI1ZmI5NWQ5NTdiMTJhNDM4MWNmZmI5YjZjMmE0ZWIz
MmFiM2E0ZC4uYjkwNzhlZTcxZmVmYmZmYzU2M2QxMjcyNTZiNmQ4YTFhYjIwNGEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIx
OSw2ICsyMTksNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgYm9vbCBoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFNwZWN1bGF0ZWRUeXBl
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIE5vZGUqIGhhbmRsZVB1
dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3ImLCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9k
ZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0LCBjb25zdCBJbmZlcnJlZFR5cGU6OkRl
c2NyaXB0b3ImLCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKKyAgICBib29sIGhhbmRsZURPTUpJ
VEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2RlKiB0
aGlzTm9kZSwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAKICAgICAvLyBDcmVhdGUgYSBw
cmVzZW5jZSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBiYXNlZCBvbiBzb21lIGtub3duIG9mZnNl
dCBhbmQgc3RydWN0dXJlIHNldC4gRG9lcyBub3QKICAgICAvLyBjaGVjayB0aGUgdmFsaWRpdHkg
b2YgdGhlIGNvbmRpdGlvbiwgYnV0IGl0IG1heSByZXR1cm4gYSBudWxsIG9uZSBpZiBpdCBlbmNv
dW50ZXJzIGEgY29udHJhZGljdGlvbi4KQEAgLTI2NTksNiArMjY2MCwyOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0
IEdldEJ5SWRWYXJpYQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwg
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKQoreworICAgIGlmICghdmFyaWFudC5kb21KSVQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IHZhcmlh
bnQuZG9tSklUKCk7CisKKyAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBhY3R1YWxseSBsb29rIHVw
IEN1c3RvbUdldHRlclNldHRlciBoZXJlLiBDaGVja2luZyBTdHJ1Y3R1cmVzIG9yIHJlZ2lzdGVy
aW5nIHdhdGNocG9pbnRzIGFyZSBlbm91Z2gsCisgICAgLy8gc2luY2UgcmVwbGFjZW1lbnQgb2Yg
Q3VzdG9tR2V0dGVyU2V0dGVyIGFsd2F5cyBpbmN1cnMgU3RydWN0dXJlIHRyYW5zaXRpb24uCisg
ICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSksIHRoaXNOb2RlKTsKKworICAgIC8v
IFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBj
dXN0b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRy
YW5zaXRpb24gb2NjdXJzLgorICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhkb21KSVQp
LCBPcEluZm8oZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpLCB0aGlzTm9kZSk7CisgICAgTm9kZSog
Z2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFwaChHZXRHbG9iYWxPYmplY3QsIHRoaXNOb2RlKTsKKyAg
ICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05v
ZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KKyAgICBhZGRWYXJBcmdD
aGlsZCh0aGlzTm9kZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
YWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9wSW5mbyhkb21KSVQpLCBPcEluZm8o
cHJlZGljdGlvbikpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25z
dHJ1Y3RvcigKICAgICBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rp
b24sIGludCByZWdpc3Rlck9mZnNldCwKQEAgLTMyNTMsNiArMzI3NiwyMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIGVsc2UKICAgICAgICAgZ2V0QnlJZCA9IFRy
eUdldEJ5SWQ7CiAKKyAgICAvLyBTcGVjaWFsIHBhdGggZm9yIGN1c3RvbSBhY2Nlc3NvcnMgc2lu
Y2UgY3VzdG9tJ3Mgb2Zmc2V0IGRvZXMgbm90IGhhdmUgYW55IG1lYW5pbmdzLgorICAgIC8vIFNv
LCB0aGlzIGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gU2ltcGxlIG9uZS4gQnV0IHdlIGhh
dmUgYSBjaGFuY2UgdG8gb3B0aW1pemUgaXQgd2hlbiB3ZSB1c2UgRE9NSklULgorICAgIGlmIChn
ZXRCeUlkU3RhdHVzLmlzQ3VzdG9tKCkpIHsKKyAgICAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMu
bnVtVmFyaWFudHMoKSA9PSAxKTsKKyAgICAgICAgQVNTRVJUKCFnZXRCeUlkU3RhdHVzLm1ha2Vz
Q2FsbHMoKSk7CisgICAgICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeUlkU3RhdHVz
WzBdOworICAgICAgICBBU1NFUlQodmFyaWFudC5kb21KSVQoKSk7CisgICAgICAgIGlmIChoYW5k
bGVET01KSVRHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCB2YXJpYW50LCBiYXNlLCBwcmVkaWN0
aW9uKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKKyAgICAgICAg
ICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBBU1NFUlQodHlwZSA9
PSBBY2Nlc3NUeXBlOjpHZXQgfHwgIWdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpKTsKICAgICBp
ZiAoIWdldEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50
cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMWU1NTVmZTFhZmYyZmUzMWFlODk1Y2FmNTk4ZTZmYzkz
ZWUzYWY4ZC4uNTA0M2M0ZDE0MGY1NDJlZWUyYTU0MmI0ZTA5Mzg0ZTAyNzgzMWI2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTg4NSw2ICs4ODUsMTUg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihCdXR0
ZXJmbHlMb2MsIEpTT2JqZWN0X2J1dHRlcmZseSwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShu
b2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGRl
ZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2xhc3NJbmZvKCkpKTsKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgd3JpdGUo
SGVhcCk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCmluZGV4IDVkNjMyOWQyOGY1ZmYzYmY2NWExY2ZjYTQ3YWE2Nzc0MTY5MzVlMmYuLmQ5
YmM3ZTcwOWExMWNkNGUzZDE5YmViNWViOGUyMDAxYmYzYTBmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0x
NTgsNiArMTU4LDI4IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tET006IHsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlIGNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwor
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
Y29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxsKCktPmluaGVyaXRzKG5vZGUtPmNs
YXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVj
dXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUu
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUubV9z
dHJ1Y3R1cmUuaXNTdWJDbGFzc09mKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAgICAg
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDMxODU1OTZjZjkz
M2NlMDg5NjEyYmM5YTQ1N2UxYjJkNTc0NmM3NTkuLjU3MjZjYjVlNmU3YTQyNjdiZTcyZTY3ZGNh
MzdjYjk3YTdjMDFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
QEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAg
Y2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006
CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBTa2lw
U2NvcGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBmZDZkZDU0NGU4MDI0OWQ4MmRiMTAyYTA2NjQ5YzY5MDY1OWE4OTY5Li40MTc4Nzk4ZmNkYjQz
OWM4M2I3ZDQwOWZmNDdlY2QyNTdhNTZiMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2OTAsNiArMTY5MCwxNSBAQCBjbGFzcyBGaXh1cFBo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDYWxsRE9NOgor
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOyAvLyBHbG9iYWxPYmplY3QuCisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOyAvLyBET00uCisgICAgICAgICAgICBicmVhazsK
KwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNl
cyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3Ig
bmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IDk5YTgyYzljZDk2YWE3OGMzYjA0MGVjNTRlZDllZTEyZjAxZGU4
MjYuLjQyMzdhNTI2MjQ5OTIxZDAzZmNiYTZmODhiYjA2NTZhN2U2YjE3ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICAgICAgY2FzZSBUb051bWJl
cjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMTIsNyArMjMxMywyOCBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIEFTU0VSVChoYXNCYXNpY0Jsb2NrTG9jYXRpb24oKSk7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxCYXNpY0Jsb2NrTG9jYXRpb24qPigpOwogICAgIH0KLSAgICAKKworICAgIGJv
b2wgaGFzRE9NSklUKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENoZWNr
RE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9CisKKyAgICBET01KSVQ6OkdldHRlclNldHRl
ciogZG9tSklUKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNET01KSVQoKSk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczxET01KSVQ6OkdldHRlclNldHRlcio+KCk7CisgICAgfQorCisg
ICAgYm9vbCBoYXNDbGFzc0luZm8oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gQ2hlY2tET007CisgICAgfQorCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFzc0luZm8qPigpOwor
ICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CkBAIC0yMzkyLDYgKzI0MTQsMTEgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAgICAgICAgICAgICB1LnBvaW50ZXIgPSBw
b2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXIoY29uc3Qgdm9pZCogY29u
c3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAg
ICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVyOworICAgICAgICB9CiAgICAgICAgIE9w
SW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBpbnQzMikKICAgICAgICAgewogICAgICAg
ICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNDE1LDEyICsyNDQyLDIzIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgICAgIHUucG9pbnRlciA9IHBvaW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3JhcHBlciYgb3BlcmF0b3I9KGNvbnN0IHZv
aWQqIGNvbnN0UG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnQ2NCA9IDA7Cisg
ICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKKyAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
ICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwgVD46OnR5cGUKKyAgICAgICAgQUxXQVlT
X0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1LnBvaW50ZXIpOwogICAgICAgICB9CiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBj
b25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
ICYmIHN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46
OnZhbHVlLCBUPjo6dHlwZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VD4odS5jb25zdFBvaW50ZXIpOworICAgICAgICB9CisgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiBzaXplb2YoVCkg
PT0gNCwgVD46OnR5cGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50MzI7CkBA
IC0yNDM0LDYgKzI0NzIsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICB1aW50MzJfdCBp
bnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90IGludDY0OwogICAgICAgICAgICAgdm9pZCogcG9p
bnRlcjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNvbnN0UG9pbnRlcjsKICAgICAgICAgfSB1
OwogICAgIH07CiAgICAgT3BJbmZvV3JhcHBlciBtX29wSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkNWFkYTg5YmMxMzhhNjUwNDBhZWVhOWQyZmE3ZGEz
ZjA2MGQzMWU4Li45YzNmYjkwZWEwNmIwY2Y5MDU4ZTUxNjYwZTViNThmMjVmN2MyNjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTYsNiArMzk2LDEwIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHZXRNYXBCdWNrZXQs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvYWRGcm9tSlNNYXBCdWNrZXQsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKElzTm9uRW1wdHlNYXBCdWNrZXQsIE5vZGVSZXN1bHRCb29sZWFu
KSBcCisgICAgXAorICAgIC8qIE5vZGVzIGZvciBET00gSklUICovXAorICAgIG1hY3JvKENoZWNr
RE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAKIC8vIFRoaXMgZW51bSBn
ZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVz
LAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUg
aWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1MmQzYjVkOGVmNGYzM2UwOWI1ZDdlNWNi
ZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3ZjllYzQ3MDZkMTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IE9wSW5m
byB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2VuZGlmCiAgICAgZXhwbGljaXQgT3BJbmZv
KHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qg
dm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAgIHVpbnQ2NF90IG1fdmFsdWU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ1OTQxOGFiNzEyMWY3MDE4YTlkYzIzM2M3MGUw
ZmNiZWU3ZWQ0M2IuLmVhOTIxNTYyNWQxZTlmZjAyZGUwN2NlNzA5NjUzY2M5NTdhNGM1ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyArNjk5LDggQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldENsb3N1
cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAgICAgICAgY2FzZSBMb2Fk
RnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRvTnVtYmVyOiB7CisgICAgICAgIGNhc2Ug
VG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC04MTksNiArODIwLDkgQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWJlNjcyYTg5NGZjZWY0YzFkOGFjMDM5
MWVhZmFhZDZmYzdjYTlmOC4uYzdlMWI2YjczZGI4MTcxMGEyOGE4OGRiMzFkNTJkZjZlZTMwZTIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAg
LTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0
YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToK
ICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAg
IGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2YjY0NDU0
NDFiMTE1YjJmMjdkNTlhOTYzZGJlNTgwZGRmZjNlMGRlLi43ZDA5ZDdlMjkzMDQzZWM5ZTZhZGQ0
ZTg0ZGMwOGJmZWM2MTgxNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRGR09TUkV4
aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkRPTUpJ
VFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5j
bHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBAIC03MDU3LDYgKzcwNTksNzQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRlcmZseShOb2RlKiBub2RlKQogICAgIHN0
b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAorc3RhdGljIHZvaWQgYWxsb2NhdGVU
ZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3Rv
cjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3RvcjxGUFJUZW1wb3Jhcnk+JiBmcEhvbGRl
cnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiBmcFNjcmF0Y2gs
IERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkgeworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7CisgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQo
dGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xkZXJzLmFwcGVuZChXVEZNb3ZlKHRlbXBv
cmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50
Lm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1w
b3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFwcGVuZCh0ZW1wb3JhcnkuZnByKCkpOwor
ICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUodGVtcG9yYXJ5KSk7CisgICAgfQorfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2RlKiBub2RlKQoreworICAg
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2Fs
bERPTSgpOworCisgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgIFZlY3RvcjxGUFJS
ZWc+IGZwU2NyYXRjaDsKKyAgICBWZWN0b3I8RE9NSklUOjpSZWc+IHJlZ3M7CisKKyAgICAvLyBG
SVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2FuIHJldXNl
ICJiYXNlIiByZWdpc3Rlci4KKyAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklUOjpQYXRj
aHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBnbG9iYWxPYmplY3QodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAw
KSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisKKyAgICByZWdzLmFwcGVuZChyZXN1bHQucmVncygpKTsKKyAgICByZWdzLmFwcGVuZChn
bG9iYWxPYmplY3QuZ3ByKCkpOworICAgIHJlZ3MuYXBwZW5kKGJhc2UuZ3ByKCkpOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICByZWdzLmFwcGVuZChzdGF0aWNfY2FzdDxHUFJSZWc+
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworI2VuZGlmCisKKyAgICBWZWN0b3I8
R1BSVGVtcG9yYXJ5PiBncFRlbXByYXJpZXM7CisgICAgVmVjdG9yPEZQUlRlbXBvcmFyeT4gZnBU
ZW1wcmFyaWVzOworICAgIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0Y2hwb2ludCh0
aGlzLCBncFRlbXByYXJpZXMsIGZwVGVtcHJhcmllcywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIHBh
dGNocG9pbnQuZ2V0KCkpOworICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RG
TW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAg
IHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4obV9qaXQsIHBhcmFtcyk7CisgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQucmVncygpLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNoZWNrRE9NKE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IFdlIGNhbiBhZGQg
dGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIHRoYXQgaW5saW5lcyBqc0R5bmFtaWNDYXN0IHRo
aW5ncyBoZXJlLgorICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBub2Rl
LT5kb21KSVQoKS0+Y2hlY2tET00oKTsKKworICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsK
KyAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgVmVjdG9yPERPTUpJVDo6UmVnPiBy
ZWdzOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIHJlZ3MuYXBwZW5kKGJh
c2VHUFIpOworCisgICAgVmVjdG9yPEdQUlRlbXBvcmFyeT4gZ3BUZW1wcmFyaWVzOworICAgIFZl
Y3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmllczsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJl
Z2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdw
U2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50LmdldCgpKTsKKworICAgIERPTUpJVDo6UGF0
Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzID0gcGF0Y2hwb2ludC0+Z2VuZXJhdG9yKCktPnJ1bihtX2ppdCwgcGFyYW1zKTsKKyAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VH
UFIpLCBub2RlLT5jaGlsZDEoKSwgZmFpbHVyZUNhc2VzKTsKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjp0ZW1wb3JhcnlSZWdpc3RlckZvclB1dEJ5VmFs
KEdQUlRlbXBvcmFyeSYgdGVtcG9yYXJ5LCBBcnJheU1vZGUgYXJyYXlNb2RlKQogewogICAgIGlm
ICghcHV0QnlWYWxXaWxsTmVlZEV4dHJhUmVnaXN0ZXIoYXJyYXlNb2RlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAxZGFiOTIxNWMwYTFh
Y2E0NDM1NjM3YjEzMjYxYWFhNzJjNTYyMmVmLi5hN2RlYjI2YmNlOTFhOTZjN2Y2MzQ4OTNhMGI4
ZDVhMWU0YjNhNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0yNTM4LDYgKzI1MzgsOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAg
ICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUdldEJ1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2FsbERPTShOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSopOwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBQcm9w
ZXJ0eU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBUYWdU
eXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggNTg4NDYzODU4MTc5ZDkwYjljYjY1NDFlNDZkM2RlYjkyYTAyYjBm
YS4uY2JmNmUyNDA5ZWZiNzA1ZmFmNGNkMWUxZjBhZTZhMDgwYzIwYzA2YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC01NDMwLDYgKzU0MzAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAg
IGNvbXBpbGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tE
T006CisgICAgICAgIGNvbXBpbGVDaGVja0RPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICB1bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAppbmRleCA5NmE3ZGFmMGJmM2I4ZjM5OGEwYjNjYTU4NTMyNjU5MGUwM2NhODBkLi5i
MzdhMjQ3ZTZlMjQzY2FjMjBmYjk2NTgyNWJjMTgzMjdlMzA3NjFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTU1NjEsNiAr
NTU2MSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9NKG5vZGUpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGNvbXBpbGVDaGVja0RPTShu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKaW5kZXggN2E4MjNl
ZTg2Y2E5M2FkYWI0NjMzNGQ1ZGVmMjI2MTZlNzcyYjAzOC4uODhkNTc3NTY5YWY5YjAzZGM5OGQ0
Y2NjNGI3ZjdjNGE3MTI4MjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCkBAIC0yNTgsNiArMjU4LDE1IEBA
IHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyhTcGVjdWxhdGVkVHlwZSB0
eXBlKQogICAgICAgICB9KTsKIH0KIAordm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0
ZXJDbGFzc0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQoreworICAgIEFTU0VS
VCghaXNUb3AoKSk7CisgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigKKyAgICAgICAgWyZdIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pOworICAgICAgICB9KTsKK30KKwogYm9vbCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29u
c3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQpAQCAtMzE5LDYgKzMyOCwxOSBAQCBib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFs
dWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBvdmVybGFwcyhvdGhlci5tX3NldCk7CiB9CiAK
K2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJDbGFzc09mKGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKSBjb25zdAoreworICAgIGlmIChpc0luZmluaXRlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE5vdGUgdGFodCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1
ZSBpZiB0aGUgc3RydWN0dXJlIHNldCBpcyBlbXB0eS4KKyAgICBmb3IgKGNvbnN0IFN0cnVjdHVy
ZSogc3RydWN0dXJlIDogbV9zZXQpIHsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QK
IHsKICAgICBBU1NFUlQobV9zZXQubV9wb2ludGVyICE9IG90aGVyLm1fc2V0Lm1fcG9pbnRlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3Ry
YWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5oCmluZGV4IGNhOTRhNzliNzQ3YmQ5MTI2OGIxMmNlMmQwODQyMTc4MGY3NjI5NjMu
LjUxZjc5MzdkNTUxODFmNWZmNmM1NmNmNDAwZWU1OTQ1YTM5MjgxNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCkBA
IC0xNjMsNiArMTYzLDEyIEBAIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogICAgICAg
ICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSkKICAgICAgICAgICAgIGZpbHRlclNsb3codHlw
ZSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRlckNsYXNzSW5mbyhjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICB7CisgICAgICAgIGlmIChpc05laXRoZXJDbGVh
ck5vclRvcCgpKQorICAgICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvU2xvdyhjbGFzc0luZm8pOwor
ICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0yMzEsNiArMjM3LDgg
QEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9vbCBvdmVybGFw
cyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKGNv
bnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdDsKKworICAgIGJvb2wgaXNT
dWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIAogICAgIHZvaWQgdmFsaWRh
dGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29uc3Q7CiAgICAgCkBAIC0y
NDEsNiArMjQ5LDcgQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNsb2JiZXJlZFN1cHJlbWFjeVRocmVzaG9sZCA9IDI7CiAgICAgCiAg
ICAgdm9pZCBmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5cGUpOworICAgIHZvaWQgZmlsdGVy
Q2xhc3NJbmZvU2xvdyhjb25zdCBDbGFzc0luZm8qKTsKICAgICBib29sIG1lcmdlU2xvdyhjb25z
dCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcik7CiAgICAgCiAgICAgYm9vbCBlcXVhbHNT
bG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjIzODYzOTAwOTYwYTY4ZmRlMDhjZjRiYjA2MWQyNDc0NWY3MWJjYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hw
b2ludFBhcmFtcy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNp
bmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJET01KSVRSZWcuaCIKKyNpbmNsdWRl
ICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisK
K2NsYXNzIFBhdGNocG9pbnRQYXJhbXMgeworV1RGX01BS0VfTk9OQ09QWUFCTEUoUGF0Y2hwb2lu
dFBhcmFtcyk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGF0Y2hwb2ludFBhcmFtcygpIHsgfQor
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVncy5zaXplKCk7IH0KKyAg
ICBjb25zdCBSZWcmIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX3JlZ3NbaW5k
ZXhdOyB9CisgICAgY29uc3QgUmVnJiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIEdQUlJlZyBncFNjcmF0Y2godW5zaWduZWQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fZ3BTY3JhdGNoW2luZGV4XTsgfQorICAgIEZQUlJlZyBmcFNj
cmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZnBTY3JhdGNoW2luZGV4XTsg
fQorCisgICAgUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8UmVnPiYmIHJlZ3MsIFZlY3RvcjxHUFJS
ZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYmIGZwU2NyYXRjaCkKKyAgICAgICAgOiBt
X3JlZ3MoV1RGTW92ZShyZWdzKSkKKyAgICAgICAgLCBtX2dwU2NyYXRjaChXVEZNb3ZlKGdwU2Ny
YXRjaCkpCisgICAgICAgICwgbV9mcFNjcmF0Y2goV1RGTW92ZShmcFNjcmF0Y2gpKQorICAgIHsK
KyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBWZWN0b3I8UmVnPiBtX3JlZ3M7CisgICAgVmVjdG9y
PEdQUlJlZz4gbV9ncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gbV9mcFNjcmF0Y2g7Cit9
OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVFJlZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRSZWcu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZjIzODY2MzU2ZWNmMDdlYjI5MzViNjRiZjMwZjM2NzdkYjUzZDVkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRSZWcu
aApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBET01KSVQgeworCisvLyBJdCBpcyBxdWl0ZSB1bmZvcnR1bmF0ZSB0aGF0IDMyIGJpdCBlbnZp
cm9ubWVudCBleGlzdHMgb24gREZHISBUaGlzIG1lYW5zIHRoYXQgSlNWYWx1ZVJlZ3MgY29udGFp
bnMgMiByZWdpc3RlcnMKKy8vIGluIHN1Y2ggYW4gZW52aXJvbm1lbnQuIElmIHdlIHVzZSBHUFJS
ZWcgYW5kIEZQUlJlZyBpbiBET01KSVRQYXRjaHBvaW50UGFyYW1zLCBET01KSVRQYXRjaHBvaW50
UGFyYW1zIG1heSBjb250YWluCisvLyBkaWZmZXJlbnQgbnVtYmVyIG9mIHJlZ2lzdGVycyBpbiAz
MmJpdCBhbmQgNjRiaXQgZW52aXJvbm1lbnRzIHdoZW4gd2UgcGFzcyBKU1ZhbHVlUmVncywgaXQg
aXMgY29uZnVzaW5nLgorLy8gVGhlcmVmb3JlLCB3ZSBpbnRyb2R1Y2UgYW4gYWJzdHJhY3Rpb24g
dGhhdCBET01KSVQ6OlJlZywgd2hpY2ggaXMgYSBwb2x5bW9ycGhpYyByZWdpc3RlciBjbGFzcy4g
SXQgY2FuIHJlZmVyIEZQUlJlZywKKy8vIEdQUlJlZywgYW5kICJKU1ZhbHVlUmVncyIuIE5vdGUg
dGhhdCBpc0dQUigpIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSB0YXJnZXQgUmVnIGlzICJKU1Zh
bHVlUmVncyIgZXZlbiBpZiB0aGUKKy8vIGVudmlyb25tZW50IGlzIDY0Yml0LgorY2xhc3MgUmVn
IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgR1BS
ID0gMCwKKyAgICAgICAgRlBSID0gMSwKKyAgICAgICAgSlNWYWx1ZSA9IDIsCisgICAgfTsKKwor
ICAgIFJlZyhHUFJSZWcgcmVnKQorICAgICAgICA6IG1fdmFyaWFudChyZWcpCisgICAgeworICAg
IH0KKworICAgIFJlZyhGUFJSZWcgcmVnKQorICAgICAgICA6IG1fdmFyaWFudChyZWcpCisgICAg
eworICAgIH0KKworICAgIFJlZyhKU1ZhbHVlUmVncyByZWdzKQorICAgICAgICA6IG1fdmFyaWFu
dChyZWdzKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzR1BSKCkgY29uc3QgeyByZXR1cm4g
bV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkdQUik7IH0K
KyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkZQUik7IH0KKyAgICBib29sIGlzSlNWYWx1ZVJlZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQuaW5kZXgoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVHlwZTo6SlNWYWx1ZSk7IH0KKworICAgIEdQUlJlZyBncHIoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzR1BSKCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6
OmdldDxHUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQorICAgIEZQUlJlZyBmcHIoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRlBSKCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBl
cmltZW50YWw6OmdldDxGUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQorICAgIEpTVmFsdWVSZWdz
IGpzVmFsdWVSZWdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0pTVmFsdWVSZWdz
KCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxKU1ZhbHVlUmVncz4o
bV92YXJpYW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpleHBlcmltZW50YWw6OnZh
cmlhbnQ8R1BSUmVnLCBGUFJSZWcsIEpTVmFsdWVSZWdzPiBtX3ZhcmlhbnQ7Cit9OworCit9IH0K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggM2NlZjk5ODM1MzU3Y2ZjYzRjYzlkN2QyYmIxNjJjZjk4YjBmZjI4ZS4uMGE3YzA1
MDZhZTkxNjA0Nzc1MjUzN2IyMzExZDFlM2ZmN2NlMjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjY1LDYgKzI2NSw4IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFy
ZVN0cmljdEVxOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKKyAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDI1ZGQ2NjdmNWQ4NTNm
Yzk3ZTMzZjYwZmU5MjFhMzA0MTVjYzU2ZDQuLmI4NWFiN2NiNjJkZGNhMGMyYzdlNDMyOTk2MDEx
OTc2YzFlMTU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oIgogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNp
bmNsdWRlICJERkdPU1JFeGl0RnV6ei5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIK
KyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgogI2luY2x1
ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5LmgiCkBAIC0xMDQzLDYgKzEwNDUsMTIgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgICAgIGNv
bXBpbGVVbnJlYWNoYWJsZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hl
Y2tET006CisgICAgICAgICAgICBjb21waWxlQ2hlY2tET00oKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBjb21waWxlQ2FsbERPTSgpOwor
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAg
IGNhc2UgTG9vcEhpbnQ6CkBAIC04NjU1LDYgKzg2NjMsOTQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgCiAgICAgICAgIGNyYXNoKCk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxl
Q2hlY2tET00oKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOworCisgICAgICAgIFJlZlB0cjxET01KSVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9
IG1fbm9kZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsKKyAgICAgICAg
cGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gZG9tSklULT5udW1GUFNjcmF0Y2hS
ZWdpc3RlcnM7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbV9vcmlnaW47CisgICAgICAgIHVuc2lnbmVkIG9zckV4aXRB
cmd1bWVudE9mZnNldCA9IHBhdGNocG9pbnQtPm51bUNoaWxkcmVuKCk7CisgICAgICAgIE9TUkV4
aXREZXNjcmlwdG9yKiBleGl0RGVzY3JpcHRvciA9IGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKGpz
VmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRDb2xkQW55cyhidWlsZEV4aXRBcmd1bWVudHMoZXhpdERlc2NyaXB0b3Is
IG9yaWdpbi5mb3JFeGl0LCBqc1ZhbHVlVmFsdWUoY2VsbCkpKTsKKworICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAg
IFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RlBSUmVn
PiBmcFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdzOwor
CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzBdLmdwcigpKTsKKworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFt
cy5ncFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRvbUpJVC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAg
ICAgIGZwU2NyYXRjaC5hcHBlbmQocGFyYW1zLmZwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0gZXhpdERlc2NyaXB0b3ItPmVtaXRP
U1JFeGl0TGF0ZXIoKnN0YXRlLCBCYWRUeXBlLCBvcmlnaW4sIHBhcmFtcywgb3NyRXhpdEFyZ3Vt
ZW50T2Zmc2V0KTsKKworICAgICAgICAgICAgICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBk
b21KSVRQYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZw
U2NyYXRjaCkpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVy
ZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKKwor
ICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmVDYXNlcywg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGhhbmRsZS0+bGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0
czo6Zm9yQ2hlY2soKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKKyAgICB7
CisgICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworCisgICAgICAgIFJlZlB0cjxET01KSVQ6OlBhdGNocG9p
bnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKKyAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAg
UmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVyczsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0g
ZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3Jh
dGNoOworICAgICAgICAgICAgICAgIFZlY3RvcjxET01KSVQ6OlJlZz4gcmVnczsKKworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBwYXRjaHBvaW50IHNob3VsZCBoYXZlIGEgd2F5IHRvIHRlbGwg
dGhpcyBjYW4gcmV1c2UgImJhc2UiIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAgIC8vIFRlYWNo
aW5nIERGRyBhYm91dCBET01KSVQ6OlBhdGNocG9pbnQgY2xvYmJlciBpbmZvcm1hdGlvbiBpcyBu
aWNlLgorICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSkpOworICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1sxXS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAg
ICAgICByZWdzLmFwcGVuZChwYXJhbXNbM10uZ3ByKCkpOworICAgICAgICAgICAgICAgIHJlZ3Mu
YXBwZW5kKHBhcmFtc1s0XS5ncHIoKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAg
ICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKKworICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUZQU2NyYXRj
aFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKHBh
cmFtcy5mcFNjcmF0Y2goaSkpOworCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0
aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBET01KSVQ6OlBhdGNo
cG9pbnRQYXJhbXMgZG9tSklUUGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNo
KSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAgICAgICBkb21KSVQtPmdlbmVyYXRv
cigpLT5ydW4oaml0LCBkb21KSVRQYXJhbXMpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxsKCk7CisgICAgICAgIHNldEpTVmFs
dWUocGF0Y2hwb2ludCk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGFyZUVxT2JqZWN0T3JP
dGhlclRvT2JqZWN0KEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJpZ2h0Q2hpbGQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzY5NDkxYTM2
N2JhNWZmMTQwYjUzODdiOGI1ZmMyYjdmOGM2YzY4MC4uYzZkOGJjM2VkZWM1ZTIzNGNlZmU3Mjc4
ZGJlYTU4NGEyN2I3M2Q2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCkBAIC0xMjA5LDkgKzEyMDksOSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIAogICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5k
IHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsKICAgICBl
bnVtIEV4Y2VwdGlvbkp1bXBXaWR0aCB7IE5vcm1hbEp1bXBXaWR0aCwgRmFySnVtcFdpZHRoIH07
Ci0gICAgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSnVt
cCBlbWl0RXhjZXB0aW9uQ2hlY2soCiAgICAgICAgIEV4Y2VwdGlvbkNoZWNrS2luZCA9IE5vcm1h
bEV4Y2VwdGlvbkNoZWNrLCBFeGNlcHRpb25KdW1wV2lkdGggPSBOb3JtYWxKdW1wV2lkdGgpOwot
ICAgIEp1bXAgZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSnVtcCBlbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2soKTsKIAogI2lmIEVO
QUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICBzdGF0aWMgdm9pZCBlbWl0Q291bnQoTWFjcm9B
c3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIsIGludDMyX3Qg
aW5jcmVtZW50ID0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjE1MDAwYjM4MjMxMjFjNzM2
YjI2YmQ3N2E0ODgyNDc5YTViZGM3ZS4uYjc5YTg3M2FjM2FmMDM0NjJkNmE3OTg5M2M1ZjM5NjM0
OTg0MjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKICNpbmNsdWRl
ICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Q29tcGxldGlvbi5oIgorI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUg
IkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgi
CiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCkBAIC01MzcsMTIgKzU0MSwxMzMgQEAgY2xhc3MgU2ltcGxlT2JqZWN0IDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1faGlk
ZGVuVmFsdWU7CiB9OwogCitjbGFzcyBET01KSVROb2RlIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIERPTUpJVE5vZGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBET01KSVROb2RlKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVE5vZGUqIGdldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVE5vZGU+KHZtLmhlYXAsIHNpemVv
ZihET01KSVROb2RlKSkpIERPTUpJVE5vZGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRl
ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gZ2V0dGVyOworICAgIH0KKwor
ICAgIGludDMyX3QgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZhbHVlKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKERPTUpJVE5vZGUsIG1fdmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAg
aW50MzJfdCBtX3ZhbHVlIHsgNDIgfTsKK307CisKK2NsYXNzIERPTUpJVEdldHRlciA6IHB1Ymxp
YyBET01KSVROb2RlIHsKK3B1YmxpYzoKKyAgICBET01KSVRHZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBET01KSVRHZXR0ZXIqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgRE9NSklUR2V0
dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVRHZXR0ZXI+KHZt
LmhlYXAsIHNpemVvZihET01KSVRHZXR0ZXIpKSkgRE9NSklUR2V0dGVyKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGdl
dHRlcjsKKyAgICB9CisKKyAgICBjbGFzcyBET01KSVROb2RlRE9NSklUIDogcHVibGljIERPTUpJ
VDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUpJVE5vZGVET01KSVQo
KQorICAgICAgICAgICAgOiBET01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0ZXI6OmN1c3Rv
bUdldHRlciwgbnVsbHB0ciwgRE9NSklUTm9kZTo6aW5mbygpKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZhaWx1cmVDYXNlczsKKyAgICAgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KGppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFs
LAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdw
cigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUg
KyAxKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZQorICAgICAgICB7
CisgICAgICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklU
OjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFt
cyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFt
c1swXS5qc1ZhbHVlUmVncygpOworICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNb
Ml0uZ3ByKCk7CisKKyAgICAgICAgICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhkb20sIERPTUpJVE5vZGU6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdHMucGF5bG9hZEdQ
UigpKTsKKyAgICAgICAgICAgICAgICBqaXQuYm94SW50MzIocmVzdWx0cy5wYXlsb2FkR1BSKCks
IHJlc3VsdHMpOworICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAg
ICAgICB9CisgICAgfTsKKworICAgIHN0YXRpYyBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
Tm9kZUdldHRlclNldHRlcigpCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
RE9NSklUTm9kZURPTUpJVD4gZ3JhcGg7CisgICAgICAgIHJldHVybiAmZ3JhcGguZ2V0KCk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIHsK
KyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBET01KSVQ6OkdldHRl
clNldHRlciogZG9tSklUID0gZG9tSklUTm9kZUdldHRlclNldHRlcigpOworICAgICAgICBDdXN0
b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBkb21KSVQtPnNldHRlcigpLCBkb21KSVQpOwor
ICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBSZWFkT25seSB8IEN1
c3RvbUFjY2Vzc29yKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9t
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCisgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgRE9NSklUTm9kZSog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPnZhbHVlKCkpKTsKKyAgICB9Cit9OwogCiBjb25z
dCBDbGFzc0luZm8gRWxlbWVudDo6c19pbmZvID0geyAiRWxlbWVudCIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRWxlbWVudCkgfTsKIGNvbnN0IENsYXNzSW5mbyBNYXNx
dWVyYWRlcjo6c19pbmZvID0geyAiTWFzcXVlcmFkZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE1hc3F1ZXJhZGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJvb3Q6OnNf
aW5mbyA9IHsgIlJvb3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJv
b3QpIH07CiBjb25zdCBDbGFzc0luZm8gSW1wdXJlR2V0dGVyOjpzX2luZm8gPSB7ICJJbXB1cmVH
ZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEltcHVyZUdldHRl
cikgfTsKIGNvbnN0IENsYXNzSW5mbyBDdXN0b21HZXR0ZXI6OnNfaW5mbyA9IHsgIkN1c3RvbUdl
dHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQ3VzdG9tR2V0dGVy
KSB9OworY29uc3QgQ2xhc3NJbmZvIERPTUpJVE5vZGU6OnNfaW5mbyA9IHsgIkRPTUpJVE5vZGUi
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVE5vZGUpIH07Citj
b25zdCBDbGFzc0luZm8gRE9NSklUR2V0dGVyOjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXIiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRlcikgfTsKIGNv
bnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogY29u
c3QgQ2xhc3NJbmZvIFNpbXBsZU9iamVjdDo6c19pbmZvID0geyAiU2ltcGxlT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaW1wbGVPYmplY3QpIH07CiBzdGF0
aWMgYm9vbCB0ZXN0MjYyQXN5bmNQYXNzZWQgeyBmYWxzZSB9OwpAQCAtNTcxLDYgKzY5Niw4IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHko
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZVJ1bnRpbWVBcnJheShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0
ZXJPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVj
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxl
Z2F0ZShFeGVjU3RhdGUqKTsKQEAgLTg1NSw2ICs5ODIsOCBAQCBjbGFzcyBHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3Jl
YXRlSW1wdXJlR2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3Jl
YXRlQ3VzdG9tR2V0dGVyT2JqZWN0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVh
dGVET01KSVROb2RlT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0LCAwKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QiLCBmdW5j
dGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3JlYXRlQnVpbHRpbiIsIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbiwgMik7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiY3JlYXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVHbG9iYWxP
YmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVn
YXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CkBAIC0xMzU5LDYgKzE0
ODgsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1c3Rv
bUdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jl
YXRlRE9NSklUTm9kZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVROb2RlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBET01K
SVRHZXR0ZXI6OmNyZWF0ZShleGVjLT52bSgpLCBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKSkpOwor
ICAgIERPTUpJVE5vZGUqIHJlc3VsdCA9IERPTUpJVE5vZGU6OmNyZWF0ZShleGVjLT52bSgpLCBz
dHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVj
dChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRHZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBET01K
SVRHZXR0ZXIqIHJlc3VsdCA9IERPTUpJVEdldHRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQm94LmggYi9Tb3VyY2UvV1RGL3d0Zi9Cb3guaAppbmRleCBhZDlk
NWM1NzNmMGJmMDVkMDgzZTNiNjViMjIyNzc1YmEzNDkyMTY3Li5iNjYxMzIxOTE5MTc1ODA2ODE0
YjQ2YTFkMjBhMmQxN2Q5OGFhNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Cb3guaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Cb3guaApAQCAtNDAsNiArNDAsMTAgQEAgY2xhc3MgQm94IHsK
ICAgICB7CiAgICAgfQogCisgICAgQm94KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICB9CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIEJveCBjcmVh
dGUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTEzNjExODhjY2M0MjFlMDgzYmNh
MjU0NmMzYWQ4OTRiMjY4MGUwOC4uODliNzJmYjA0YmVlOTJlNjY5NjFjNmFmODllZDY2NGJlMzdk
OGYyMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgaW5pdGlhbCBDaGVja0RPTSBh
bmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAqIHN0cmVz
cy9kb21qaXQtZ2V0dGVyLXByb3RvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKGFjY2Vzcyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItc3VwZXItcG9s
eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAg
ICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKGFjY2Vzcyk6CisKIDIwMTYtMTAtMDMgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEF1dG8tZ2VuZXJhdGUgV0FTTU9wcy5oLCBzaGFyZSB3
aXRoIHRlc3RpbmcgSlNPTiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQt
Z2V0dGVyLXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZiOWUyN2NlOWZhM2Y0MjBjYWI4NQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qcwpAQCAtMCww
ICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
OiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0MSA9IGNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdCgpOwordmFyIGRvbWppdDIgPSBjcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoKTsK
KworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdl
dHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKChpICYgMHgxKSA/IGRvbWppdDEgOiBkb21qaXQy
KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citk
b21qaXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFjY2Vzcyhkb21qaXQxKSwgODQpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1wcm90by5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2RvbWppdC1nZXR0ZXItcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiYTg4NGI4ZmNlYWNmNTJk
ZjYxYzUwMWUxNGRiOTg5MjkyMGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RvbWppdC1nZXR0ZXItcHJvdG8uanMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30K
KwordmFyIGRvbWppdCA9IGNyZWF0ZURPTUpJVE5vZGVPYmplY3QoKTsKK2Z1bmN0aW9uIGFjY2Vz
cyhkb21qaXQpCit7CisgICAgcmV0dXJuIGRvbWppdC5jdXN0b21HZXR0ZXIgKyBkb21qaXQuY3Vz
dG9tR2V0dGVyOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHNob3Vs
ZEJlKGFjY2Vzcyhkb21qaXQpLCA4NCk7CisKK3Nob3VsZEJlKGFjY2Vzcyh7IGN1c3RvbUdldHRl
cjogNDIgfSksIDg0KTsKK2RvbWppdC50ZXN0ID0gNDQ7CitzaG91bGRCZShhY2Nlc3MoZG9taml0
KSwgODQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1w
b2x5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU0ODdkZDNiNzRhMTg0NzEwMmQzMzY0OTkwNjMyZDI0YWNiZTM3YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMKQEAg
LTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdHMgPSBbXTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgZG9taml0cy5wdXNoKGNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdCgpKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4g
ZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbWppdHMu
bGVuZ3RoOyArK2opCisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXRzW2pdKSwgODQpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5qcyBiL0pTVGVzdHMv
c3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhMjg4NDJhNTZlMDZmNDQ2MGY3
ODU0OTVkZjU1MDlmN2I5YjMxZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rv
bWppdC1nZXR0ZXIuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRv
bWppdCA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOworCitmdW5jdGlvbiBhY2Nlc3MoZG9t
aml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsgZG9taml0LmN1c3RvbUdl
dHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZShh
Y2Nlc3MoZG9taml0KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6IDQy
IH0pLCA4NCk7Citkb21qaXQudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNjZXNzKGRvbWppdCksIDg0
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290692</attachid>
            <date>2016-10-04 23:42:28 -0700</date>
            <delta_ts>2016-10-05 15:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162941-20161004233917.patch</filename>
            <type>text/plain</type>
            <size>71496</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NTVlODk4YjllMThhMjBkYmQ5MTdmYjM2MzI5OGQ1YWJjZDRhZDZhLi5jYWQ2YzNhOGRkYjQyYjRk
NWE5MWFhOWM1YTc1OTc3MTA0Y2QzMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMTYtMTAtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxE
T00gaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjI5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBwcm90b3R5cGUgb2YgRE9NSklUIGFj
Y2VsZXJhdGVkIGdldHRlci4KKyAgICAgICAgV2UgYWRkIHR3byBuZXcgREZHIG5vZGVzLCBDaGVj
a0RPTSBhbmQgQ2FsbERPTS4KKworICAgICAgICBDaGVja0RPTSBpcyB1c2VkIHRvIGZpbHRlciBp
bmFwcHJvcHJpYXRlIHx0aGlzfCBvYmplY3QgZm9yIERPTSBnZXR0ZXIuIEl0cyBmdW5jdGlvbmFs
aXR5CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8ganNEeW5hbWljQ2FzdCdzIENoZWNrLiBZb3Ug
Y2FuIHVzZSBsaWtlICJDaGVja0RPTSwgQDEsIEpTTm9kZTo6aW5mbygpIiwKKyAgICAgICAgYW5k
IHRoaXMgQ2hlY2tET00gaW5jdXJzIGEgQmFkVHlwZSBleGl0IGlmIHRoZSBjbGFzcyBvZiB0aGUg
Z2l2ZW4gQDEgaXMgbm90IGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgSlNOb2RlOjppbmZvKCkuCisK
KyAgICAgICAgQ2FsbERPTSBpcyB1c2VkIHRvIGVtaXQgYWN0dWFsIERPTSBvcGVyYXRpb25zLiBJ
dCB0YWtlcyBHbG9iYWxPYmplY3QgYW5kIGNoZWNrZWQgRE9NCisgICAgICAgIG9iamVjdC4gQW5k
IGl0IHJldHVybnMgSlNWYWx1ZSBhcyBpdHMgcmVzdWx0LgorCisgICAgICAgIEJvdGggQ2hlY2tE
T00gYW5kIENhbGxET00gY2FuIHRha2UgYSBET01KSVQ6OlBhdGNocG9pbnQuIFRoaXMgaXMgc29t
ZXdoYXQgY29kZSBzbmlwcGV0CisgICAgICAgIGdlbmVyYXRvciwgYW5kIGlzIGluamVjdGFibGUg
dG8gREZHIGFuZCBGVEwuIERGRyBhbmQgRlRMIHNldCB1cCByZWdpc3RlcnMgY29ycmVjdGx5Cisg
ICAgICAgIGFjY29yZGluZyB0byBET01KSVQ6OlBhdGNocG9pbnQncyByZXF1aXJlbWVudCBhbmQg
aW52b2tlIHRoaXMgcGF0Y2hwb2ludCBnZW5lcmF0b3IgdG8gZW1pdCBjb2RlLgorICAgICAgICBX
aGlsZSBDYWxsRE9NIGFsd2F5cyByZXF1aXJlcyBhIHBhdGNocG9pbnQsIGlkZWFsbHkgQ2hlY2tE
T00gZG9lcyBub3QgcmVxdWlyZSBpdCBzaW5jZQorICAgICAgICBpc1N1YmNsYXNzT2YgY2hlY2sg
Y2FuIGJlIGltcGxlbWVudGVkIGluIERGRyAvIEZUTCBzaWRlLiBIb3dldmVyLCBzb21lIGNsYXNz
ZXMgaGF2ZSBhCisgICAgICAgIGZhc3RlciB3YXkgdG8gcXVlcnkgaXNTdWJjbGFzc09mLiBGb3Ig
ZXhhbXBsZSwgSlNOb2RlIGluIFdlYkNvcmUgaW50cm9kdWNlcyBhIHNwZWNpYWwKKyAgICAgICAg
SlNUeXBlIHRvIG9wdGltaXplIHRoaXMgcXVlcnkuIENoZWNrRE9NJ3MgcGF0Y2hwb2ludCBnaXZl
cyB1cyBhIGNoYW5jZSB0byBlbWl0IHNwZWNpYWwKKyAgICAgICAgZmFzdGVyIGNvZGUgZm9yIHN1
Y2ggYSBjYXNlLgorCisgICAgICAgIEJ5IGxldmVyYWdpbmcgYWJvdmUgbm9kZXMsIHdlIGNhbiBj
b25zdHJ1Y3QgRE9NSklUIGFjY2VsZXJhdGVkIGdldHRlci4gV2hlbiBERkcgcmVjb2duaXplcyB0
aGUKKyAgICAgICAgZ2l2ZW4gZ2V0dGVyIGNhbGwgaXMgQ3VzdG9tR2V0dGVyIGFuZCBpdCBoYXMg
RE9NSklUOjpHZXR0ZXJTZXR0ZXIgaW5mb3JtYXRpb24sIERGRyBlbWl0cyB0aGUgYWJvdmUgbm9k
ZXMuCisgICAgICAgIFdlIGltcGxlbWVudGVkIGEgcHJvdG90eXBlIGluIGpzYy5jcHAgc2hlbGwg
YXMgRE9NSklUR2V0dGVyIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm90
ZXMgYWJvdXQgdGhlIGZ1dHVyZSBleHRlbnNpb25zLgorCisgICAgICAgIDEuIEN1cnJlbnRseSwg
d2UgZG8gbm90IGFsbG93IENhbGxET00gdG8gZW1pdCBhbnkgZnVuY3Rpb24gY2FsbHMuIFRoaXMg
d2lsbCBiZSBleHRlbmRlZCBieQorICAgICAgICAgICBhZGRpbmcgYGFkZFNsb3dQYXRoQ2FsbGAg
ZnVuY3Rpb25hbGl0eSB0byBET01KSVQ6OlBhdGNocG9pbnQgbGF0ZXIuIEludGVyZXN0aW5nIHRo
aW5nIGlzIHRoYXQKKyAgICAgICAgICAgd2UgbmVlZCB0byBjcmVhdGUgYW4gYWJzdHJhY3Rpb24g
b3ZlciBERkcgc2xvdyBwYXRoIGNhbGwgYW5kIEZUTCBzbG93IHBhdGggY2FsbCEKKworICAgICAg
ICAyLiBDaGVja0RPTSBpcyBub3QgaGFuZGxlZCBpbiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
IHlldC4gQW5kIHdlIGhhdmUgYSBjaGFuY2UgdG8gbWVyZ2Ugc2V2ZXJhbCBDaGVja0RPTSBpbnRv
IG9uZS4KKyAgICAgICAgICAgRm9yIGV4YW1wbGUsIGdpdmVuIENoZWNrRE9NIEEgYW5kIENoZWNr
RE9NIEIgdG8gdGhlIHNhbWUgdGFyZ2V0LiBJZiBBIGlzIHN1YmNsYXNzIG9mIEIsIHdlIGNhbiBt
ZXJnZSB0aGVtIHRvIENoZWNrRE9NIEEuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0IzRWZmZWN0cy5oOgorICAgICAg
ICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2hlY2spOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om1ha2VzQ2FsbHMpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpkdW1w
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6Okdl
dEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVz
Ojppc0N1c3RvbSk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OnRha2VzU2xvd1BhdGgp
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjppc1NpbXBsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6ZmlsdGVyQ2xhc3NJ
bmZvKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0
ZXJDbGFzc0luZm8pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RPTUpJVCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6ZG9tSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDbGFzc0luZm8p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6T3BJbmZvV3JhcHBlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6
T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJzRm9yUGF0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9N
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzSW5mb1Nsb3cpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogZG9taml0
L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zOjp+UGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6
YXQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6Om9wZXJhdG9yW10p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmdwU2NyYXRjaCk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtczo6ZnBTY3JhdGNoKToKKyAgICAg
ICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjpQYXRjaHBvaW50UGFyYW1zKToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUUmVnLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpET01KSVQ6
OlJlZzo6UmVnKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6OmlzR1BSKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmlzRlBSKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpSZWc6Omlz
SlNWYWx1ZVJlZ3MpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlJlZzo6Z3ByKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpSZWc6OmZwcik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UmVnOjpqc1Zh
bHVlUmVncyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrRE9NKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5yZWFjaGFibGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqc2Mu
Y3BwOgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpET01KSVROb2RlKToKKyAgICAgICAgKFdU
Rjo6RE9NSklUTm9kZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6RE9NSklUTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6dmFsdWUpOgorICAgICAgICAo
V1RGOjpET01KSVROb2RlOjpvZmZzZXRPZlZhbHVlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0
dGVyOjpET01KSVRHZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdURjo6RE9NSklUR2V0dGVyOjpET01KSVROb2RlRE9NSklUOjpET01KSVROb2RlRE9NSklUKToK
KyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpkb21KSVROb2RlR2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KToK
KyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KToKKwogMjAxNi0xMC0w
NCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmcucHJv
dG90eXBlLnRvTG93ZXJDYXNlIHNob3VsZCBiZSBhIERGRy9GVEwgaW50cmluc2ljCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMz
MDI5MDZkODQ2YWJhMzI0NzM1YTU0ZDc5OTNhM2U3YjUyODJhZDguLmEyZTBlYmZmYzMwZDgxOWYz
MGI2NmQ3YWFhZDQxMmZlOTljY2MxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMDQg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJ
VF0gQWRkIGluaXRpYWwgQ2hlY2tET00gYW5kIENhbGxET00gaW1wbGVtZW50YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Cb3guaDoK
KyAgICAgICAgKFdURjo6Qm94OjpCb3gpOgorCiAyMDE2LTEwLTA0ICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2Ug
c2hvdWxkIGJlIGEgREZHL0ZUTCBpbnRyaW5zaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZGM0NDI2ZWJlY2I4MGVmZGJlZTQ4MWJiZTY4ZWQ4YmMzZTlmYWYxNy4uYjY5N2U2MTdj
MmE5OTMwMjcxNGE5YjczYjliMWJiZDY0ZDIxMzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwOTgsNiArMjA5OCw4IEBACiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsK
IAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzdBRDgzQzFEQTQ5Mjg2MDBGM0Q0MTIgLyogRE9NSklUUGF0
Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzdB
RDgzRDFEQTQ5Mjg2MDBGM0Q0MTIgLyogRE9NSklUUmVnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUmVnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNG
NzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5RDQ1RjUx
RDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8q
IEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwpAQCAtNDM5
Nyw2ICs0Mzk5LDggQEAKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzN0FEODNB
MURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFJl
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRSZWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlE
OUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNv
cmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE4Myw2ICs3MTg3LDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRH
ZXR0ZXJTZXR0ZXIuaCAqLywKIAkJCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklU
UGF0Y2hwb2ludC5oICovLAorCQkJCUUzN0FEODNBMURBNDkyODAwMEYzRDQxMiAvKiBET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmggKi8sCisJCQkJRTM3QUQ4M0IxREE0OTI4MDAwRjNENDEyIC8qIERP
TUpJVFJlZy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb21qaXQ7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzYwMCw2ICs3NjA2LDcgQEAKIAkJCQlFMzlENDVGNTFEMzkwMDU2MDBC
M0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIx
QzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3QUQ4M0QxREE0OTI4NjAwRjNENDEyIC8qIERPTUpJ
VFJlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzOTJDOEExQjQ2
MTg4NDAwODQ0NzI4IC8qIERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVG
QzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NDI4LDYgKzg0MzUsNyBAQAogCQkJCTk5NTlFOTJFMUJEMTdGQTQwMDFB
QTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQk3OUIxNzg4RTFEMzk5QjgwMDBCMUE1
NjcgLyogSklUTWF0aElDRm9yd2FyZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MTUzOUI5MTJE
Qzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzdBRDgzQzFEQTQ5
Mjg2MDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY3MDRCODUxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjQ3NjdGMUQ5OUFFQUQwMDhFQTZDQiAvKiBHQ0RlZmVycmFsQ29udGV4
dElubGluZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRWZmZWN0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CmluZGV4IGMwNDc0OGY2YTM4NzM1MGEwMzEwMzFlM2JjMWIwNTI5MDViZTljYTkuLmJlYzQ3ODY1
OGJkZTljZjI5N2Q5MGUyY2VhYjg2ZTEyMmExNzNhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNFZmZlY3RzLmgKQEAgLTc4LDYgKzc4LDE1IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgRWZmZWN0cyBmb3JDaGVjaygpCisg
ICAgeworICAgICAgICBFZmZlY3RzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmV4aXRzU2lkZXdh
eXMgPSB0cnVlOworICAgICAgICAvLyBUaGUgcHJvZ3JhbSBjb3VsZCByZWFkIGFueXRoaW5nIGFm
dGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9uIHVzIHRvIGRlY2xhcmUgdGhpcy4KKyAgICAgICAgcmVz
dWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IDE2MWFjZWQ3MmJhNjZiMTgx
N2E1ZjNhNDc5YmJiOTMzMTJkY2FjODkuLmEwODdmNTFlY2UxZGQyNWUxYzIyNDM2YTgzNzAzNzM3
ODcwMzg0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKQEAgLTYxNCw5ICs2
MTQsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIENoZWNrU3Vi
OgogICAgIGNhc2UgQ2hlY2tNdWw6CiAgICAgY2FzZSBDaGVjazoKLSAgICAgICAgcmVzdWx0LmV4
aXRzU2lkZXdheXMgPSB0cnVlOwotICAgICAgICAvLyBUaGUgcHJvZ3JhbSBjb3VsZCByZWFkIGFu
eXRoaW5nIGFmdGVyIGV4aXRpbmcsIGFuZCBpdCdzIG9uIHVzIHRvIGRlY2xhcmUgdGhpcy4KLSAg
ICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgcmVzdWx0ID0g
RWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVcHNpbG9uOgog
ICAgIGNhc2UgU2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwCmluZGV4IGNiNzZkMDVmMDlmMTg2NjY0YWNiM2JiZTBmYzc4ODY5MmYwMTA4
MjMuLjAzZjI4NWIwNjMzMzY5ZDdhY2ZhZTJhMjU5MzZlMzllNjU4NWQ5OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTI0Miw2
ICsyNDIsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBkb21KSVQgPSBh
Y2Nlc3MuZG9tSklUKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZG9tSklUKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gQ3VzdG9tOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ZGVmYXVsdDogewpAQCAtMjU5LDYgKzI2MCwxNiBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogCiAgICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoZG9tSklUKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEdpdmUg
dXAgd2hlbiBjdXRvbSBhY2Nlc3NlcyBhcmUgbm90IG1lcmdlZCBpbnRvIG9uZS4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5udW1WYXJpYW50cygpICE9IDEpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRlLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBHaXZlIHVwIHdo
ZW4gY3VzdG9tIGFjY2VzcyBhbmQgc2ltcGxlIGFjY2VzcyBhcmUgbWl4ZWQuCisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQubV9zdGF0ZSA9PSBDdXN0b20pCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRlLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IH0KICAg
ICAgICAgfQpAQCAtMzU2LDYgKzM2Nyw3IEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxs
cygpIGNvbnN0CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBOb0luZm9ybWF0aW9u
OgogICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKKyAgICBjYXNlIEN1c3RvbToKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGNhc2UgU2ltcGxlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X3ZhcmlhbnRzLnNpemUoKTsgaS0tOykgewpAQCAtMzk3LDYgKzQwOSw5IEBAIHZvaWQgR2V0QnlJ
ZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgU2ltcGxlOgog
ICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEN1
c3RvbToKKyAgICAgICAgb3V0LnByaW50KCJDdXN0b20iKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUYWtlc1Nsb3dQYXRoOgogICAgICAgICBvdXQucHJpbnQoIlRha2VzU2xvd1BhdGgiKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAppbmRleCBmNDllMTUzMjFmZDc4ZGU4Y2ZiMzM5YTRlNTM0OWFmN2MwOWQ4MTA5
Li44NGMzMzhlNTQyNmRlMmY3MjdlZjRjOGFhMmQ0ZjFmODZiNWE2N2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiAgICAgICAgIE5vSW5mb3JtYXRpb24sICAvLyBJdCdz
IHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgIFNpbXBsZSwgICAg
ICAgICAvLyBJdCdzIGNhY2hlZCBmb3IgYSBzaW1wbGUgYWNjZXNzIHRvIGEga25vd24gb2JqZWN0
IHByb3BlcnR5IHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcG9zc2libGUgc3Ry
dWN0dXJlIGNoYWluIGFuZCBhIHBvc3NpYmxlIHNwZWNpZmljIHZhbHVlLgorICAgICAgICBDdXN0
b20sICAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgY3VzdG9tIGFjY2Vzc29yIHdpdGggYSBw
b3NzaWJsZSBzdHJ1Y3R1cmUgY2hhaW4uCiAgICAgICAgIFRha2VzU2xvd1BhdGgsICAvLyBJdCdz
IGtub3duIHRvIG9mdGVuIHRha2Ugc2xvdyBwYXRoLgogICAgICAgICBNYWtlc0NhbGxzICAgICAg
Ly8gSXQncyBrbm93biB0byB0YWtlIHBhdGhzIHRoYXQgbWFrZSBjYWxscy4KICAgICB9OwpAQCAt
NjQsNyArNjUsNyBAQCBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKICAgICAgICAgOiBtX3N0YXRlKHN0
YXRlKQogICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlKSA9PSB2YXJpYW50LmlzU2V0KCkpOworICAgICAg
ICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSB8fCBzdGF0ZSA9PSBDdXN0b20pID09IHZhcmlhbnQu
aXNTZXQoKSk7CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAg
ICAKQEAgLTgyLDE0ICs4MywxNiBAQCBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CiAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIGJvb2wgaXNTaW1w
bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQorICAgIGJvb2wgaXNDdXN0
b20oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEN1c3RvbTsgfQogCiAgICAgc2l6ZV90IG51
bVZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50cy5zaXplKCk7IH0KICAgICBjb25z
dCBWZWN0b3I8R2V0QnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFudHM7IH0KICAgICBjb25zdCBHZXRCeUlkVmFyaWFudCYgYXQoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQogICAgIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9
CiAKLSAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRh
a2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzOyB9CisgICAgYm9vbCB0YWtlc1Ns
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3Rh
dGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbTsgfQogICAgIGJvb2wgbWFrZXND
YWxscygpIGNvbnN0OworICAgIGJvb2wgbWFrZXNDdXN0b21BY2Nlc3NlcygpIGNvbnN0OwogICAg
IAogICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDcxOWQ4ZjI3MjgzZjVkMTIzY2U1NzcxNTQ1ZTQ2OWJmODFhZmYyMjcu
LjI0MjUyOTJhZmY2MDU5YWFhNzhjYjg0OTdkMTg2YjliNTA0MmU2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMzUzLDYg
KzM1MywxMiBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSB0eXBlKQogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CisgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU1N0cmluZzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKKworICAgIGlm
IChjbGFzc0luZm8gPT0gU3ltYm9sOjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OworCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjRmluYWxPYmplY3Q7CiAgICAgCkBAIC0zODUsNiArMzkxLDkgQEAgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQogICAgIAogICAgIGlmIChpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CisKKyAgICBpZiAoY2xhc3NJbmZvLT5p
c1N1YkNsYXNzT2YoSlNBcnJheTo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVk
QXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTT2JqZWN0Ojpp
bmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAppbmRleCA1OTcyODE2
NjJlOGFkMWZmYWE4NTU2MjJjNzA1OWE0NzRiMmY0NDZlLi5iY2Y2ZDdlNzMxZmNkN2UwNTM1M2Fm
ZDY5YjhiOWE0MzkzZmJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaApAQCAtMTM0LDEwICsxMzQsMTcgQEAgY2xhc3MgQWJz
dHJhY3RJbnRlcnByZXRlciB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJCeVZhbHVlKGZvck5vZGUo
bm9kZSksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhUIG5vZGUsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlckNsYXNzSW5mbyhmb3JO
b2RlKG5vZGUpLCBjbGFzc0luZm8pOworICAgIH0KKwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmls
dGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBh
ZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJy
YXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZhbHVlKTsKKyAgICBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhBYnN0cmFjdFZhbHVlJiwgY29uc3QgQ2xh
c3NJbmZvKik7CiAgICAgCiAgICAgUGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKCkgeyByZXR1cm4g
bV9waGlDaGlsZHJlbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDJkNTBj
NjQ3ODYzOTZmY2EyODM0MDQwNjg2YzM5Y2U3ODFjOWIzMDIuLjlmNWYwZTA3MmM3YjQwZDNlZmEx
OGNjY2NkNTM4YzdkNWZhMDEwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJERkdBYnN0cmFj
dEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
Ikhhc2hNYXBJbXBsLmgiCkBAIC0yMjY4LDYgKzIyNjksMjggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuY2xlYXIoKTsgLy8gVGhlIHJlc3VsdCBpcyBub3QgYSBKUyB2YWx1ZS4KICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICBKU1ZhbHVlIGNvbnN0YW50
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbnN0YW50
KSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkgJiYgY29uc3RhbnQuYXNDZWxs
KCktPmluaGVyaXRzKG5vZGUtPmNsYXNzSW5mbygpKSkgeworICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNvbnN0
YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3ViQ2xhc3NPZihub2RlLT5jbGFz
c0luZm8oKSkpCisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
CisgICAgICAgIGZpbHRlckNsYXNzSW5mbyh2YWx1ZSwgbm9kZS0+Y2xhc3NJbmZvKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNr
QXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKQEAgLTMwNTYsNiArMzA3OSwxNiBAQCBGaWx0
cmF0aW9uUmVzdWx0IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0
ZXJCeVZhbHVlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KK0Zp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZp
bHRlckNsYXNzSW5mbygKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pCit7CisgICAgaWYgKHZhbHVlLmZpbHRlckNsYXNzSW5mbyhtX2dyYXBoLCBj
bGFzc0luZm8pID09IEZpbHRyYXRpb25PSykKKyAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsK
KyAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgIHJldHVybiBDb250cmFkaWN0aW9u
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZm
ZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsK
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IGMz
ZWZkYWNlZTc4ZDZhY2VlZjY1YTk4MzI4NDFiZDZmNDFiY2E0N2YuLmJmMWU0OTkwMDdhOThjMjRi
MGE5NDkzZjAwNzM5MWNiNmZjYTQ4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcApAQCAtMzA2LDYgKzMwNiwyMSBAQCBGaWx0cmF0aW9uUmVz
dWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVz
KQogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KCk7CiB9CiAKK0ZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiBncmFwaCwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgcmV0dXJuIEZp
bHRyYXRpb25PSzsKKworICAgIG1fdHlwZSAmPSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY2xh
c3NJbmZvKTsKKyAgICBtX3N0cnVjdHVyZS5maWx0ZXJDbGFzc0luZm8oY2xhc3NJbmZvKTsKKwor
ICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOworICAgIGZpbHRlclZhbHVlQnlUeXBlKCk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZUNs
YXJpdHkoZ3JhcGgpOworfQorCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRl
cihTcGVjdWxhdGVkVHlwZSB0eXBlKQogewogICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAppbmRl
eCAzMmViMGYxOWM1YzkxZjY3NzE4ZTczZDBhN2MzOGUxOWZjZjI4M2VmLi44YTkxMDE0MDc1NjNh
YjEzZWEwMGQ1YzZiY2U4ODRjNTkyODAzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7CiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1
ZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoY29uc3QgQWJzdHJhY3RWYWx1ZSYpOwor
ICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQ2xhc3NJbmZvKEdyYXBoJiwgY29uc3QgQ2xhc3NJ
bmZvKik7CiAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVy
cmVkVHlwZTo6RGVzY3JpcHRvciYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkZDcwZTNkZjAxMGZhZmM1NDBlMzQ0N2Nm
ZmFkOTA2ZTMzYTg1ODg5Li44Y2RmNTBhNDk5MzNmZWU1NDQ5M2Q2ZDYwYmUxOWRkZjJiM2JlNDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3Vs
YXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSog
aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsK
ICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvciYsIE5vZGVUeXBlID0gR2V0QnlPZmZzZXQpOworICAgIGJvb2wgaGFu
ZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYs
IE5vZGUqIHRoaXNOb2RlLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHByZXNlbmNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25v
d24gb2Zmc2V0IGFuZCBzdHJ1Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2
YWxpZGl0eSBvZiB0aGUgY29uZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlm
IGl0IGVuY291bnRlcnMgYSBjb250cmFkaWN0aW9uLgpAQCAtMjY3Myw2ICsyNjc0LDI4IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uc3QgR2V0QnlJZFZhcmlhCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCit7CisgICAgaWYgKCF2YXJpYW50LmRvbUpJVCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
ID0gdmFyaWFudC5kb21KSVQoKTsKKworICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGFjdHVhbGx5
IGxvb2sgdXAgQ3VzdG9tR2V0dGVyU2V0dGVyIGhlcmUuIENoZWNraW5nIFN0cnVjdHVyZXMgb3Ig
cmVnaXN0ZXJpbmcgd2F0Y2hwb2ludHMgYXJlIGVub3VnaCwKKyAgICAvLyBzaW5jZSByZXBsYWNl
bWVudCBvZiBDdXN0b21HZXR0ZXJTZXR0ZXIgYWx3YXlzIGluY3VycyBTdHJ1Y3R1cmUgdHJhbnNp
dGlvbi4KKyAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwor
CisgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdo
ZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1
Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCisgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZv
KGRvbUpJVCksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0luZm8oKSksIHRoaXNOb2RlKTsKKyAg
ICBOb2RlKiBnbG9iYWxPYmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05v
ZGUpOworICAgIGFkZFZhckFyZ0NoaWxkKGdsb2JhbE9iamVjdCk7IC8vIEdsb2JhbE9iamVjdCBv
ZiB0aGlzTm9kZSBpcyBhbHdheXMgdXNlZCB0byBjcmVhdGUgYSBET01XcmFwcGVyLgorICAgIGFk
ZFZhckFyZ0NoaWxkKHRoaXNOb2RlKTsKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgQ2FsbERPTSwgT3BJbmZvKGRvbUpJVCks
IE9wSW5mbyhwcmVkaWN0aW9uKSkpOworICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRB
cnJheUNvbnN0cnVjdG9yKAogICAgIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9u
KiBmdW5jdGlvbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LApAQCAtMzI2Nyw2ICszMjkwLDIwIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgZWxzZQogICAgICAgICBnZXRC
eUlkID0gVHJ5R2V0QnlJZDsKIAorICAgIC8vIFNwZWNpYWwgcGF0aCBmb3IgY3VzdG9tIGFjY2Vz
c29ycyBzaW5jZSBjdXN0b20ncyBvZmZzZXQgZG9lcyBub3QgaGF2ZSBhbnkgbWVhbmluZ3MuCisg
ICAgLy8gU28sIHRoaXMgaXMgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSBTaW1wbGUgb25lLiBC
dXQgd2UgaGF2ZSBhIGNoYW5jZSB0byBvcHRpbWl6ZSBpdCB3aGVuIHdlIHVzZSBET01KSVQuCisg
ICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNDdXN0b20oKSkgeworICAgICAgICBBU1NFUlQoZ2V0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgICAgICBBU1NFUlQoIWdldEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpKTsKKyAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5
SWRTdGF0dXNbMF07CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmRvbUpJVCgpKTsKKyAgICAgICAg
aWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlvbk9wZXJhbmQsIHZhcmlhbnQsIGJhc2Us
IHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQor
ICAgICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZEdldEJ5
SWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEFTU0VS
VCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCAhZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkp
OwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBlZDIzYWZhMzMzNjBjMTJkMzBhMGEwMTcw
YzQzMWZiM2FiYmQ3YzM5Li4xNzk5NjNkYmJkNzU3ZGExNzdjOTI1MWY5NTQ4MjZhZmFjNzRmYzQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtODg1LDYg
Kzg4NSwxNSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKEJ1dHRlcmZseUxvYywgSlNPYmplY3RfYnV0dGVyZmx5LCBub2RlLT5jaGlsZDEoKSksIExh
enlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBDaGVja0RPTToKKyAg
ICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5jbGFzc0luZm8oKSkpOworICAgICAgICBy
ZXR1cm47CisKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAg
ICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBBcnJheWlmeToKICAg
ICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKaW5kZXggNWQ2MzI5ZDI4ZjVmZjNiZjY1YTFjZmNhNDdhYTY3NzQxNjkz
NWUyZi4uZDliYzdlNzA5YTExY2Q0ZTNkMTliZWI1ZWI4ZTIwMDFiZjNhMGYwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKQEAgLTE1OCw2ICsxNTgsMjggQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBDaGVja0RPTTogeworICAgICAgICAgICAg
ICAgIEpTVmFsdWUgY29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSAmJiBjb25zdGFudC5hc0NlbGwoKS0+aW5oZXJpdHMo
bm9kZS0+Y2xhc3NJbmZvKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJl
dGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAgICAgICAgIGlmICh2
YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YkNsYXNzT2Yobm9kZS0+Y2xhc3NJbmZvKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOworICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxp
bWluYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAg
ICAgICAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xk
YWJsZVZpZXcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOWYx
M2M3MzdjODdlMzMyMjQ5OTFhMTVhZDk3OWQ4NzNiNjAzZmRlMi4uMDcxMWRlN2Y4MDc4M2U4NzJk
OTZkMzA2MWM4ZGZiNWZhNmM0OGFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKKyAgICBjYXNlIENhbGxET006CisgICAgY2FzZSBD
aGVja0RPTToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBj
YXNlIFNraXBTY29wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCmluZGV4IGQwNTg5NDk4MWQyOGY3MTc5NDk0YTdlYzAwMjkzODdhZmJmMGMyOWEuLmI1M2Fj
ODg3YTcyMjc0YmVlYTY2NDNiYjM2YjAxNjMwZTM4MTQ1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY5OSw2ICsxNjk5LDE1IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENh
bGxET006CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7IC8vIEdsb2JhbE9iamVjdC4KKyAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7IC8vIERPTS4KKyAgICAgICAgICAg
IGJyZWFrOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5v
LW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRs
ZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggOTlhODJjOWNkOTZhYTc4YzNiMDQwZWM1NGVkOWVl
MTJmMDFkZTgyNi4uNDIzN2E1MjYyNDk5MjFkMDNmY2JhNmY4OGJiMDY1NmE3ZTZiMTdmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHN0cnVj
dCBOb2RlIHsKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CisgICAgICAgIGNh
c2UgQ2FsbERPTToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxMiw3ICsyMzEzLDI4IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgQVNTRVJUKGhhc0Jhc2ljQmxvY2tMb2NhdGlvbigpKTsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEJhc2ljQmxvY2tMb2NhdGlvbio+KCk7CiAgICAgfQotICAgIAor
CisgICAgYm9vbCBoYXNET01KSVQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gQ2hlY2tET00gfHwgb3AoKSA9PSBDYWxsRE9NOworICAgIH0KKworICAgIERPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0RPTUpJVCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6R2V0dGVyU2V0dGVyKj4oKTsKKyAg
ICB9CisKKyAgICBib29sIGhhc0NsYXNzSW5mbygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gb3AoKSA9PSBDaGVja0RPTTsKKyAgICB9CisKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbygpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFzPGNvbnN0IENsYXNzSW5m
byo+KCk7CisgICAgfQorCiAgICAgTm9kZSogcmVwbGFjZW1lbnQoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fbWlzYy5yZXBsYWNlbWVudDsKQEAgLTIzOTIsNiArMjQxNCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICB1LmludDY0ID0gMDsKICAgICAgICAgICAgIHUucG9p
bnRlciA9IHBvaW50ZXI7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3JhcHBlcihjb25zdCB2
b2lkKiBjb25zdFBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOwor
ICAgICAgICAgICAgdS5jb25zdFBvaW50ZXIgPSBjb25zdFBvaW50ZXI7CisgICAgICAgIH0KICAg
ICAgICAgT3BJbmZvV3JhcHBlciYgb3BlcmF0b3I9KHVpbnQzMl90IGludDMyKQogICAgICAgICB7
CiAgICAgICAgICAgICB1LmludDY0ID0gMDsKQEAgLTI0MTUsMTIgKzI0NDIsMjMgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICAgICAgdS5wb2ludGVyID0gcG9pbnRlcjsKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0o
Y29uc3Qgdm9pZCogY29uc3RQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0
ID0gMDsKKyAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVyOworICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlLCBUPjo6dHlwZQorICAgICAg
ICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlICYmICFzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHUucG9pbnRlcik7CiAgICAgICAgIH0K
ICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0
byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWUgJiYgc3RkOjppc19jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+
Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUPih1LmNvbnN0UG9pbnRlcik7CisgICAgICAgIH0KKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlICYmIHNp
emVvZihUKSA9PSA0LCBUPjo6dHlwZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdS5p
bnQzMjsKQEAgLTI0MzQsNiArMjQ3Miw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHVp
bnQzMl90IGludDMyOwogICAgICAgICAgICAgdWludDY0X3QgaW50NjQ7CiAgICAgICAgICAgICB2
b2lkKiBwb2ludGVyOworICAgICAgICAgICAgY29uc3Qgdm9pZCogY29uc3RQb2ludGVyOwogICAg
ICAgICB9IHU7CiAgICAgfTsKICAgICBPcEluZm9XcmFwcGVyIG1fb3BJbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDhlYWY3MjRjOGEyOTliMTVjMDQ2OGUx
ZmNjYWIxZjg2Mzg0MjczMDIuLjcxNGI4YjI0ODhhNDZkMDNhMjRmMzc0NzM4OWUxZGU4YTg5MmJi
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM5OCw2ICsz
OTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSXNOb25F
bXB0eU1hcEJ1Y2tldCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBcCiAgICAgbWFjcm8oVG9M
b3dlckNhc2UsIE5vZGVSZXN1bHRKUykgXAorICAgIC8qIE5vZGVzIGZvciBET00gSklUICovXAor
ICAgIG1hY3JvKENoZWNrRE9NLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2FsbERP
TSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAK
IC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9y
IGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0
byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCBkNDdhOTcwOWMyOWI1MmQzYjVkOGVm
NGYzM2UwOWI1ZDdlNWNiZGU3Li41N2YzMzI5N2VlNzRlMWI3ZTRiYTVmODkzODY3ZjllYzQ3MDZk
MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQzLDYgKzQzLDcg
QEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpIHsgfQogI2VuZGlmCiAgICAg
ZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpKSB7IH0KKyAgICBleHBsaWNp
dCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQogICAgIHVpbnQ2NF90
IG1fdmFsdWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDU2YmE1NzEzNDY1M2Uy
MDRlNzE5ZGQ1YzJmYjA4NmE5ZGUwZTFmNGEuLmJlYTM2MTY3Y2QwZTVhOTViNWU4NTA3ODNiNTA4
MmM2MjQ0NTY1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC02OTksNyArNjk5LDggQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgICAgICBjYXNlIFRvTnVtYmVyOiB7
CisgICAgICAgIGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MjQsNiArODI1LDkgQEAgY2xhc3Mg
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIENoZWNrRE9NOgorICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKICAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZGE4MmQ3YjZj
YjI5MDQ5OTc2YmY0M2QwZTJmYmE1ZjE5M2FmZjJjZC4uZmEzMjdjOTdjYjU3NjI0Y2QwMWQ3MDRh
OTdhN2I4NWQ2YThkYzM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CisgICAgY2FzZSBDYWxsRE9NOgorICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBD
aGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0
dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCAzZTE3ZGVjMzU4ZjBhOTQ5NDhiYjkzYWE0MDljOWNiODkxZDU3NjJkLi5kMmRiNzBh
ZjE2MjE4ZDBjMjU0NmI2ZGU4OTlmNWJmOThkYzQ0NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFs
U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50
UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiSklUQWRk
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCkBAIC03MTExLDYg
KzcxMTMsNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ1dHRlcmZseShOb2Rl
KiBub2RlKQogICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAorc3RhdGlj
IHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZl
SklUKiBqaXQsIFZlY3RvcjxHUFJUZW1wb3Jhcnk+JiBncEhvbGRlcnMsIFZlY3RvcjxGUFJUZW1w
b3Jhcnk+JiBmcEhvbGRlcnMsIFZlY3RvcjxHUFJSZWc+JiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJS
ZWc+JiBmcFNjcmF0Y2gsIERPTUpJVDo6UGF0Y2hwb2ludCYgcGF0Y2hwb2ludCkKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7
ICsraSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcG9yYXJ5KGppdCk7CisgICAgICAgIGdw
U2NyYXRjaC5hcHBlbmQodGVtcG9yYXJ5LmdwcigpKTsKKyAgICAgICAgZ3BIb2xkZXJzLmFwcGVu
ZChXVEZNb3ZlKHRlbXBvcmFyeSkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwYXRjaHBvaW50Lm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIEZQ
UlRlbXBvcmFyeSB0ZW1wb3Jhcnkoaml0KTsKKyAgICAgICAgZnBTY3JhdGNoLmFwcGVuZCh0ZW1w
b3JhcnkuZnByKCkpOworICAgICAgICBmcEhvbGRlcnMuYXBwZW5kKFdURk1vdmUodGVtcG9yYXJ5
KSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTShOb2Rl
KiBub2RlKQoreworICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBub2Rl
LT5kb21KSVQoKS0+Y2FsbERPTSgpOworCisgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOwor
ICAgIFZlY3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICBWZWN0b3I8RE9NSklUOjpSZWc+IHJl
Z3M7CisKKyAgICAvLyBGSVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxs
IHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdpc3Rlci4KKyAgICAvLyBUZWFjaGluZyBERkcgYWJv
dXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3QodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAwKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisKKyAgICByZWdzLmFwcGVuZChyZXN1bHQucmVncygpKTsKKyAg
ICByZWdzLmFwcGVuZChnbG9iYWxPYmplY3QuZ3ByKCkpOworICAgIHJlZ3MuYXBwZW5kKGJhc2Uu
Z3ByKCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8
R1BSUmVnPihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICByZWdzLmFwcGVuZChzdGF0
aWNfY2FzdDxHUFJSZWc+KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworI2VuZGlm
CisKKyAgICBWZWN0b3I8R1BSVGVtcG9yYXJ5PiBncFRlbXByYXJpZXM7CisgICAgVmVjdG9yPEZQ
UlRlbXBvcmFyeT4gZnBUZW1wcmFyaWVzOworICAgIGFsbG9jYXRlVGVtcG9yYXJ5UmVnaXN0ZXJz
Rm9yUGF0Y2hwb2ludCh0aGlzLCBncFRlbXByYXJpZXMsIGZwVGVtcHJhcmllcywgZ3BTY3JhdGNo
LCBmcFNjcmF0Y2gsIHBhdGNocG9pbnQuZ2V0KCkpOworICAgIERPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZw
U2NyYXRjaCkpOworICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4obV9qaXQsIHBhcmFt
cyk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQucmVncygpLCBub2RlKTsKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrRE9NKE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklY
TUU6IFdlIGNhbiBhZGQgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIHRoYXQgaW5saW5lcyBq
c0R5bmFtaWNDYXN0IHRoaW5ncyBoZXJlLgorICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBh
dGNocG9pbnQgPSBub2RlLT5kb21KSVQoKS0+Y2hlY2tET00oKTsKKworICAgIFZlY3RvcjxHUFJS
ZWc+IGdwU2NyYXRjaDsKKyAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgVmVjdG9y
PERPTUpJVDo6UmVnPiByZWdzOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
IHJlZ3MuYXBwZW5kKGJhc2VHUFIpOworCisgICAgVmVjdG9yPEdQUlRlbXBvcmFyeT4gZ3BUZW1w
cmFyaWVzOworICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmllczsKKyAgICBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBm
cFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50LmdldCgpKTsKKwor
ICAgIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QgZmFpbHVyZUNhc2VzID0gcGF0Y2hwb2ludC0+Z2VuZXJhdG9yKCktPnJ1bihtX2ppdCwg
cGFyYW1zKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLT5jaGlsZDEoKSwgZmFpbHVyZUNhc2VzKTsKKyAgICBu
b1Jlc3VsdChub2RlKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjp0ZW1wb3JhcnlSZWdp
c3RlckZvclB1dEJ5VmFsKEdQUlRlbXBvcmFyeSYgdGVtcG9yYXJ5LCBBcnJheU1vZGUgYXJyYXlN
b2RlKQogewogICAgIGlmICghcHV0QnlWYWxXaWxsTmVlZEV4dHJhUmVnaXN0ZXIoYXJyYXlNb2Rl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCA1MzZlZDc5ZmIzZTllZGIwNzY2MjhjNzgyZmYwMWQ2MjRmODY0YTExLi4wZGI2MjUwODc0ODBi
Njk5MWQxMGI2Y2MyMDRiOTVkNjI4MmY5MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yNTQzLDYgKzI1NDMsOCBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2Fs
bERPTShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSopOwogICAgIAogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9wZXJhbmRUeXBl
LCB0eXBlbmFtZSBQcm9wZXJ0eU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9wZXJhbmRUeXBl
LCB0eXBlbmFtZSBUYWdUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYzk1OTQ5ZWU3YzM1ZGQyMzkyMGUwZDQ1
YWFlYzU5ZGVjYTVlMjhkOC4uOWFhMDkzYTgyMzQzMTE1NmQ4ODRkOTQxYWM5YmJkNWM2YjcwYTBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC01NDM1LDYgKzU0MzUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENh
bGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGNvbXBpbGVDaGVja0RPTShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICB1bnJlYWNoYWJsZShu
b2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA0ZGQyMWRkMzZkYmQ1NzAwODdkZDNjODVhODQy
MjBkOGM2OWUzNGI1Li5jMGNmNDIzZDk1ZTY4ZWVjZDM0NTNkMWIwZTJhNDcyMzQxNDAxZjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTU1NjYsNiArNTU2NiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9N
KG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tET006CisgICAgICAgIGNv
bXBpbGVDaGVja0RPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoRlRMX0pJ
VCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5j
cHAKaW5kZXggN2E4MjNlZTg2Y2E5M2FkYWI0NjMzNGQ1ZGVmMjI2MTZlNzcyYjAzOC4uODhkNTc3
NTY5YWY5YjAzZGM5OGQ0Y2NjNGI3ZjdjNGE3MTI4MjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCkBAIC0y
NTgsNiArMjU4LDE1IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyhT
cGVjdWxhdGVkVHlwZSB0eXBlKQogICAgICAgICB9KTsKIH0KIAordm9pZCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KQoreworICAgIEFTU0VSVCghaXNUb3AoKSk7CisgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigKKyAg
ICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgcmV0dXJuIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pOworICAgICAgICB9
KTsKK30KKwogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQpAQCAtMzE5LDYgKzMy
OCwxOSBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNvbnN0IFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBvdmVybGFwcyhvdGhl
ci5tX3NldCk7CiB9CiAKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJDbGFzc09m
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAoreworICAgIGlmIChpc0luZmluaXRl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE5vdGUgdGFodCB0aGlzIGZ1bmN0
aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RydWN0dXJlIHNldCBpcyBlbXB0eS4KKyAgICBmb3Ig
KGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlIDogbV9zZXQpIHsKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikgY29uc3QKIHsKICAgICBBU1NFUlQobV9zZXQubV9wb2ludGVyICE9IG90aGVyLm1f
c2V0Lm1fcG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCmluZGV4IGNhOTRhNzliNzQ3YmQ5MTI2OGIxMmNlMmQw
ODQyMTc4MGY3NjI5NjMuLjUxZjc5MzdkNTUxODFmNWZmNmM1NmNmNDAwZWU1OTQ1YTM5MjgxNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZS5oCkBAIC0xNjMsNiArMTYzLDEyIEBAIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWUgewogICAgICAgICBpZiAoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSkKICAgICAgICAgICAg
IGZpbHRlclNsb3codHlwZSk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRl
ckNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICB7CisgICAgICAgIGlm
IChpc05laXRoZXJDbGVhck5vclRvcCgpKQorICAgICAgICAgICAgZmlsdGVyQ2xhc3NJbmZvU2xv
dyhjbGFzc0luZm8pOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKICAgICB7CkBA
IC0yMzEsNiArMjM3LDggQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAg
ICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBi
b29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdDsK
KworICAgIGJvb2wgaXNTdWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIAog
ICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29u
c3Q7CiAgICAgCkBAIC0yNDEsNiArMjQ5LDcgQEAgY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNsb2JiZXJlZFN1cHJlbWFjeVRocmVzaG9s
ZCA9IDI7CiAgICAgCiAgICAgdm9pZCBmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5cGUpOwor
ICAgIHZvaWQgZmlsdGVyQ2xhc3NJbmZvU2xvdyhjb25zdCBDbGFzc0luZm8qKTsKICAgICBib29s
IG1lcmdlU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcik7CiAgICAgCiAg
ICAgYm9vbCBlcXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0
Y2hwb2ludFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRj
aHBvaW50UGFyYW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzODYzOTAwOTYwYTY4ZmRlMDhjZjRiYjA2MWQy
NDc0NWY3MWJjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21q
aXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJET01KSVRS
ZWcuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERPTUpJVCB7CisKK2NsYXNzIFBhdGNocG9pbnRQYXJhbXMgeworV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGF0Y2hwb2ludFBhcmFtcyk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGF0Y2hwb2lu
dFBhcmFtcygpIHsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
cy5zaXplKCk7IH0KKyAgICBjb25zdCBSZWcmIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX3JlZ3NbaW5kZXhdOyB9CisgICAgY29uc3QgUmVnJiBvcGVyYXRvcltdKHVuc2lnbmVk
IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIEdQUlJlZyBncFNjcmF0
Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZ3BTY3JhdGNoW2luZGV4XTsgfQor
ICAgIEZQUlJlZyBmcFNjcmF0Y2godW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZnBT
Y3JhdGNoW2luZGV4XTsgfQorCisgICAgUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8UmVnPiYmIHJl
Z3MsIFZlY3RvcjxHUFJSZWc+JiYgZ3BTY3JhdGNoLCBWZWN0b3I8RlBSUmVnPiYmIGZwU2NyYXRj
aCkKKyAgICAgICAgOiBtX3JlZ3MoV1RGTW92ZShyZWdzKSkKKyAgICAgICAgLCBtX2dwU2NyYXRj
aChXVEZNb3ZlKGdwU2NyYXRjaCkpCisgICAgICAgICwgbV9mcFNjcmF0Y2goV1RGTW92ZShmcFNj
cmF0Y2gpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICBWZWN0b3I8UmVnPiBtX3Jl
Z3M7CisgICAgVmVjdG9yPEdQUlJlZz4gbV9ncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4g
bV9mcFNjcmF0Y2g7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFJlZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRSZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIzODY2MzU2ZWNmMDdlYjI5MzViNjRiZjMw
ZjM2NzdkYjUzZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRSZWcuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZWcuaCIK
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgeworCisvLyBJdCBpcyBxdWl0ZSB1bmZvcnR1bmF0ZSB0
aGF0IDMyIGJpdCBlbnZpcm9ubWVudCBleGlzdHMgb24gREZHISBUaGlzIG1lYW5zIHRoYXQgSlNW
YWx1ZVJlZ3MgY29udGFpbnMgMiByZWdpc3RlcnMKKy8vIGluIHN1Y2ggYW4gZW52aXJvbm1lbnQu
IElmIHdlIHVzZSBHUFJSZWcgYW5kIEZQUlJlZyBpbiBET01KSVRQYXRjaHBvaW50UGFyYW1zLCBE
T01KSVRQYXRjaHBvaW50UGFyYW1zIG1heSBjb250YWluCisvLyBkaWZmZXJlbnQgbnVtYmVyIG9m
IHJlZ2lzdGVycyBpbiAzMmJpdCBhbmQgNjRiaXQgZW52aXJvbm1lbnRzIHdoZW4gd2UgcGFzcyBK
U1ZhbHVlUmVncywgaXQgaXMgY29uZnVzaW5nLgorLy8gVGhlcmVmb3JlLCB3ZSBpbnRyb2R1Y2Ug
YW4gYWJzdHJhY3Rpb24gdGhhdCBET01KSVQ6OlJlZywgd2hpY2ggaXMgYSBwb2x5bW9ycGhpYyBy
ZWdpc3RlciBjbGFzcy4gSXQgY2FuIHJlZmVyIEZQUlJlZywKKy8vIEdQUlJlZywgYW5kICJKU1Zh
bHVlUmVncyIuIE5vdGUgdGhhdCBpc0dQUigpIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSB0YXJn
ZXQgUmVnIGlzICJKU1ZhbHVlUmVncyIgZXZlbiBpZiB0aGUKKy8vIGVudmlyb25tZW50IGlzIDY0
Yml0LgorY2xhc3MgUmVnIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90
IHsKKyAgICAgICAgR1BSID0gMCwKKyAgICAgICAgRlBSID0gMSwKKyAgICAgICAgSlNWYWx1ZSA9
IDIsCisgICAgfTsKKworICAgIFJlZyhHUFJSZWcgcmVnKQorICAgICAgICA6IG1fdmFyaWFudChy
ZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhGUFJSZWcgcmVnKQorICAgICAgICA6IG1fdmFy
aWFudChyZWcpCisgICAgeworICAgIH0KKworICAgIFJlZyhKU1ZhbHVlUmVncyByZWdzKQorICAg
ICAgICA6IG1fdmFyaWFudChyZWdzKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzR1BSKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJpYW50LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFR5cGU6OkdQUik7IH0KKyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50
LmluZGV4KCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5cGU6OkZQUik7IH0KKyAgICBib29s
IGlzSlNWYWx1ZVJlZ3MoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnQuaW5kZXgoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6SlNWYWx1ZSk7IH0KKworICAgIEdQUlJlZyBncHIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzR1BSKCkpOworICAgICAgICByZXR1cm4gc3Rk
OjpleHBlcmltZW50YWw6OmdldDxHUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQorICAgIEZQUlJl
ZyBmcHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRlBSKCkpOworICAgICAgICBy
ZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxGUFJSZWc+KG1fdmFyaWFudCk7CisgICAgfQor
ICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc0pTVmFsdWVSZWdzKCkpOworICAgICAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6Omdl
dDxKU1ZhbHVlUmVncz4obV92YXJpYW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpl
eHBlcmltZW50YWw6OnZhcmlhbnQ8R1BSUmVnLCBGUFJSZWcsIEpTVmFsdWVSZWdzPiBtX3Zhcmlh
bnQ7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggZmJmODcxY2FmZmVkMzM4ZmI3ZjFhMTM1YzYyMTk2Mjlj
YzhhMmEwMi4uZTgwOGY0MzdhZDlhMDE4ZGRmZTQwMzAzN2NiYmMzNGYyNDI4ZTA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjY2LDYg
KzI2Niw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgorICAgIGNhc2UgQ2hlY2tET006CisgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOTZm
YWJhYTA1ODA3ZWU5ODFkZDdmMzNkMGM1M2NhZWM3NmNhMTgzMS4uOTg4OWZiMDZjYTVjZDE4NTdl
NDY5Y2FjYmJjZDYzNWRkNWI4OWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgIkRGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCisjaW5jbHVkZSAiRE9NSklUUGF0
Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCIKICNpbmNsdWRl
ICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgiCiAjaW5jbHVkZSAiRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCIKQEAgLTEwNDYsNiArMTA0OCwx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAg
ICAgICAgICAgY29tcGlsZVRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDaGVja0RPTToKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0RPTSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgICAgIGNvbXBpbGVD
YWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2Nh
bDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTg3MTIsNiArODcyMCw5NCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgY3Jhc2goKTsKICAgICB9CisKKyAgICB2
b2lkIGNvbXBpbGVDaGVja0RPTSgpCisgICAgeworICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgUmVmUHRyPERPTUpJVDo6UGF0Y2hwb2lu
dD4gZG9tSklUID0gbV9ub2RlLT5kb21KSVQoKS0+Y2hlY2tET00oKTsKKworICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
OworICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51
bUZQU2NyYXRjaFJlZ2lzdGVyczsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0
ZTsKKyAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX29yaWdpbjsKKyAgICAgICAgdW5zaWdu
ZWQgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0ID0gcGF0Y2hwb2ludC0+bnVtQ2hpbGRyZW4oKTsKKyAg
ICAgICAgT1NSRXhpdERlc2NyaXB0b3IqIGV4aXREZXNjcmlwdG9yID0gYXBwZW5kT1NSRXhpdERl
c2NyaXB0b3IoanNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZENvbGRBbnlzKGJ1aWxkRXhpdEFyZ3VtZW50cyhleGl0
RGVzY3JpcHRvciwgb3JpZ2luLmZvckV4aXQsIGpzVmFsdWVWYWx1ZShjZWxsKSkpOworCisgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgICAgIFZl
Y3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpS
ZWc+IHJlZ3M7CisKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMF0uZ3ByKCkp
OworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5h
cHBlbmQocGFyYW1zLmdwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAg
ICAgICAgICAgICAgICAgZnBTY3JhdGNoLmFwcGVuZChwYXJhbXMuZnBTY3JhdGNoKGkpKTsKKwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBoYW5kbGUgPSBleGl0RGVzY3Jp
cHRvci0+ZW1pdE9TUkV4aXRMYXRlcigqc3RhdGUsIEJhZFR5cGUsIG9yaWdpbiwgcGFyYW1zLCBv
c3JFeGl0QXJndW1lbnRPZmZzZXQpOworCisgICAgICAgICAgICAgICAgRE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zIGRvbUpJVFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCks
IFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXMgPSBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQ
YXJhbXMpOworCisgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFp
bHVyZUNhc2VzLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaGFuZGxlLT5sYWJlbCkpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVj
dHMgPSBFZmZlY3RzOjpmb3JDaGVjaygpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNhbGxE
T00oKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxs
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CisKKyAgICAgICAgUmVmUHRyPERPTUpJ
VDo6UGF0Y2hwb2ludD4gZG9tSklUID0gbV9ub2RlLT5kb21KSVQoKS0+Y2FsbERPTSgpOworICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihjZWxsKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVO
dW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcikp
OworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IGRvbUpJVC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOworICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hS
ZWdpc3RlcnMgPSBkb21KSVQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsKKworICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
ICAgIFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RlBS
UmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6UmVnPiByZWdz
OworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3
YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCisgICAgICAgICAgICAg
ICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBjbG9iYmVyIGluZm9y
bWF0aW9uIGlzIG5pY2UuCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQoSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzFd
LmdwcigpKTsKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbXNbMl0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKHBhcmFtc1szXS5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgcmVncy5hcHBlbmQocGFyYW1zWzRdLmdwcigpKTsKKworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytp
KQorICAgICAgICAgICAgICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHBhcmFtcy5ncFNjcmF0Y2go
aSkpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRvbUpJVC0+
bnVtRlBTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGZwU2NyYXRj
aC5hcHBlbmQocGFyYW1zLmZwU2NyYXRjaChpKSk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAgIERP
TUpJVDo6UGF0Y2hwb2ludFBhcmFtcyBkb21KSVRQYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgICAgICAgICAgICAgIGRvbUpJ
VC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIGRvbUpJVFBhcmFtcyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNhbGwoKTsKKyAgICAg
ICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21wYXJl
RXFPYmplY3RPck90aGVyVG9PYmplY3QoRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRl
eCA3Njk0OTFhMzY3YmE1ZmYxNDBiNTM4N2I4YjVmYzJiN2Y4YzZjNjgwLi5jNmQ4YmMzZWRlYzVl
MjM0Y2VmZTcyNzhkYmVhNTg0YTI3YjczZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEyMDksOSArMTIwOSw5IEBAIGNsYXNzIEFzc2VtYmx5
SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgCiAgICAgZW51bSBFeGNlcHRp
b25DaGVja0tpbmQgeyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVj
ayB9OwogICAgIGVudW0gRXhjZXB0aW9uSnVtcFdpZHRoIHsgTm9ybWFsSnVtcFdpZHRoLCBGYXJK
dW1wV2lkdGggfTsKLSAgICBKdW1wIGVtaXRFeGNlcHRpb25DaGVjaygKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKdW1wIGVtaXRFeGNlcHRpb25DaGVjaygKICAgICAgICAgRXhjZXB0aW9uQ2hlY2tL
aW5kID0gTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEV4Y2VwdGlvbkp1bXBXaWR0aCA9IE5vcm1hbEp1
bXBXaWR0aCk7Ci0gICAgSnVtcCBlbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2soKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKdW1wIGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygp
OwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQogICAgIHN0YXRpYyB2b2lkIGVtaXRD
b3VudChNYWNyb0Fzc2VtYmxlciYgaml0LCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRl
ciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBmMTUwMDBi
MzgyMzEyMWM3MzZiMjZiZDc3YTQ4ODI0NzlhNWJkYzdlLi5iNzlhODczYWMzYWYwMzQ2MmQ2YTc5
ODkzYzVmMzk2MzQ5ODQyM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjgsNiArMjgsOSBA
QAogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgi
CisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC03Miw2ICs3NSw3IEBACiAj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKQEAgLTUzNywxMiArNTQxLDEzMyBAQCBjbGFzcyBTaW1wbGVPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTQzo6VW5r
bm93bj4gbV9oaWRkZW5WYWx1ZTsKIH07CiAKK2NsYXNzIERPTUpJVE5vZGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgRE9NSklUTm9kZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
fQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVE5vZGUqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgRE9NSklU
Tm9kZSogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUTm9kZT4odm0u
aGVhcCwgc2l6ZW9mKERPTUpJVE5vZGUpKSkgRE9NSklUTm9kZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7
CisgICAgfQorCisgICAgaW50MzJfdCB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmFsdWUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRE9NSklUTm9kZSwgbV92YWx1ZSk7IH0KKworcHJp
dmF0ZToKKyAgICBpbnQzMl90IG1fdmFsdWUgeyA0MiB9OworfTsKKworY2xhc3MgRE9NSklUR2V0
dGVyIDogcHVibGljIERPTUpJVE5vZGUgeworcHVibGljOgorICAgIERPTUpJVEdldHRlcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
KyAgICB7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHR5cGVkZWYgRE9NSklUTm9k
ZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEp
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVEdl
dHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBET01KSVRHZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJ
VEdldHRlcj4odm0uaGVhcCwgc2l6ZW9mKERPTUpJVEdldHRlcikpKSBET01KSVRHZXR0ZXIodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICByZXR1cm4gZ2V0dGVyOworICAgIH0KKworICAgIGNsYXNzIERPTUpJVE5vZGVET01KSVQgOiBw
dWJsaWMgRE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRE9NSklU
Tm9kZURPTUpJVCgpCisgICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdl
dHRlcjo6Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVROb2RlOjppbmZvKCkpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9N
KCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhw
YXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlND
T2JqZWN0VHlwZSArIDEpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAg
ICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGRv
bSA9IHBhcmFtc1syXS5ncHIoKTsKKworICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGRvbSwgRE9NSklUTm9kZTo6b2Zmc2V0T2ZWYWx1ZSgpKSwgcmVzdWx0
cy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgICAgIGppdC5ib3hJbnQzMihyZXN1bHRzLnBh
eWxvYWRHUFIoKSwgcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6SnVtcExpc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVyU2V0
dGVyKiBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxET01KSVROb2RlRE9NSklUPiBncmFwaDsKKyAgICAgICAgcmV0dXJuICZncmFw
aC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIERP
TUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCk7Cisg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIGRvbUpJVC0+c2V0dGVyKCks
IGRvbUpJVCk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImN1c3RvbUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFJl
YWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IpOworICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBE
T01KSVROb2RlKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOworICAgIH0K
K307CiAKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8gPSB7ICJFbGVtZW50IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVtZW50KSB9OwogY29uc3QgQ2xh
c3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVyYWRlciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIpIH07CiBjb25zdCBDbGFzc0lu
Zm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoUm9vdCkgfTsKIGNvbnN0IENsYXNzSW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9
IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW1wdXJlR2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlcjo6c19pbmZvID0g
eyAiQ3VzdG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXIpIH07Citjb25zdCBDbGFzc0luZm8gRE9NSklUTm9kZTo6c19pbmZvID0geyAi
RE9NSklUTm9kZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklU
Tm9kZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9IHsgIkRPTUpJ
VEdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0
dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGlt
ZUFycmF5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJy
YXkpIH07CiBjb25zdCBDbGFzc0luZm8gU2ltcGxlT2JqZWN0OjpzX2luZm8gPSB7ICJTaW1wbGVP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNpbXBsZU9iamVj
dCkgfTsKIHN0YXRpYyBib29sIHRlc3QyNjJBc3luY1Bhc3NlZCB7IGZhbHNlIH07CkBAIC01NzEs
NiArNjk2LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVQcm94eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdChFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGluKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVy
ZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSopOwpAQCAtODU1LDYgKzk4Miw4IEBAIGNsYXNzIEds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAKICAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVJbXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwg
MSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0Iiwg
ZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlv
bih2bSwgImNyZWF0ZURPTUpJVE5vZGVPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVP
YmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVEdldHRlck9i
amVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAyKTsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJl
R2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKQEAg
LTEzNTksNiArMTQ4OCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJ
VE5vZGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIERPTUpJVEdldHRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIERPTUpJVEdldHRlcjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNO
dWxsKCkpKSk7CisgICAgRE9NSklUTm9kZSogcmVzdWx0ID0gRE9NSklUTm9kZTo6Y3JlYXRlKGV4
ZWMtPnZtKCksIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
R2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlcjo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkp
OworICAgIERPTUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0dGVyOjpjcmVhdGUoZXhlYy0+
dm0oKSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9
CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3guaCBiL1NvdXJjZS9XVEYvd3RmL0JveC5o
CmluZGV4IGFkOWQ1YzU3M2YwYmYwNWQwODNlM2I2NWIyMjI3NzViYTM0OTIxNjcuLmI2NjEzMjE5
MTkxNzU4MDY4MTRiNDZhMWQyMGEyZDE3ZDk4YWE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0JveC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JveC5oCkBAIC00MCw2ICs0MCwxMCBAQCBj
bGFzcyBCb3ggewogICAgIHsKICAgICB9CiAKKyAgICBCb3goc3RkOjpudWxscHRyX3QpCisgICAg
eworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0
aWMgQm94IGNyZWF0ZShBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMjExM2QwY2Nh
NDBlNmFiZDhhNTMzMjdkNTM5YzhmYWQ4ODYxM2FkLi4yZjdlOThiZDE2Y2JlOTg0YmM3YzMwNDEz
ZTM5MzdhZTc3MDJmOGY0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTEwLTA0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBpbml0aWFs
IENoZWNrRE9NIGFuZCBDYWxsRE9NIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1wb2x5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFjY2Vzcyk6CisgICAg
ICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItcHJvdG8uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoYWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRl
ci1zdXBlci1wb2x5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGFj
Y2Vzcyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoYWNjZXNzKToKKwogMjAxNi0xMC0wNCAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmcucHJvdG90eXBlLnRvTG93
ZXJDYXNlIHNob3VsZCBiZSBhIERGRy9GVEwgaW50cmluc2ljCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0
dGVyLXBvbHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzMTFlZjg5MWUwMzBlNjFhOGZiOWUyN2NlOWZhM2Y0
MjBjYWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIt
cG9seS5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgZG9taml0MSA9
IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOwordmFyIGRvbWppdDIgPSBjcmVhdGVET01KSVRH
ZXR0ZXJPYmplY3QoKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkKK3sKKyAgICByZXR1cm4g
ZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7Cit9CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgc2hvdWxkQmUoYWNjZXNzKChpICYgMHgxKSA/IGRv
bWppdDEgOiBkb21qaXQyKSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBjdXN0b21HZXR0ZXI6
IDQyIH0pLCA4NCk7Citkb21qaXQxLnRlc3QgPSA0NDsKK3Nob3VsZEJlKGFjY2Vzcyhkb21qaXQx
KSwgODQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1wcm90by5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNi
YTg4NGI4ZmNlYWNmNTJkZjYxYzUwMWUxNGRiOTg5MjkyMGQ2MAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItcHJvdG8uanMKQEAgLTAsMCArMSwxNyBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWppdCA9IGNyZWF0ZURPTUpJVE5vZGVPYmplY3QoKTsK
K2Z1bmN0aW9uIGFjY2Vzcyhkb21qaXQpCit7CisgICAgcmV0dXJuIGRvbWppdC5jdXN0b21HZXR0
ZXIgKyBkb21qaXQuY3VzdG9tR2V0dGVyOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKQorICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXQpLCA4NCk7CisKK3Nob3VsZEJlKGFjY2Vz
cyh7IGN1c3RvbUdldHRlcjogNDIgfSksIDg0KTsKK2RvbWppdC50ZXN0ID0gNDQ7CitzaG91bGRC
ZShhY2Nlc3MoZG9taml0KSwgODQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0
LWdldHRlci1zdXBlci1wb2x5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBl
ci1wb2x5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ODdkZDNiNzRhMTg0NzEwMmQzMzY0OTkwNjMyZDI0YWNi
ZTM3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1
cGVyLXBvbHkuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGRvbWpp
dHMgPSBbXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgZG9taml0cy5wdXNo
KGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpKTsKKworZnVuY3Rpb24gYWNjZXNzKGRvbWppdCkK
K3sKKyAgICByZXR1cm4gZG9taml0LmN1c3RvbUdldHRlciArIGRvbWppdC5jdXN0b21HZXR0ZXI7
Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBmb3IgKHZhciBqID0g
MDsgaiA8IGRvbWppdHMubGVuZ3RoOyArK2opCisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21q
aXRzW2pdKSwgODQpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRl
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhMjg4
NDJhNTZlMDZmNDQ2MGY3ODU0OTVkZjU1MDlmN2I5YjMxZQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1g
KTsKK30KKwordmFyIGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlck9iamVjdCgpOworCitmdW5j
dGlvbiBhY2Nlc3MoZG9taml0KQoreworICAgIHJldHVybiBkb21qaXQuY3VzdG9tR2V0dGVyICsg
ZG9taml0LmN1c3RvbUdldHRlcjsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkK
KyAgICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgODQpOworCitzaG91bGRCZShhY2Nlc3MoeyBj
dXN0b21HZXR0ZXI6IDQyIH0pLCA4NCk7Citkb21qaXQudGVzdCA9IDQ0Oworc2hvdWxkQmUoYWNj
ZXNzKGRvbWppdCksIDg0KTsK
</data>
<flag name="review"
          id="313858"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>