<?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>185682</bug_id>
          
          <creation_ts>2018-05-16 09:51:33 -0700</creation_ts>
          <short_desc>[JSC] JSC should have consistent InById IC</short_desc>
          <delta_ts>2018-05-22 04:57:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185842</dependson>
          <blocked>185803</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dominik.infuehr</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1424355</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-16 09:51:33 -0700</bug_when>
    <thetext>InById operation is now ad-hocly optimized. We should align it to GetById etc.
This bug introduces op_in_by_id, and op_in_by_val. And DFG should have InById and InByVal.
In DFG AI, and other places we are attempting to convert InByVal to InById. So current ad-hoc In IC can be refactored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424356</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-16 09:52:02 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #0)
&gt; InById operation is now ad-hocly optimized. We should align it to GetById
&gt; etc.
&gt; This bug introduces op_in_by_id, and op_in_by_val. And DFG should have
&gt; InById and InByVal.
&gt; In DFG AI, and other places we are attempting to convert InByVal to InById.
&gt; So current ad-hoc In IC can be refactored.

And we have a chance to fold it to constant :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425363</commentid>
    <comment_count>2</comment_count>
      <attachid>340758</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-18 16:40:24 -0700</bug_when>
    <thetext>Created attachment 340758
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425365</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-18 16:43:16 -0700</bug_when>
    <thetext>Attachment 340758 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:173:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 53 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>1425417</commentid>
    <comment_count>4</comment_count>
      <attachid>340773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 07:42:40 -0700</bug_when>
    <thetext>Created attachment 340773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425418</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-19 07:45:41 -0700</bug_when>
    <thetext>Attachment 340773 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:173:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 48 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>1425427</commentid>
    <comment_count>6</comment_count>
      <attachid>340775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 08:28:58 -0700</bug_when>
    <thetext>Created attachment 340775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425428</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-19 08:31:47 -0700</bug_when>
    <thetext>Attachment 340775 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:173:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 48 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>1425436</commentid>
    <comment_count>8</comment_count>
      <attachid>340777</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 09:38:33 -0700</bug_when>
    <thetext>Created attachment 340777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425437</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-19 09:42:14 -0700</bug_when>
    <thetext>Attachment 340777 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 56 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>1425441</commentid>
    <comment_count>10</comment_count>
      <attachid>340779</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 10:11:25 -0700</bug_when>
    <thetext>Created attachment 340779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425442</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-19 10:14:05 -0700</bug_when>
    <thetext>Attachment 340779 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 56 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>1425452</commentid>
    <comment_count>12</comment_count>
      <attachid>340783</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 11:54:02 -0700</bug_when>
    <thetext>Created attachment 340783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425453</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-19 11:57:45 -0700</bug_when>
    <thetext>Attachment 340783 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:172:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JIT.cpp:275:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:152:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 56 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>1425464</commentid>
    <comment_count>14</comment_count>
      <attachid>340783</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-19 12:59:51 -0700</bug_when>
    <thetext>Comment on attachment 340783
Patch

I love this change.  I was wanting to do this the whole time I was writing the instanceof IC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425467</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-19 13:21:36 -0700</bug_when>
    <thetext>Committed r231998: &lt;https://trac.webkit.org/changeset/231998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425468</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-19 13:22:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/40395093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425678</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 09:45:40 -0700</bug_when>
    <thetext>Committed r232017: &lt;https://trac.webkit.org/changeset/232017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425833</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-05-21 14:29:46 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; Committed r232017: &lt;https://trac.webkit.org/changeset/232017&gt;
32-bit JSC tests are still failing assertions after this fix:
https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/1957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425852</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-21 14:49:10 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 185842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425882</commentid>
    <comment_count>20</comment_count>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-05-21 15:12:52 -0700</bug_when>
    <thetext>I&apos;ve fixed this patch to also work on 32-bit architectures in this patch: https://bugs.webkit.org/show_bug.cgi?id=185845.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425951</commentid>
    <comment_count>21</comment_count>
      <attachid>340783</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-21 16:52:43 -0700</bug_when>
    <thetext>Comment on attachment 340783
Patch

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

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:181
&gt; +    generateFastCommon(jit, InlineAccess::sizeForPropertyAccess());

Don&apos;t we want a size tuned for &quot;in&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426034</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 21:54:37 -0700</bug_when>
    <thetext>Committed r232047: &lt;https://trac.webkit.org/changeset/232047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426035</commentid>
    <comment_count>23</comment_count>
      <attachid>340783</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 21:56:30 -0700</bug_when>
    <thetext>Comment on attachment 340783
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:181
&gt;&gt; +    generateFastCommon(jit, InlineAccess::sizeForPropertyAccess());
&gt; 
&gt; Don&apos;t we want a size tuned for &quot;in&quot;?

I think this is enough for now, since the changes between load v.s. in is very trivial (load property v.s. move constant).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426110</commentid>
    <comment_count>24</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-22 04:57:48 -0700</bug_when>
    <thetext>Sweet! I think it is a good time to get back work into https://bugs.webkit.org/show_bug.cgi?id=172888</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340758</attachid>
            <date>2018-05-18 16:40:24 -0700</date>
            <delta_ts>2018-05-19 07:42:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-185682-20180519084022.patch</filename>
            <type>text/plain</type>
            <size>107678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi43ZTY2YTIwZWVkYTY1NDk3
MzRmMDQzM2VmMjZjNTZhY2QzZDIwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTcgQEAKKzIwMTgtMDUtMTggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQp
OgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKEpT
Qzo6SW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKEpTQzo6SW5C
eUlkU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW5CeUlkU3RhdHVzOjpJbkJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpJbkJ5SWRT
dGF0dXM6OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjppc1NldCBj
b25zdCk6CisgICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6b3BlcmF0b3IhIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjppc1NpbXBsZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkluQnlJZFN0YXR1czo6bnVtVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbkJ5SWRT
dGF0dXM6OnZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkU3RhdHVzOjphdCBj
b25zdCk6CisgICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6b3BlcmF0b3JbXSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkluQnlJZFN0YXR1czo6dGFrZXNTbG93UGF0aCBjb25zdCk6CisgICAgICAg
IChKU0M6OkluQnlJZFN0YXR1czo6d2FzU2VlbkluSklUIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9JbkJ5SWRWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkluQnlJZFZhcmlh
bnQ6OkluQnlJZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50Ojp+SW5CeUlk
VmFyaWFudCk6CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6
SW5CeUlkVmFyaWFudDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6
OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFZhcmlhbnQu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmlzU2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SW5CeUlkVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5C
eUlkVmFyaWFudDo6c3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6
Y29uZGl0aW9uU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6b2Zmc2V0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6aXNQcm9wZXJ0eVVuc2V0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0SW5CeUlkU2VsZik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vh
a1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpwYXRjaGFibGVKdW1wKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEluQnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEluQnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlND
OjpJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6
Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRD
b21waWxlcjo6YWRkSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpJblJlY29yZDo6SW5SZWNv
cmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRJbik6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojpjb252ZXJ0VG9JbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZp
ZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICog
ZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVJbik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpKSVQpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRJ
bkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnlJRCk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpyZXBh
dGNoSW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpyZXNldEluKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5v
ZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluKTogRGVsZXRlZC4KKwogMjAxOC0wNS0xOCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgZXhjZXB0aW9u
IGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRmMjI0MDgzODcwMDg2NDQ1
YTYwM2RjMTBjZTg5OWU0NGFmNmZlNTIuLjQ3N2JjYTE2YzI1NDZjMTYwMTJlZTA2MzM4MmZkMDdi
Y2M3ZmU3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIxOSw2ICsyMTksOCBA
QCBieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuY3BwCitieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCitieXRlY29kZS9JbkJ5SWRW
YXJpYW50LmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGUzMjM5YTE1ZTQ1MzNj
ODdjMjIyOTFjMjYyNmExNjhhMTdiMzczZDEuLjgwMDlmMDVlZGRmZjA0YTg3Y2VhNGVjMWNjY2Q3
MmM2YWE3NWY3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTExOCw2ICsxMTgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIGNhc2UgQ2FjaGVUeXBlOjpQ
dXRCeUlkUmVwbGFjZToKICAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3du
ZXIsIFJlcGxhY2UsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5SWRT
ZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpOwogCisgICAgY2FzZSBDYWNoZVR5cGU6Oklu
QnlJZFNlbGY6CisgICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJ
bkhpdCwgc3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhYmU5YThhMjgyZWRmNGU3OGE0NjM4MzBmMzUwYjc2Zjk4
ZDBmNTBmLi4zZjljNTllNmI2ZGM4MTU5YzQ4ZDUxNTdhMTQ1MTVhYTg5N2ZiNjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAg
LTU1MSw2ICs1NTEsNTkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJ
ZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGkKICNlbmRpZgogfQogCit0
ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludElu
QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1
YkluZm9NYXAmIG1hcCkKK3sKKyAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0
aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKKworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
aWRlbnRpZmllcihpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworCisgICAgVU5VU0VEX1BBUkFN
KGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRm
b3JtIGNvbmZpZ3VyYXRpb25zLgorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKKyAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKKyAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKKworICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOworCisgICAgICAgIFN0cnVjdHVy
ZSogYmFzZVN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBz
dHViID0gbnVsbHB0cjsKKworICAgICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgewor
ICAgICAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoInNlbGYiKTsKKyAgICAgICAgICAgIGJhc2VTdHJ1Y3R1cmUgPSBzdHViSW5mby51LmJ5SWRT
ZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJzdHViIik7
CisgICAgICAgICAgICBzdHViID0gc3R1YkluZm8udS5zdHViOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAgICAgICAgIG91dC5wcmludGYo
InVuc2V0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChiYXNlU3RydWN0dXJlKSB7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIsICIpOworICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBi
YXNlU3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3R1YikKKyAg
ICAgICAgICAgIG91dC5wcmludCgiLCAiLCAqc3R1Yik7CisKKyAgICAgICAgb3V0LnByaW50Zigi
KSIpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG91dCk7CisgICAgVU5VU0VEX1BB
UkFNKG1hcCk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaz4KIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMo
UHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKQEAgLTEwMTIs
OCArMTA2NSwxNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1lIEJsb2NrOgogICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgY2FzZSBvcF9pbjogewotICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRp
b24sIGl0LCAiaW4iKTsKKyAgICBjYXNlIG9wX2luX2J5X2lkOiB7CisgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOworICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CisgICAgICAg
IHByaW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaW5fYnlfdmFsOiB7CisgICAgICAgIHByaW50
QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV92YWwiKTsKICAgICAgICAgZHVtcEFy
cmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1
bXBlci5oCmluZGV4IDdjZDA4Yzk1MjE3ZDRmYzVhYmI3YzM0Nzg2NjFmOTZmNzg2NjM4ODAuLjVl
ODk0M2VmMTNlMjZhMmZkZWJlY2ZlOWFhZTRhY2RkNTg0MTM2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCkBAIC03MSw2ICs3MSw3IEBA
IGNsYXNzIEJ5dGVjb2RlRHVtcGVyIHsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7CiAgICAgdm9p
ZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAg
dm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2Fj
aGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCA1NjI4ZGY1YjQ2MjE2M2ViMjk2MzIxZmU4NThkMDNiNmQ5Zjc2ZTU1Li4xNmYxZmI2MGMzZDY0
MGJkYWM5YmZhMjdiNmM3NTNmNjdmZmJkYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC04MCw3ICs4MCw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9pc19vYmplY3Rfb3JfbnVsbCIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfZnVuY3Rpb24iLCAibGVuZ3RoIiA6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2lzX2NlbGxfd2l0aF90eXBlIiwgImxlbmd0aCIg
OiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNSB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW5fYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbl9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2FycmF5X2xlbmd0aCIsICJsZW5ndGgiIDogOSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQiLCAibGVu
Z3RoIiA6IDkgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKaW5kZXggNzAxZDM2Y2ZhYzQ1MWIzYzg4MjM1NjYxYTEwNTcxNzIwMzU4MGRkZi4u
ZGI1MjJhYzJlNzExYTQ5YjNmMmQ5MmRlOGNhMjhiY2ViNTMxZTMyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE4Niw2ICsxODYs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0
OgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2RpcmVjdDoKICAgICBjYXNlIG9wX2dldF9hcnJheV9s
ZW5ndGg6CisgICAgY2FzZSBvcF9pbl9ieV9pZDoKICAgICBjYXNlIG9wX3R5cGVvZjoKICAgICBj
YXNlIG9wX2lzX2VtcHR5OgogICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOgpAQCAtMjI2LDcgKzIy
Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2Nr
LCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX3N0
cnVjdHVyZV9wbmFtZToKICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZToKICAg
ICBjYXNlIG9wX2dldF9ieV92YWw6Ci0gICAgY2FzZSBvcF9pbjoKKyAgICBjYXNlIG9wX2luX2J5
X3ZhbDoKICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9p
bnN0YW5jZW9mOgogICAgIGNhc2Ugb3BfYWRkOgpAQCAtNDU0LDcgKzQ1NSw4IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBjYXNl
IG9wX2lzX2NlbGxfd2l0aF90eXBlOgogICAgIGNhc2Ugb3BfaXNfZnVuY3Rpb246Ci0gICAgY2Fz
ZSBvcF9pbjoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgorICAgIGNhc2Ugb3BfaW5fYnlfdmFsOgog
ICAgIGNhc2Ugb3BfdG9fbnVtYmVyOgogICAgIGNhc2Ugb3BfdG9fc3RyaW5nOgogICAgIGNhc2Ug
b3BfdG9fb2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCA4ZjFhNGJkOTBlM2NhYjBiNWIwMmNmYmY4NjExYWRlMjU3OTMzNDQxLi5jY2Uw
YjZhMDA2OWY0MmI1OGUxOWQ4ZTk5NTJmYjFjM2I0ODcwNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTg5LDcgKzU4OSw3IEBAIGJvb2wg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGNhc2Ugb3BfaW46CisgICAgICAgIGNhc2Ugb3BfaW5fYnlfdmFsOgogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWw6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6IHsKICAg
ICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMV0udS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YWRlMWYzYmFhOTc3MzE4YmRmMzhiM2M3OTMxZWE0YmE5NzMzYTc3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0
YXR1cy5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
QnlJZFN0YXR1cy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tcGxl
eEdldFN0YXR1cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJQb2x5bW9y
cGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8
d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitib29sIEluQnlJZFN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIC8vIEF0
dGVtcHQgdG8gbWVyZ2UgdGhpcyB2YXJpYW50IHdpdGggYW4gYWxyZWFkeSBleGlzdGluZyB2YXJp
YW50LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChtX3ZhcmlhbnRzW2ldLmF0dGVtcHRUb01lcmdlKHZhcmlhbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoZXJl
IGlzIG5vIG92ZXJsYXAuIFdlIHNob3VsZCBoYXZlIHBydW5lZCBvdXQgb3Bwb3J0dW5pdGllcyBm
b3IKKyAgICAvLyBvdmVybGFwIGJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQgYW4gaW5saW5lIGNhY2hl
IGdvdCBpbnRvIGEgd2VpcmQgc3RhdGUuIFdlIGFyZQorICAgIC8vIGRlZmVuc2l2ZSBhbmQgYmFp
bCBpZiB3ZSBkZXRlY3QgY3JhenkuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFy
aWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0uc3RydWN0dXJl
U2V0KCkub3ZlcmxhcHModmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKK2Jvb2wgSW5CeUlkU3RhdHVz
OjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCit7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJv
ZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOworICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkQ2FjaGUpKQorICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29u
c3RhbnRDYWNoZSkpOworfQorI2VuZGlmCisKK0luQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgIEluQnlJ
ZFN0YXR1cyByZXN1bHQ7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCk7CisKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Ns
b3dQYXRoKCkgJiYgaGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCisg
ICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShtYXApOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisjaWYgRU5BQkxFKERGR19KSVQpCitJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgSW5CeUlkU3RhdHVzIHJl
c3VsdCA9IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2sobG9ja2VyLCBzdHViSW5mbywgdWlkKTsKKworICAgIGlmICghcmVzdWx0LnRha2VzU2xv
d1BhdGgoKSAmJiBJbkJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoSW5CeUlk
U3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjaWYgRU5BQkxFKEpJVCkKK0luQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAor
ICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBpZiAoIXN0dWJJbmZvIHx8ICFzdHVi
SW5mby0+ZXZlckNvbnNpZGVyZWQpCisgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbik7CisKKyAgICBpZiAoc3R1YkluZm8tPnRvb2tTbG93UGF0aCkKKyAgICAgICAgcmV0
dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKworICAgIC8vIEZpbmFsbHkgZmlndXJl
IG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KKyAgICBJbkJ5SWRTdGF0
dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOworICAgIHJlc3VsdC5tX3dh
c1NlZW5JbkpJVCA9IHRydWU7IC8vIFRoaXMgaXMgaW50ZXJlc3RpbmcgZm9yIGJ5dGVjb2RlIGR1
bXBpbmcgb25seS4KKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUpIHsKKyAgICBjYXNl
IENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjogeworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJbkRGR0Zvcklt
cHVyZVByb3BlcnR5KCkpCisgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIHRydWUpOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgICAgICBJbkJ5
SWRWYXJpYW50IHZhcmlhbnQ7CisgICAgICAgIHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXMpOworICAgICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQodmFyaWFudC5tX29mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisKKyAgICAgICAgdmFyaWFudC5tX3N0cnVjdHVyZVNl
dC5hZGQoc3RydWN0dXJlKTsKKyAgICAgICAgYm9vbCBkaWRBcHBlbmQgPSByZXN1bHQuYXBwZW5k
VmFyaWFudCh2YXJpYW50KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkaWRBcHBlbmQsIGRpZEFw
cGVuZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBDYWNoZVR5
cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIGxpc3QgPSBzdHViSW5mby0+
dS5zdHViOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8
IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IEFjY2Vzc0Nh
c2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CisgICAgICAgICAgICBpZiAoYWNjZXNz
LnZpYVByb3h5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCB0cnVlKTsKKworICAgICAgICAgICAgaWYgKGFjY2Vzcy51c2VzUG9seVByb3RvKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVl
KTsKKworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJl
KCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIC8vIFRo
ZSBudWxsIHN0cnVjdHVyZSBjYXNlcyBhcmlzZSBkdWUgdG8gYXJyYXkubGVuZ3RoLiBXZSBoYXZl
IG5vIHdheSBvZiBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgLy8gSW5CeUlkVmFyaWFudCBm
b3IgdGhvc2UsIGFuZCB3ZSBkb24ndCByZWFsbHkgaGF2ZSB0byBzaW5jZSB0aGUgREZHIGhhbmRs
ZXMgdGhvc2UKKyAgICAgICAgICAgICAgICAvLyBjYXNlcyBpbiBGaXh1cFBoYXNlIHVzaW5nIHZh
bHVlIHByb2ZpbGluZy4gVGhhdCdzIGEgYml0IGF3a3dhcmQgLSB3ZSBzaG91bGRuJ3QKKyAgICAg
ICAgICAgICAgICAvLyBoYXZlIHRvIHVzZSB2YWx1ZSBwcm9maWxpbmcgdG8gZGlzY292ZXIgc29t
ZXRoaW5nIHRoYXQgdGhlIEFjY2Vzc0Nhc2UgY291bGQgaGF2ZQorICAgICAgICAgICAgICAgIC8v
IHRvbGQgdXMuIEJ1dCwgaXQgd29ya3Mgd2VsbCBlbm91Z2guIFNvLCBvdXIgb25seSBjb25jZXJu
IGhlcmUgaXMgdG8gbm90CisgICAgICAgICAgICAgICAgLy8gY3Jhc2ggb24gbnVsbCBzdHJ1Y3R1
cmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0
cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29tcGxleEdldFN0YXR1cyBjb21w
bGV4R2V0U3RhdHVzID0gQ29tcGxleEdldFN0YXR1czo6Y29tcHV0ZUZvcihzdHJ1Y3R1cmUsIGFj
Y2Vzcy5jb25kaXRpb25TZXQoKSwgdWlkKTsKKyAgICAgICAgICAgIHN3aXRjaCAoY29tcGxleEdl
dFN0YXR1cy5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6U2hv
dWxkU2tpcDoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY2FzZSBD
b21wbGV4R2V0U3RhdHVzOjpUYWtlc1Nsb3dQYXRoOgorICAgICAgICAgICAgICAgIHJldHVybiBJ
bkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGNhc2UgQ29t
cGxleEdldFN0YXR1czo6SW5saW5lYWJsZTogeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYWNj
ZXNzLnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5IaXQ6Cisg
ICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbk1pc3M6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIHRvdGFsbHkgc3dlZXQgdG8gc3VwcG9ydCBtb3JlIG9m
IHRoZXNlIGF0IHNvbWUgcG9pbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGZ1dHVy
ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzA1MgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIHRydWUpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluQnlJZFZhcmlhbnQgdmFyaWFu
dCgKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIGNvbXBsZXhH
ZXRTdGF0dXMub2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhHZXRTdGF0dXMu
Y29uZGl0aW9uU2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFy
aWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhU
YWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCB0cnVlKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSklUKQor
CitJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5l
TWFwLAorICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBpZiAoZGZn
QmxvY2spIHsKKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGE7CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAorICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxv
Y2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBJbkJ5
SWRTdGF0dXMgcmVzdWx0OworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9ja2VyLCBkZmdNYXAuZ2V0KGNv
ZGVPcmlnaW4pLCB1aWQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Ns
b3dQYXRoKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIGlmIChoYXNF
eGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQorICAgICAg
ICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKworICAgICAg
ICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oZGZn
TWFwKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFz
ZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKK30KKwordm9pZCBJbkJ5
SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9z
dGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXZSBjb3Vs
ZCBhbHNvIGZpbHRlciB0aGUgdmFyaWFudHMgdGhlbXNlbHZlcy4KKworICAgIG1fdmFyaWFudHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoSW5CeUlkVmFyaWFudCYgdmFyaWFudCkg
LT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXZhcmlhbnQuc3RydWN0dXJlU2V0KCkub3Zl
cmxhcHMoc2V0KTsKKyAgICAgICAgfSk7CisKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkp
CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCit2b2lkIEluQnlJZFN0YXR1
czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOwor
ICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAg
b3V0LnByaW50KCJOb0luZm9ybWF0aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lt
cGxlOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiVGFrZXNTbG93UGF0aCIpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIsIGxpc3REdW1wKG1fdmFy
aWFudHMpLCAiLCBzZWVuSW5KSVQgPSAiLCBtX3dhc1NlZW5JbkpJVCwgIikiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbkJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
SWRTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGNmMjYyMmU4ZTIxNmNjMTBjZmUzOTc2NWY2NWYzODk2
NTc5ODBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luQnlJZFN0YXR1cy5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29u
Y3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKKwordHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0
dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7CisKK2NsYXNz
IEluQnlJZFN0YXR1cyB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIC8vIEl0
J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1h
dGlvbiwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2VzcyB0byBhIGtu
b3duIG9iamVjdCBwcm9wZXJ0eSB3aXRoCisgICAgICAgIC8vIGEgcG9zc2libGUgc3RydWN0dXJl
IGNoYWluIGFuZCBhIHBvc3NpYmxlIHNwZWNpZmljIHZhbHVlLgorICAgICAgICBTaW1wbGUsCisg
ICAgICAgIC8vIEl0J3Mga25vd24gdG8gb2Z0ZW4gdGFrZSBzbG93IHBhdGguCisgICAgICAgIFRh
a2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIEluQnlJZFN0YXR1cygpCisgICAgICAgIDogbV9z
dGF0ZShOb0luZm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBJbkJ5SWRT
dGF0dXMoU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChzdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2VzU2xvd1Bh
dGgpOworICAgIH0KKworCisgICAgSW5CeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBib29sIHdhc1Nl
ZW5JbkpJVCwgY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA9IEluQnlJZFZhcmlhbnQoKSkK
KyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1Nl
ZW5JbkpJVCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlKSA9PSB2YXJp
YW50LmlzU2V0KCkpOworICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1Yklu
Zm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsK
KyAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJ
bmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworCisj
aWYgRU5BQkxFKERGR19KSVQpCisgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1
YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OworI2VuZGlmCisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0K
KworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRp
b247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9Cisg
ICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisK
KyAgICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzLnNpemUo
KTsgfQorICAgIGNvbnN0IFZlY3RvcjxJbkJ5SWRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSBjb25z
dCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisgICAgY29uc3QgSW5CeUlkVmFyaWFudCYgYXQoc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQorICAgIGNvbnN0
IEluQnlJZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBh
dChpbmRleCk7IH0KKworICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aDsgfQorCisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25z
dCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorCisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNl
IHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlz
IG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQm
KTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorI2lm
IEVOQUJMRShERkdfSklUKQorICAgIHN0YXRpYyBib29sIGhhc0V4aXRTaXRlKENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisjaWYgRU5BQkxFKEpJVCkKKyAgICBz
dGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCk7CisjZW5kaWYKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3Qg
SW5CeUlkVmFyaWFudCYpOworCisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBWZWN0b3I8SW5CeUlk
VmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IwOWUyNTFkNDEzMGVhMmRhZmE1NmU0ZTlm
MDM5MjY0OTQzY2M0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW5CeUlkVmFyaWFudC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworSW5CeUlk
VmFyaWFudDo6SW5CeUlkVmFyaWFudChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0KQorICAgIDogbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQorICAgICwg
bV9jb25kaXRpb25TZXQoY29uZGl0aW9uU2V0KQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorewor
ICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkgeworICAgICAgICBBU1NFUlQob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpOworICAgICAgICBBU1NFUlQoY29uZGl0aW9uU2V0LmlzRW1wdHkoKSk7
CisgICAgfQorfQorCitJbkJ5SWRWYXJpYW50Ojp+SW5CeUlkVmFyaWFudCgpIHsgfQorCitJbkJ5
SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KGNvbnN0IEluQnlJZFZhcmlhbnQmIG90aGVyKQorICAg
IDogSW5CeUlkVmFyaWFudCgpCit7CisgICAgKnRoaXMgPSBvdGhlcjsKK30KKworSW5CeUlkVmFy
aWFudCYgSW5CeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEluQnlJZFZhcmlhbnQmIG90aGVy
KQoreworICAgIG1fc3RydWN0dXJlU2V0ID0gb3RoZXIubV9zdHJ1Y3R1cmVTZXQ7CisgICAgbV9j
b25kaXRpb25TZXQgPSBvdGhlci5tX2NvbmRpdGlvblNldDsKKyAgICBtX29mZnNldCA9IG90aGVy
Lm1fb2Zmc2V0OworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBJbkJ5SWRWYXJpYW50Ojph
dHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAobV9v
ZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX2NvbmRpdGlvblNldC5pc0VtcHR5KCkgIT0gb3RoZXIubV9jb25kaXRpb25TZXQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBtZXJnZWRDb25kaXRpb25TZXQ7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgbWVyZ2VkQ29uZGl0aW9uU2V0ID0gbV9jb25kaXRpb25TZXQubWVyZ2Vk
V2l0aChvdGhlci5tX2NvbmRpdGlvblNldCk7CisgICAgICAgIGlmICghbWVyZ2VkQ29uZGl0aW9u
U2V0LmlzVmFsaWQoKSB8fCAhbWVyZ2VkQ29uZGl0aW9uU2V0Lmhhc09uZVNsb3RCYXNlQ29uZGl0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fY29uZGl0aW9u
U2V0ID0gbWVyZ2VkQ29uZGl0aW9uU2V0OworCisgICAgbV9zdHJ1Y3R1cmVTZXQubWVyZ2Uob3Ro
ZXIubV9zdHJ1Y3R1cmVTZXQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSW5CeUlk
VmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRl
eHQob3V0LCAwKTsKK30KKwordm9pZCBJbkJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50
U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAoreworICAgIGlmICghaXNT
ZXQoKSkgeworICAgICAgICBvdXQucHJpbnQoIjxlbXB0eT4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG91dC5wcmludCgKKyAgICAgICAgIjwiLCBpbkNvbnRleHQoc3RydWN0dXJl
U2V0KCksIGNvbnRleHQpLCAiLCAiLCBpbkNvbnRleHQobV9jb25kaXRpb25TZXQsIGNvbnRleHQp
KTsKKyAgICBvdXQucHJpbnQoIiwgb2Zmc2V0ID0gIiwgb2Zmc2V0KCkpOworICAgIG91dC5wcmlu
dCgiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhjMjNlNDNiNjkyZmU1
ZTkxODc2OTNkYmQzNTBiNWNjZmQxZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIEdldHRlclNldHRlcjsKK30KKwor
Y2xhc3MgSW5CeUlkU3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0OworCitjbGFzcyBJbkJ5SWRW
YXJpYW50IHsKK3B1YmxpYzoKKyAgICBJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVjdHVyZVNldCYg
PSBTdHJ1Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgp
KTsKKworICAgIH5JbkJ5SWRWYXJpYW50KCk7CisKKyAgICBJbkJ5SWRWYXJpYW50KGNvbnN0IElu
QnlJZFZhcmlhbnQmKTsKKyAgICBJbkJ5SWRWYXJpYW50JiBvcGVyYXRvcj0oY29uc3QgSW5CeUlk
VmFyaWFudCYpOworCisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJ1Y3R1
cmVTZXQuc2l6ZSgpOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNT
ZXQoKTsgfQorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KKyAgICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgp
IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CisKKyAgICAvLyBBIG5vbi1lbXB0eSBjb25kaXRp
b24gc2V0IG1lYW5zIHRoYXQgdGhpcyBpcyBhIHByb3RvdHlwZSBsb2FkLgorICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQoKSBjb25zdCB7IHJldHVybiBt
X2NvbmRpdGlvblNldDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyBy
ZXR1cm4gb2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldDsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9N
ZXJnZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1w
Q29udGV4dCopIGNvbnN0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbkJ5SWRTdGF0
dXM7CisKKyAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CisgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggOTEzMGIxZTI1ZDQ0ZTY2MzU4MTdlYTc4
YTQ4M2VmOGNhZDY3OTc5MC4uZjM1MWY4MmJlZTBhNGQ3OTRkYTkwYzViODZiYzZkYmE1OWMzNzEz
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKQEAgLTI3Niw2ICsyNzYsMjUgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlM
ZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBKU0FycmF5KiBhcnIKICAgICByZXR1
cm4gbGlua2VkQ29kZUlubGluZTsKIH0KIAorYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIEdQUlJlZyBiYXNlID0gc3RhdGlj
X2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICBKU1ZhbHVlUmVncyB2
YWx1ZSA9IHN0dWJJbmZvLnZhbHVlUmVncygpOworCisgICAgYXV0byBicmFuY2hUb1Nsb3dQYXRo
ID0gaml0LnBhdGNoYWJsZUJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYml0
d2lzZV9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmUtPmlkKCkpKSk7CisgICAgaml0LmJveEJvb2xl
YW5QYXlsb2FkKHRydWUsIHZhbHVlLnBheWxvYWRHUFIoKSk7CisKKyAgICBib29sIGxpbmtlZENv
ZGVJbmxpbmUgPSBsaW5rQ29kZUlubGluZSgiaW4gYWNjZXNzIiwgaml0LCBzdHViSW5mbywgWyZd
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhicmFu
Y2hUb1Nsb3dQYXRoLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CisgICAgfSk7
CisgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7Cit9CisKIHZvaWQgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKICAgICBDQ2FsbEhlbHBlcnMg
aml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmlu
ZGV4IDk5NDhiM2I2Zjg1ZTkzNjMxNGNiMTk3MGMzYWM0NDM3YWI4ZTY4YmEuLmE0ZDAzMzVmOGFi
MDY2MDdkYWExMWJmMWJmMTZiMGU1OWI3ZjIxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBjbGFzcyBJbmxp
bmVBY2Nlc3MgewogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0
dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxl
bmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgdm9pZCByZXdp
cmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhT
dHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwogCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVs
IHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNpemUgb2YgYW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBs
YXRmb3Jtcy4gV2hlbiBhZGRpbmcgYSBuZXcgdHlwZSBvZiBJQywgaW1wbGVtZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApp
bmRleCBkNTgxOWFhYTlhZjQ2NTcwNGRlMWI0YWQ4MTY5ZDlhMzY3Y2M1NmI0Li4wNDIxOGRiMDQ3
ZDA5Y2VkNTViZDM3Mjc3NWE0N2M1NDE2N2Y5OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTgxLDYgKzgxLDE1
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlKiBiYXNlCiAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZz
ZXQ7CiB9CiAKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRJbkJ5SWRTZWxmKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OkluQnlJZFNlbGY7CisK
KyAgICB1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KAorICAgICAgICAqY29kZUJs
b2NrLT52bSgpLCBjb2RlQmxvY2ssIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgIHUuYnlJZFNl
bGYub2Zmc2V0ID0gb2Zmc2V0OworfQorCiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigp
CiB7CiAgICAgc3dpdGNoIChjYWNoZVR5cGUpIHsKQEAgLTkwLDYgKzk5LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKICAgICBj
YXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRS
ZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVU
eXBlOjpBcnJheUxlbmd0aDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwNiw2ICsxMTYs
NyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKICAgICBjYXNlIENhY2hl
VHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgogICAgIGNhc2Ug
Q2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2Vs
ZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yMzYsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIHJlc2V0UHV0QnlJRChjb2RlQmxvY2ssICp0aGlz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbjoKLSAgICAgICAgcmVz
ZXRJbigqdGhpcyk7CisgICAgICAgIHJlc2V0SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJl
c2V0SW5zdGFuY2VPZigqdGhpcyk7CkBAIC0yNTksNiArMjcwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbmNlcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBz
d2l0Y2ggKGNhY2hlVHlwZSkgewogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKICAg
ICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNoZVR5cGU6Oklu
QnlJZFNlbGY6CiAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZCh1LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsK
QEAgLTI4Miw2ICsyOTQsNyBAQCBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFu
c2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Y2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlk
UmVwbGFjZToKKyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICAgICAgcmV0dXJu
IHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAg
ICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6CiAgICAgICAgIHJldHVybiB1LnN0dWItPnByb3BhZ2F0
ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCAxNGZlZDk0ZWExZGY2Y2M0ODQxNzFjNzlm
MDk4OTA5YzJjZmQzZjExLi5lZmU2MTliNDQ5NTFmYjhmNjI3ZGRiOTUxZjVhZTg1MjA2MjEyNDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaApAQCAtNTgsNiArNTgsNyBAQCBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7
CiAgICAgVW5zZXQsCiAgICAgR2V0QnlJZFNlbGYsCiAgICAgUHV0QnlJZFJlcGxhY2UsCisgICAg
SW5CeUlkU2VsZiwKICAgICBTdHViLAogICAgIEFycmF5TGVuZ3RoCiB9OwpAQCAtNzIsNiArNzMs
NyBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGYo
Q29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNl
dCk7CiAgICAgdm9pZCBpbml0QXJyYXlMZW5ndGgoKTsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVw
bGFjZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5
T2Zmc2V0KTsKKyAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZSog
YmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogCiAgICAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIGNvbnN0IElkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4pOwogCkBAIC0xNzQsNyArMTc2LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAg
IFN0cnVjdHVyZVNldCBidWZmZXJlZFN0cnVjdHVyZXM7CiAgICAgCiAgICAgc3RydWN0IHsKLSAg
ICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0OyAvLyBU
aGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJQyBmb3IgKmJ5SWQgY2FjaGVz
LCBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9yICdpbicgYW5kICdpbnN0YW5j
ZW9mJyBjYWNoZXMuCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgSUMg
Zm9yICpieUlkIGNhY2hlcy4gb3IgdGhlIGxvY2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZvciAn
aW5zdGFuY2VvZicgY2FjaGVzLgogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwog
ICAgICAgICB1aW50MzJfdCBpbmxpbmVTaXplOwogICAgICAgICBpbnQzMl90IGRlbHRhRnJvbVN0
YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlvbjsKQEAgLTE5NSw3ICsxOTcsNyBAQCBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbyB7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIHBhdGNoLnN0YXJ0LmxhYmVsQXRP
ZmZzZXQocGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQpOyB9CiAgICAgQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBwYXRjaGFibGVKdW1wKCkKICAgICB7IAotICAg
ICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbiB8fCBhY2Nlc3NUeXBlID09
IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YpOworICAgICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBB
Y2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsKICAgICAgICAgcmV0dXJuIHBhdGNoLnN0YXJ0Lmp1bXBB
dE9mZnNldDxKU0ludGVybmFsUHRyVGFnPigwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggNmQ2NDQ5YjMwZTI3OGMzZWZhZTcwODJlZTllNzAwNWVmZDBiNTliNi4uZTE5OWU4ZjFiNDFj
MTM1NTM2NmRjNDg4NGQ1M2Q2ZTMzMzMxMDU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI2Njcs
MTAgKzI2NjcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YW5j
ZU9mQ3VzdG9tKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkKIHsKICAgICBVbmxpbmtlZEFycmF5UHJvZmls
ZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX2lu
KTsKKyAgICBlbWl0T3Bjb2RlKG9wX2luX2J5X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CkBAIC0y
Njc4LDYgKzI2NzgsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWcKICAgICByZXR1cm4gZHN0
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluQnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQor
eworICAgIGVtaXRPcGNvZGUob3BfaW5fYnlfaWQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAg
ICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRy
eUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHBy
b3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRyeUdl
dEJ5SWQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYjcyNTVhYzYyMTZlMDlkY2UxYWQ0ZDdjNjY5ZWM1
NDZhMmNiNDY3My4uOTc4MjhjYTUwZWZhOGI2NTJkZGZmNmU0ODI5OTMwODFkYTVlYmM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNjk0LDcgKzY5NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVn
aXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQotICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbkJ5VmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5CeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJ
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCAwN2E5YzkwN2E3ZTIxMzBhNDI0NGRmYTAwMTFmN2NhNTJiMDZl
OGE2Li5hNWZhNTI1ZDIxNjAyMWIwMGQ5NTVhZDlkZTYzYzExZjMzNmE1OGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMjgwLDEwICsyMjgwLDE2IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIFJlZ2lzdGVy
SUQqIEluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKKyAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQoKm1fZXhw
cjEpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fZXhwcjIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEluQnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBi
YXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9leHByMSktPnZhbHVlKCkpOwor
ICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBrZXkgPSBnZW5lcmF0b3IuZW1pdE5vZGVG
b3JMZWZ0SGFuZFNpZGUobV9leHByMSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX2V4cHIyLT5p
c1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEluKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwga2V5LmdldCgpKSwga2V5Lmdl
dCgpLCBiYXNlLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbkJ5VmFsKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwga2V5LmdldCgpKSwga2V5LmdldCgpLCBiYXNlLmdl
dCgpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWJkOGE1MzNiMWNlMWQ2NGM5MzIz
MzM5YzgwZjE0NzU4NzlmNDRjOS4uOWRhNWY0MWM4ZGI5ZDFmMTJjZjNhM2EzMTEzNDQ3NzFiMDcw
MTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzI1OSwxMCArMzI1OSwzMCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAotICAgIGNhc2UgSW46IHsKKyAgICBjYXNlIEluQnlJZDogewogICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRoZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4
aXN0cyBiYXNlZCBvbiBhYnN0cmFjdAogICAgICAgICAvLyB2YWx1ZSBpbmZvcm1hdGlvbi4KICAg
ICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgIGZpbHRlcihub2RlLT5jaGlsZDEoKSwgU3Bl
Y09iamVjdCk7CisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVh
bik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSW5CeVZhbDogeworICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBwcm9wZXJ0eSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBpZiAoSlNWYWx1ZSBjb25zdGFudCA9IHByb3BlcnR5LnZhbHVlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChjb25zdGFudC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGFzU3RyaW5nKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0b21pYygpKQorICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUgd2hlbiB0aGUgcHJvcGVydHkgZGVm
aW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKKyAgICAgICAgLy8gdmFsdWUgaW5mb3Jt
YXRpb24uCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBmaWx0ZXIobm9kZS0+Y2hp
bGQxKCksIFNwZWNPYmplY3QpOwogICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
U3BlY0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM4NzRmY2M1YjM2ZGQ5NDI3
NWFiMjUzMjY5NTUwYzEzMjM5NGUzZDUuLmViNDUyYTdiMWM4YTQzYjcwNjU4ODIwZjU5YzE5NWE3
ZmRiYTcxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2su
aCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1
ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCkBAIC0yMDcs
NiArMjA4LDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHZvaWQgaGFuZGxlUHV0QnlJ
ZCgKICAgICAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSog
dmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0KTsKKyAg
ICB2b2lkIGhhbmRsZUluQnlJZCgKKyAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgTm9k
ZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSW5CeUlkU3RhdHVzLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvblNpemUpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNo
cG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBp
ZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5v
IHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC00MzExLDYgKzQzMTQsMTMgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9IH0KIH0KIAordm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIE5vZGUq
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEluQnlJZFN0YXR1cyBpbkJ5SWRTdGF0
dXMsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5CeUlk
U3RhdHVzKTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdHJ1Y3Rpb25TaXplKTsKKyAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksIGFkZFRvR3JhcGgoSW5CeUlkLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksICBiYXNlKSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnByZXBhcmVUb1BhcnNlQmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBAIC02MzYzLDEx
ICs2MzczLDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19vYmplY3QpOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9pbikgLSAx
XS51LmFycmF5UHJvZmlsZSk7CisgICAgICAgIGNhc2Ugb3BfaW5fYnlfdmFsOiB7CisgICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlv
bltPUENPREVfTEVOR1RIKG9wX2luX2J5X3ZhbCkgLSAxXS51LmFycmF5UHJvZmlsZSk7CiAgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW4sIE9wSW5mbyhhcnJheU1vZGUuYXNX
b3JkKCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KSkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luKTsKKyAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X2luX2J5X2lkOiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBb
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CisKKyAgICAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07
CisgICAgICAgICAgICBJbkJ5SWRTdGF0dXMgaW5CeUlkU3RhdHVzID0gSW5CeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywgbV9kZmdDb2RlQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHVpZCk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IE9Q
Q09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgIGhhbmRsZUluQnlJZChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBpbkJ5
SWRTdGF0dXMsIG9wY29kZUxlbmd0aCk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9i
eV9pZCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2VudW1lcmFibGVfbGVuZ3RoOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNWNlZTY1YjY4NDNlY2E1MDg4ZWQxYTlhOTEwOTRmMzQw
NTdhYWE0NC4uZGFkYzkyZDg2N2U0YzQ0YTM0NjJkOGQ2ZGFiNjQ1ODA3NWFjZGQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM2LDcg
KzIzNiw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF90b19vYmplY3Q6
CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAg
Y2FzZSBvcF9pbjoKKyAgICBjYXNlIG9wX2luX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2luX2J5X2lk
OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGFkNjIzNjQ3YTc3MDQwYzBkM2I4MjZjZGMxYTM3MGMx
YTIzYjliZGMuLjU1MmVkZWZhZTUyYjg5ODk5ODA2MTg3ZWE5MWQyNzE3NWRmYzY1OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02MTksNyArNjE5LDgg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAg
ICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgot
ICAgIGNhc2UgSW46CisgICAgY2FzZSBJbkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNh
c2UgSGFzT3duUHJvcGVydHk6CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIFNldEZ1bmN0
aW9uTmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNzM3NDE4NTY2N2UwYmRiNzg3YTgzYjcwMmNiMTg5NTli
NTA2OWQwMS4uYjdlZGMwNjBmNDM2MjkzYWNhNDk4ODgzM2VhOTQ2MjBjNTcyY2EwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKQEAgLTYxNiw2ICs2MTYsMjMgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICBjYXNlIEluQnlWYWw6IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVl
JiBwcm9wZXJ0eSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKEpTVmFsdWUgY29uc3RhbnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY29uc3RhbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5R2V0VmFs
dWVJbXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0
b21pYygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVk
U3RyaW5nSW1wbCo+KHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JbkJ5SWQoaWRl
bnRpZmllck51bWJlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgVG9Q
cmltaXRpdmU6IHsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCaWdJbnQpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA5NzRkOTcxMzY2
ZmZkOGI3OTc4NmZiYjI2ZGVkM2FjMjViNjg3ZmRhLi40MTYyMTBhOTBjZWZiMGQ4M2Q5MGIxNTQ5
YTFmZWMwMjdjZDk1ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0xOTMsNyArMTkzLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXg6CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3Rh
bnQ6Ci0gICAgY2FzZSBJbjoKKyAgICBjYXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAg
ICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAwMTAx
ZDM3OWJjZDZmNzQ1ZTcyYTg4ZWMyMTlmYmNmMzI5ZTM4YTliLi45YTFkYzEzNmQwMTZlZGFhMmFm
MGEzNjBlZWQ3YmYzZTIwNjczYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTE0NjksNyArMTQ2OSwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbjogeworICAgICAgICBj
YXNlIEluQnlJZDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5CeVZh
bDogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQz
MigpKSB7CiAgICAgICAgICAgICAgICAgY29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KG5vZGUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAppbmRleCA1ZTVhN2E4NzUyNDQyNDFiNTI2YTlmMjRiNGZmNDBjZTk4
ODViZjYxLi41ZmQ1MGI4YzdmMDFlZTM2ZTFiMjczYWFjMjNhMGM4NjIyNzgzYWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjY1LDI2ICsy
NjUsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAg
ICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6
ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1faW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBpbmZvID0gKm1faW5zW2ldLm1fc3R1YkluZm87Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX2luc1tpXS5tX2p1bXApOwotICAgICAgICBpbmZvLnBhdGNo
LnN0YXJ0ID0gc3RhcnQ7Ci0KLSAgICAgICAgcHRyZGlmZl90IGlubGluZVNpemUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxp
bmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5tX2RvbmUpKTsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5saW5lU2l6ZSA+PSAwKTsKLSAgICAgICAgaW5mby5w
YXRjaC5pbmxpbmVTaXplID0gaW5saW5lU2l6ZTsKLQotICAgICAgICBpbmZvLnBhdGNoLmRlbHRh
RnJvbVN0YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwo
KSkpOwotCi0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAg
c3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5t
X3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7Ci0gICAgfQotICAgIAogICAgIGF1dG8gbGlu
a0NhbGxUaHVuayA9IEZ1bmN0aW9uUHRyPE5vUHRyVGFnPih2bSgpLT5nZXRDVElTdHViKGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZm9yIChh
dXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0g
KnJlY29yZC5pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDA1MGViN2MxNmY2ZGI5MDQ0ODliZDJiNzg2Y2QzZmQxZjAyOTQ1OWUuLmMxN2IwMzIx
MTQ4OGJmODU5YmU1NTUwNGUyZWFiMGFkZmE0MzQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTc2LDIzICs3Niw2IEBAIHN0cnVjdCBDYWxsTGlu
a1JlY29yZCB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX2Z1bmN0aW9uOwog
fTsKIAotc3RydWN0IEluUmVjb3JkIHsKLSAgICBJblJlY29yZCgKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAganVtcCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCi0g
ICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvKQotICAgICAgICA6IG1fanVtcChqdW1wKQotICAgICAgICAsIG1fZG9u
ZShkb25lKQotICAgICAgICAsIG1fc2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5lcmF0b3Ip
Ci0gICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fanVtcDsKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgbV9kb25lOwotICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQYXRoR2VuZXJh
dG9yOwotICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwotfTsKLQogLy8gPT09IEpJ
VENvbXBpbGVyID09PQogLy8KIC8vIERGRzo6SklUQ29tcGlsZXIgaXMgcmVzcG9uc2libGUgZm9y
IGdlbmVyYXRpbmcgSklUIGNvZGUgZnJvbSB0aGUgZGF0YWZsb3cgZ3JhcGguCkBAIC0yMDksMTEg
KzE5MiwxMSBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAg
ICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VP
ZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkSW4oY29u
c3QgSW5SZWNvcmQmIHJlY29yZCkKKyAgICB2b2lkIGFkZEluQnlJZChjb25zdCBKSVRJbkJ5SWRH
ZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKLSAgICAg
ICAgbV9pbnMuYXBwZW5kKHJlY29yZCk7CisgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5l
Q2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0K
LSAgICAKKwogICAgIHZvaWQgYWRkSlNDYWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGws
IERhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewog
ICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGws
IHRhcmdldFRvQ2hlY2ssIGluZm8pKTsKQEAgLTM1OSw4ICszNDIsOCBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBw
ZXI8SklUR2V0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHM7CiAgICAgVmVjdG9yPElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRz
V2l0aFRoaXM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJh
dG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVElu
QnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFw
cGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwotICAgIFZlY3Rv
cjxJblJlY29yZCwgND4gbV9pbnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0Nh
bGxzOwogICAgIFZlY3RvcjxKU0RpcmVjdENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsK
ICAgICBWZWN0b3I8SlNEaXJlY3RUYWlsQ2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNGQ5N2NkM2FiMTI3ZDMwYmJm
NDZhYzczOWVkYmYxYmVhODVjMTMwZC4uZjZlMTBlYjNkYjMyMmFjZDBjM2FjNDU1NWI5ZDVjYjRl
ZGE5ODgxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc0Myw2ICs3NDMs
MTUgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBzZXRPcChTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgpOwogICAgICAgICBtX29wSW5mbyA9IGZhbHNlOwogICAgIH0KKworICAgIHZvaWQgY29udmVy
dFRvSW5CeUlkKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCisgICAgeworICAgICAgICBBU1NF
UlQobV9vcCA9PSBJbkJ5VmFsKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSW5CeUlk
KTsKKyAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2UoKSk7CisgICAgICAgIG1fb3BJbmZv
ID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigp
OworICAgIH0KICAgICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTAxMCw2
ICsxMDE5LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAg
ICAgICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlk
OgorICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAg
ICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbDoKQEAgLTE5NjcsNyArMTk3Nyw3IEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldFZlY3Rvckxlbmd0aDoKLSAgICAgICAgY2Fz
ZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZmVlYzI1ZTU3YzNiYmRk
YTQ5YTA5MTFjYWE4MTg4N2U3ZWM0MGIxZS4uNGZiYTkwZGE3NTdkODZlMTYxNmRhMzUyMjYwZjhl
YmMzNzNkZmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MzY5LDcgKzM2OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKE5ld1N0cmluZ09iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFr
ZVJvcGUsIE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKEluLCBOb2RlUmVzdWx0Qm9vbGVhbiB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhJbkJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVh
biB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhJbkJ5SWQsIE5vZGVSZXN1bHRCb29s
ZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFByb2ZpbGVUeXBlLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHJvZmlsZUNvbnRyb2xGbG93LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oU2V0RnVuY3Rpb25OYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDRiY2IwMmM2MDg1Y2ExMDA2ODVmM2Y1OTE3ZjM4NTVm
MWExY2I0MzEuLjIyODY0M2IyMDdhMzE1ODc0NjZmMmYwNzMwMGZhMzAxNWI5ODc5NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODAsNyArOTgwLDggQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgc2V0UHJlZGljdGlv
bihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJ
bjoKKyAgICAgICAgY2FzZSBJbkJ5VmFsOgorICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZjE4M2Fl
OTQ5ZTQ0NTdlNmIzOTRiNjFkOGU0ZjQ3ZjMyNmQ0OWU5Yy4uODJlZWQ2YTY4ZGFkOGM1M2MxZjdi
NjFkMzhkNGQyYTNjODdjYjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTMzMiw3ICszMzIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBNYWtlUm9wZToKLSAgICBjYXNlIEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAgICBjYXNl
IEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgIGNhc2UgUHVzaFdpdGhTY29w
ZToKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDNmOTM0ZTNiMTFkODFjOGZiYmIyMjFi
NzY3ZTAxYTM0MDQ1MmMxY2EuLmE1ODJmMmYyNmE1OWVkM2Q0OWRmMmJjZmQ4ZThjNjY3MmZkNTM5
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xMDU2LDY3ICsxMDU2LDUyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKwogICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKLSAgICAKLSAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5vZGUtPmNoaWxk
MigpLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZtKCkpKSB7Ci0gICAg
ICAgIGlmIChzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpICYmIHN0cmluZy0+dHJ5R2V0VmFsdWVJ
bXBsKCktPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbyhBY2Nlc3NUeXBlOjpJbik7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAg
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgICAgICB1c2Uobm9kZS0+Y2hp
bGQyKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBqdW1wID0gbV9qaXQucGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIGRvbmUgPSBtX2ppdC5sYWJlbCgpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICAvLyBTaW5jZSB0aGlzIGJsb2NrIGlzIGV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgcmVz
dWx0IG9mIHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCkgaXMgYXRvbWljLAotICAgICAgICAgICAg
Ly8gd2UgY2FuIGNhc3QgaXQgdG8gY29uc3QgQXRvbWljU3RyaW5nSW1wbCogc2FmZWx5LgotICAg
ICAgICAgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBq
dW1wLm1fanVtcCwgdGhpcywgb3BlcmF0aW9uSW5PcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVzdWx0R1BSKSwgc3R1YkluZm8sIGJhc2VHUFIsCi0g
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCo+KHN0cmlu
Zy0+dHJ5R2V0VmFsdWVJbXBsKCkpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3R1Yklu
Zm8tPmNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7Ci0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0
PGludDhfdD4oYmFzZUdQUik7Ci0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVHUFIg
PSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBzdHViSW5mby0+
cGF0Y2gudGhpc0dQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0jaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZVRhZ0dQ
UiA9IHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guYmFzZVRhZ0dQUiA9IHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJl
Zyk7Ci0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudGhpc1RhZ0dQUiA9IHN0YXRpY19jYXN0
PGludDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOworICAgIGJhc2UudXNlKCk7CiAK
LSAgICAgICAgICAgIG1faml0LmFkZEluKEluUmVjb3JkKGp1bXAsIGRvbmUsIHNsb3dQYXRoLmdl
dCgpLCBzdHViSW5mbykpOwotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksCisgICAgICAgIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCByZXN1bHRSZWdzKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CiAKLSAgICAgICAgICAgIGJhc2UudXNlKCk7CisgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSwKKyAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICByZXN1bHRSZWdzLCBnZW4uc3R1YkluZm8oKSwgYmFz
ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKIAotICAgICAg
ICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQor
ICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiAKKyAgICBibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9k
ZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBrZXku
anNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgCi0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIAor
CiAgICAgYmFzZS51c2UoKTsKICAgICBrZXkudXNlKCk7Ci0gICAgICAgIAorCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICBvcGVyYXRpb25HZW5lcmlj
SW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUikpLAot
ICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlWYWwsIHJlc3VsdFJlZ3MsIGJhc2VH
UFIsIHJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwor
ICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDBiNzkxMmRjY2MyNWMzNGNlYzVlZGE0NzQyNWU5
NjQ0ZjViYWY3NzcuLjQ2MTc0Yzk0YTQ5ZTNjNzhlOGE1NWE4YjgzYmJiMDQyOGJhZTMzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcz
NSw3ICs3MzUsOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHVz
aFdpdGhTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChOb2RlKiwgQWNjZXNz
VHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqLCBBY2Nlc3NUeXBlKTsK
LSAgICB2b2lkIGNvbXBpbGVJbihOb2RlKik7CisgICAgdm9pZCBjb21waWxlSW5CeUlkKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKE5vZGUqKTsKICAgICAKICAgICB2b2lkIG5vblNw
ZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCk7
CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVk
Z2Ugb3BlcmFuZCwgTm9kZSogYnJhbmNoTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA5ZjEzMWQ5MTRiMWU1
MDAyYjU0NjZjMTc0YTc4NzhlNmE2NzUzNGUyLi4zZWZiN2I3ZTQ1MDgxZTY4ZTVhZDhhMGU0YzVi
ZGIyYTQxOGFkMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3NTEsOCArMzc1MSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRGdW5jdGlv
bk5hbWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBJbjoKLSAgICAgICAgY29t
cGlsZUluKG5vZGUpOworICAgIGNhc2UgSW5CeUlkOgorICAgICAgICBjb21waWxlSW5CeUlkKG5v
ZGUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSW5CeVZhbDoKKyAgICAgICAgY29tcGls
ZUluQnlWYWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0
eTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggYTJjYWEwMDNhZmJkNmZmYTdiY2RlMTgyZTQwYTI3N2ZjMzIyNjRhYS4uOGQz
ODY5NzdjYTgzYjI0Njg5ODQ5MTFhMzZmMmE5YTkxNDI1ODg5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00MzAxLDggKzQz
MDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjb21waWxlU2V0RnVuY3Rpb25OYW1lKG5vZGUpOwogICAgICAgICBicmVhazsKIAotICAgIGNh
c2UgSW46Ci0gICAgICAgIGNvbXBpbGVJbihub2RlKTsKKyAgICBjYXNlIEluQnlJZDoKKyAgICAg
ICAgY29tcGlsZUluQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEluQnlW
YWw6CisgICAgICAgIGNvbXBpbGVJbkJ5VmFsKG5vZGUpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgSGFzT3duUHJvcGVydHk6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCAwNjg2M2QwZTIyZDY0ZTZhMWIxMzM3M2JiMTNiMGI3NDNh
NWNjMmVkLi42Yjk1MTM0OGVkMjQyYjRiZDAyNjczNzM3ZmM1ZDRiMTc2OTk3NjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMDUsNyAr
MjA1LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93U3RhdGljRXJyb3I6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKLSAgICBjYXNlIEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJ
ZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CiAg
ICAgY2FzZSBNYXBIYXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDEyYzkzMzg2YWZhNWZmMzNjODNhN2E2MDc3NTAwYjJhYmEzYjkyNjcu
LjcyMGY3NzU4ZGM2NDE0Mzg5ZGI3OTM2NjNlMDI2ZTg3YTI1OTVhNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTcwOCw4ICs3MDgsMTEg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6
CiAgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpHZXREaXJlY3QpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW46Ci0gICAgICAgICAgICBjb21waWxlSW4o
KTsKKyAgICAgICAgY2FzZSBJbkJ5SWQ6CisgICAgICAgICAgICBjb21waWxlSW5CeUlkKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbkJ5VmFsOgorICAgICAgICAgICAgY29t
cGlsZUluQnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEhhc093blBy
b3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhhc093blByb3BlcnR5KCk7CkBAIC05NjY5LDg3
ICs5NjcyLDcwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUlu
KCkKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKCkKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQubm90
WmVybzY0KHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkluQnlWYWwpLCBt
X2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMigpKSkpKTsKKyAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQorICAgIHsK
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgRWRnZSBiYXNlID0gbm9kZS0+
Y2hpbGQxKCk7Ci0gICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChiYXNlKTsKLSAgICAgICAg
aWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1pY0Nhc3RDb25zdGFu
dDxKU1N0cmluZyo+KHZtKCkpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1
ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0b21pYygpKSB7Ci0gICAg
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHN0ciA9IGJpdHdpc2VfY2FzdDxVbmlxdWVk
U3RyaW5nSW1wbCo+KHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCkpOwotICAgICAgICAgICAgICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwot
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihjZWxsKTsKLSAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0KLSAgICAgICAgICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwotCi0gICAgICAgICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKV07CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGJhc2UpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAgICAgIFJlZlB0cjxQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQorICAgICAgICAgICAgcHJl
cGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZv
ciBvcGVyYXRpb24gY2FsbHMuCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVt
cExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAg
ICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgdWlkLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAorICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKworICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAg
cGFyYW1zLmFkZExhdGVQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLiBXZSBk
b24ndCBuZWVkIGEgSlMgZXhjZXB0aW9uSGFuZGxlIGJlY2F1c2Ugd2UgZG9uJ3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhY2hlIFByb3h5IG9iamVjdHMuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlv
bkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8g
PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+YWRkU3R1Yklu
Zm8oQWNjZXNzVHlwZTo6SW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPmNh
bGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8tPmNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0
YXRpY19jYXN0PGludDhfdD4oYmFzZUdQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudGhpc0dQUiA9IHN0YXRpY19j
YXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlBhdGNoYWJsZUp1bXAg
anVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAubV9qdW1wLmxpbmsoJmppdCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhC
ZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5PcHRpbWl6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYmFzZUdQUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHIpKS5jYWxsKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFz
aygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydCA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4oanVtcCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnN0YXJ0ID0gc3RhcnQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGlubGluZVNp
emUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPE5vUHRyVGFnPihkb25lKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5saW5lU2l6ZSA+PSAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guaW5saW5lU2l6ZSA9IGlu
bGluZVNpemU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoQ2FsbExvY2F0aW9uID0gTWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxOb1B0
clRhZz4oc2xvd1BhdGhDYWxsKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mby0+cGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
PE5vUHRyVGFnPihzbG93UGF0aEJlZ2luKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1z
WzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQ
YXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CiAKLSAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSAKLQotICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdlbmVy
aWNJbiksIG1fY2FsbEZyYW1lLCBjZWxsLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7
CisgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21w
aWxlSGFzT3duUHJvcGVydHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCBj
MWMyZDRlOTU3ZGZlYWU3MTIwMzljNDVjYmU3Yjk1YzYyYTgyNWMwLi42ODRlODEzZGM0YTRhODNj
Njc1MTAzMGUwYmM3YjY2YjliZjJhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aApAQCAtNTAsOSArNTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9u
R2V0QnlJZEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSkg
XAogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKSBcCi0gICAgbWFj
cm8oT3BlcmF0aW9uSW5PcHRpbWl6ZSkgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluKSBcCiAgICAg
bWFjcm8oT3BlcmF0aW9uR2VuZXJpY0luKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uSW5CeUlkKSBc
CisgICAgbWFjcm8oT3BlcmF0aW9uSW5CeUlkR2VuZXJpYykgXAorICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZE9wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdCkgXAog
ICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0KSBcCkBAIC02Nyw3ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwK
ICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBs
YWNlV2l0aEp1bXApIFwKLSAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKQorICAgIG1hY3JvKFB1
dEJ5SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCiAKIGNsYXNzIElD
RXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDE5OWQ4MWE4
YTM1YTM0YjMxMmVmMzE1NmYyZmQ4ZDM0NjQ3MzdkYmUuLmQ5ZGIwNjI5YTQzOGMxMjlkNTdiZmEz
ODMxNjY5ZWI4YWYxNTY5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTc4LDEx
ICs3OCw2IEBAIEpJVDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0KQogICAgICwgbV9pbnRlcnByZXRlcih2bS0+aW50
ZXJwcmV0ZXIpCiAgICAgLCBtX2xhYmVscyhjb2RlQmxvY2sgPyBjb2RlQmxvY2stPm51bWJlck9m
SW5zdHJ1Y3Rpb25zKCkgOiAwKQogICAgICwgbV9ieXRlY29kZU9mZnNldChzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgLCBtX2dldEJ5SWRJbmRleChVSU5UX01BWCkK
LSAgICAsIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXgoVUlOVF9NQVgpCi0gICAgLCBtX3B1dEJ5SWRJ
bmRleChVSU5UX01BWCkKLSAgICAsIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4KFVJTlRfTUFYKQot
ICAgICwgbV9jYWxsTGlua0luZm9JbmRleChVSU5UX01BWCkKICAgICAsIG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKCp2bSkKICAgICAsIG1fY2FuQmVPcHRpbWl6ZWQoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZEVtaXRQcm9maWxpbmcoZmFsc2UpCkBAIC0yNzcsNyArMjcyLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVPZmZzZXQ7CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAg
ICAgICBERUZJTkVfU0xPV19PUChpbikKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoaW5fYnlfdmFs
KQogICAgICAgICBERUZJTkVfU0xPV19PUChsZXNzKQogICAgICAgICBERUZJTkVfU0xPV19PUChs
ZXNzZXEpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdyZWF0ZXIpCkBAIC0zNDEsNiArMzM2LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfYmVsb3cpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvd2VxKQogICAgICAgICBERUZJTkVf
T1Aob3BfdHJ5X2dldF9ieV9pZCkKKyAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X2lkKQogICAg
ICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Byb3RvX2xvYWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgpAQCAtNDc4LDYg
KzQ3NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRC
eUlkSW5kZXggPSAwOwogICAgIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPSAwOwogICAgIG1fcHV0
QnlJZEluZGV4ID0gMDsKKyAgICBtX2luQnlJZEluZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJ
bmRleCA9IDA7CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExp
bmtJbmZvSW5kZXggPSAwOwpAQCAtNTIxLDYgKzUxOCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3Qp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3RyeV9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9p
bl9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNl
dDoKQEAgLTYwMCw2ICs1OTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZ2V0QnlJZEluZGV4ID09IG1fZ2V0QnlJZHMuc2l6ZSgp
KTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID09IG1fZ2V0QnlJ
ZHNXaXRoVGhpcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fcHV0QnlJZEluZGV4ID09
IG1fcHV0QnlJZHMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2luQnlJZEluZGV4ID09
IG1faW5CeUlkcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2VPZkluZGV4
ID09IG1faW5zdGFuY2VPZnMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NhbGxMaW5r
SW5mb0luZGV4ID09IG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKG51bWJlck9mVmFsdWVQcm9maWxlcyA9PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkpOwpAQCAtODQyLDYgKzg0MSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6
bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkcywgcGF0Y2hCdWZmZXIp
OwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNXaXRoVGhpcywgcGF0Y2hCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJZHMsIHBhdGNoQnVmZmVyKTsK
KyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZlcik7CiAKICAgICBp
ZiAobV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CmluZGV4IDE1NmYxYjU4MTI5ZjdmNmNmNzZmMTM5NWE1M2E5YTlkMjA4ZGJmZDQuLmI5NmFhMjI0
MzNhYWJkYTUwZWE4ZGE5ZjNhOTk1ZDkwNGI3OTc5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtNTAwLDYgKzUwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9h
cmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5
X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNl
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0
aW9uKik7CkBAIC02MTEsNiArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfaW5zdGFuY2VvZl9jdXN0b20oSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC04NjUsNiArODY3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkR2VuZXJhdG9yPiBtX2dl
dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dl
dEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1
dEJ5SWRzOworICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CiAg
ICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAg
ICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87
CiAgICAgICAgIFZlY3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbklu
Zm87CkBAIC04NzgsMTIgKzg4MSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSnVtcExp
c3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2s7CiAgICAgICAgIExhYmVs
IG1fZXhjZXB0aW9uSGFuZGxlcjsKIAotICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRJbmRleDsK
LSAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRoaXNJbmRleDsKLSAgICAgICAgdW5zaWdu
ZWQgbV9wdXRCeUlkSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4Owot
ICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleDsKLSAgICAgICAgdW5zaWdu
ZWQgbV9jYWxsTGlua0luZm9JbmRleDsKKyAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsg
VUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9
OworICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAg
dW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVk
IG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICAKICAgICAgICAgTGFi
ZWwgbV9hcml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9s
aW5rQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA4ZjE3ZTllN2EzOWRkNmFkMDg2YzAxYTM0ZTJjMTgw
ODRiOTIzZjE0Li45ZGFmNDlkYmU5M2ViZDE2YTg5NzYyYWJmNjA3ZWQwNDIyMWRjOWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcApAQCAtMTY2LDYgKzE2NiwyMCBAQCBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiB9CiAKK0pJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5C
eUlkR2VuZXJhdG9yKAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAorICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUpCisgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZSA9PSBjb2Rl
QmxvY2stPnZtKCktPnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOworfQorCit2b2lk
IEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQoreworICAgIGdlbmVyYXRlRmFzdENvbW1vbihqaXQsIG1faXNMZW5ndGhBY2Nlc3MgPyBJbmxp
bmVBY2Nlc3M6OnNpemVGb3JMZW5ndGhBY2Nlc3MoKSA6IElubGluZUFjY2Vzczo6c2l6ZUZvclBy
b3BlcnR5QWNjZXNzKCkpOworfQorCiBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKICAgICBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJv
dG90eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCmluZGV4IDA3YTA4Yzg1YzIzYzIyMzA1YzNhYTQ1Y2Y0NTM3YmQ5Yzc2NWI0
MDQuLjFhNTI0ZDhlNjJjMjZjODcyMjAyYjNmYjJhMmQ5ZDllNmIyYTYwZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAg
LTE0Myw2ICsxNDMsMjAgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRC
eUlkR2VuZXJhdG9yIHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2NsYXNzIEpJVElu
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBK
SVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVEluQnlJZEdlbmVyYXRvcigKKyAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKworICAgIHZvaWQgZ2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIGJvb2wgbV9p
c0xlbmd0aEFjY2VzczsKK307CisKIGNsYXNzIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IGJmMTY3N2UyMmM3M2UyNDY0MWNiZThlMGUzOWU1NTA2NDA5N2JlMTEuLjc2ZDcy
ZTI5NzM5YjYwMTA1M2VmNTIzMGE3ZGQwMDBiNjZlZmE0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMzc3LDY0ICszNzcsODggQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIFMKICAgICB9KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWQoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwotICAgIAotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKLSAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRl
ckVycm9yKGV4ZWMsIGJhc2UpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlk
KTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAg
IGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
LSAgICAKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChiYXNlVmFsdWUpOwogCi0gICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIGtleSk7Ci0gICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Jbk9wdGltaXpl
LCBiYXNlLT5jbGFzc0luZm8oKnZtKSwgaWRlbnQpKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwotICAg
IGJvb2wgcmVzdWx0ID0gYXNPYmplY3QoYmFzZSktPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgc2xvdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlQoYWNjZXNzVHlwZSA9PSBzdHViSW5mby0+YWNj
ZXNzVHlwZSk7Ci0gICAgCi0gICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoZXhlYy0+
Y29kZUJsb2NrKCksIGFzT2JqZWN0KGJhc2UpLT5zdHJ1Y3R1cmUoKSkpCi0gICAgICAgIHJlcGF0
Y2hJbihleGVjLCBiYXNlLCBpZGVudCwgcmVzdWx0LCBzbG90LCAqc3R1YkluZm8pOwotICAgIAot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAgIExPR19J
QygoSUNFdmVudDo6T3BlcmF0aW9uSW5CeUlkLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBp
ZGVudCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihiYXNlT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4o
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTQ2VsbCogYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW5CeUlkR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIAotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKLSAgICBzdHViSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4
ZWMsIGJhc2UpKTsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCgm
dm0sIHVpZCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNl
KTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNl
VmFsdWUpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwog
Ci0gICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGtleSk7Ci0g
ICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbiwgYmFzZS0+Y2xhc3NJbmZvKCp2bSksIGlk
ZW50KSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGFzT2JqZWN0KGJhc2UpLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpKTsKKyAg
ICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZEdlbmVyaWMsIGJhc2VPYmplY3QtPmNs
YXNzSW5mbyh2bSksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCk7
CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBp
ZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsdWUpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworCisgICAgTE9H
X0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJ
bmZvKHZtKSwgaWRlbnQpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgYm9vbCBm
b3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7Cisg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoZXhlYy0+Y29kZUJsb2NrKCksIGJhc2VP
YmplY3QtPnN0cnVjdHVyZSh2bSkpKQorICAgICAgICByZXBhdGNoSW5CeUlEKGV4ZWMsIGJhc2VP
YmplY3QsIGlkZW50LCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwg
RW5jb2RlZEpTVmFsdWUga2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbkJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBr
ZXkpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmRlY29kZShrZXkp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbkJ5VmFsKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmRlY29kZShrZXkpKSkpOwogfQogCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggN2EzMjY2OWU0ZTNk
ZWQyNDJiZjdjZTUwNGM4NzAzMDE2NTY5ZjQ1Yy4uNjA3MWU1ZGFiNGQzYTI1Njc4NWI1NGQxNGI1
ODFkZTFhY2NlZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTM3MSw5ICszNzEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3QKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERpcmVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZERpcmVjdEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkR2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
SlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbkJ5VmFsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCmluZGV4IDdlNWQxMDdhZDIyMjU5ZWEyNGYzZmY1YTVhOGYxYTViNjcxN2ViNzAuLmU2MzZm
NzEyMDkwZmY1MDk4ZWQ2MTQzZWE5YjhjOWEyZjgwOTc3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC03NTEsNiArNzUxLDQyIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2VWUmVnID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkp
OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgcmVnVDApOworCisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CisKKyAgICBKSVRJ
bkJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBpZGVudC0+aW1wbCgpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGludCByZXN1bHRW
UmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpOworCisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJ
ZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSwgcmVzdWx0VlJlZywgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKwor
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZv
aWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMTQzNzNiYmIyNDY3MThlOTQ3ZGVmNmU5MmUwMDI1MGFj
NGNmZGFlMS4uODVlYzBiMjA0ZDI3NmYyOTEzMWM5YTg4ZGY5ZjNkYzBlMTA3MjYzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02MDUsOCArNjA1LDggQEAgdm9pZCBy
ZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY28KICAgICB9CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgK
KyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAt
NjMxLDYgKzYzMSwyNiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nl
c3NDaGFpbjsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0
OwogICAgICAgICBpZiAod2FzRm91bmQpIHsKKyAgICAgICAgICAgIElubGluZUNhY2hlQWN0aW9u
IGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOworICAgICAgICAgICAgaWYgKGFjdGlv
biAhPSBBdHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uOworCisg
ICAgICAgICAgICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KKyAgICAgICAgICAgIGlmIChzdHVi
SW5mby5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICYmIHNs
b3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2UKKyAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKKyAgICAg
ICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkp
IHsKKyAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nl
c3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CisgICAgICAgICAgICAgICAgICAgIExP
R19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBp
ZGVudCkpOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9w
ZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYoY29kZUJsb2NrLCBzdHJ1Y3R1cmUs
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlKSB7CiAgICAgICAgICAgICAgICAgYm9vbCB1
c2VzUG9seVByb3RvOwogICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2UsIHNsb3QsIHVzZXNQb2x5UHJvdG8pOwpAQCAtNjY0LDcgKzY4NCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluKAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQWRk
QWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsKIAogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgK
LSAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQg
OiBBY2Nlc3NDYXNlOjpJbk1pc3MsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICB2bSwgY29k
ZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNz
LCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogCiAgICAg
ICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ssIGlk
ZW50LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtNjcyLDEwICs2OTIsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAg
c3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTY4NCwxMyArNzAxLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUluKAogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hl
IDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hJbigKLSAgICBFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgd2FzRm91
bmQsCi0gICAgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit2b2lkIHJlcGF0Y2hJbkJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sIHdhc0ZvdW5kLCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYg
KHRyeUNhY2hlSW4oZXhlYywgYmFzZSwgaWRlbnQsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykg
PT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4ZWMt
PmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25J
bik7CisKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZXhlYywgYmFzZU9iamVjdCwgcHJvcGVydHlO
YW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24oKSwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMjM2LDkgKzEyNTQsMTAgQEAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKLXZvaWQgcmVzZXRJbihTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVzZXRQYXRjaGFi
bGVKdW1wKHN0dWJJbmZvKTsKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggYWEzMmMyNmUxYjIyODRjZTM1YmQ3ZWFiNzBmYzczMzJjN2I5NmZkMC4uMGYzNjZkZGQ4
Y2ViMzYwMmNlZmIxMDExZDYwMGM3ZWY0OGQyYTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QKIHZvaWQg
YnVpbGRHZXRCeUlEUHJvdG9MaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBh
dGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5k
KTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1
YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGNv
bnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoSW5CeUlEKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJv
b2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENv
ZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5
UHRyVGFnPik7CiB2b2lkIGxpbmtEaXJlY3RGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwg
Q29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBsaW5rVmlydHVhbEZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8m
KTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBD
YWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIEdldEJ5SURLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW4oU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQg
cmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJ
bnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDJiYzlmZWJmZWMzODU3ODI2N2MwNjBjOWY2MzhjYjExODU1ODFjZGEuLjc2NDg3MDU5Y2Q3NjRj
MGE3ZmNlNGFhN2UxMDZkN2ZmY2VmN2IyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1MDcsMTAgKzE1MDcsMTYg
QEAgX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc19m
dW5jdGlvbl9sZW5ndGgpCiAKIAotX2xsaW50X29wX2luOgorX2xsaW50X29wX2luX2J5X2lkOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbikKLSAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaW5fbGVuZ3RoKQorICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoX2luX2J5X2lkKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pbl9ieV9pZF9sZW5n
dGgpCisKKworX2xsaW50X29wX2luX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5fYnlfdmFsKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9pbl9ieV92YWxfbGVuZ3RoKQogCiAKIF9sbGludF9vcF90cnlfZ2V0X2J5X2lkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCA2MjY5ODlkNTI2ZmFlYjAyYTg1YjIwZTk1ZDZkY2I5NjhhYmIwYWQwLi4zZWVh
NTRkNjQ4NjY3OWQwYjRlMDM0ZDIzNDdlMDYwMmZmNzRiZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTU1
Miw2ICsxNTUyLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1dF9i
eV9pZF9sZW5ndGgpCiAKKwogbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCBzY3JhdGNoKQogICAgIHN0b3JlcSByZXN1bHQs
IFtjZnIsIHNjcmF0Y2gsIDhdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU2ZjAzYjY1Yjc1ZDAwMjUyZjA0M2VjOTkzMWZiYmE1MDRi
OTNjZGUuLjVkNzdkYjE5Yjc2MmVmNzg0MTQ2ODhlZGM3MWM4OWY5ZjdmNmRmZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC02MjMs
NyArNjIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEluTm9kZTo6
SW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0g
ICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIG9w
X2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9k
ZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcF9pbl9ieV92YWwsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggODRkZDNkMmE0NTE2YTE4OGYwZjk4YTAxZDUwMTAw
NGNkYzcyNTY2My4uMjUzZGI1ZTRhYWM2MTE0ZTMwNmY5ZDRmMjA5NGE0YjdjM2YxYTU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC02NDgsMTAgKzY0OCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rp
b24pCiAgICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNWYWx1
ZSgpKSkpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCitTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaW5fYnlfdmFsKQogewogICAgIEJFR0lOKCk7Ci0gICAgUkVUVVJOKGpzQm9v
bGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0Mo
MykuanNWYWx1ZSgpLCBwY1s0XS51LmFycmF5UHJvZmlsZSkpKTsKKyAgICBSRVRVUk4oanNCb29s
ZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBP
UF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5hcnJheVByb2ZpbGUpKSk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09i
amVjdCgpKQorICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVj
LCBiYXNlVmFsdWUpKTsKKworICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVl
KS0+aGFzUHJvcGVydHkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmlu
ZGV4IGRiMWVlYTk1ZDQ4YzNlNDhhOTVmZjg2YzZjZmJjYTQ1NzliNDI1YmEuLjI3YzM5NzIzOWYw
MjZkNjU2ZmIxMmE0NzcwM2UzNDcyOTVhMDBmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC04NSw3ICs4NSw3IEBAIEFMV0FZU19J
TkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQKICAgICByZXR1cm4gcGFkZGluZzsKIH0KIAotaW5saW5lIGJvb2wgb3BJ
bihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm9wTmFtZSwgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQoraW5saW5lIGJvb2wgb3BJbkJ5VmFs
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0zMDYs
NyArMzA2LDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaW4pOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRp
dmUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340773</attachid>
            <date>2018-05-19 07:42:40 -0700</date>
            <delta_ts>2018-05-19 08:28:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185682-20180519234238.patch</filename>
            <type>text/plain</type>
            <size>85423</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi43NDdmMDM5NmYwOWFlNGQ5
MGQ5NDRiYTFmNTJlOWY2ZmQ0OTExM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDUgQEAKKzIwMTgtMDUtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50IG91ciBvcF9pbiBJQyBpcyBhZGhvYzogSXQgaXMgb25seSBlbWl0dGVkIGluIERGRyBhbmQg
RlRMIGxheWVycywKKyAgICAgICAgd2hlbiB3ZSBmb3VuZCB0aGF0IERGRzo6SW4ncyBwYXJhbWV0
ZXIgaXMgY29uc3RhbnQgc3RyaW5nLiBXZSBzaG91bGQKKyAgICAgICAgYWxpZ24gdGhpcyBJQyB0
byB0aGUgb3RoZXIgQnlJZCBJQ3MgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSBhZGhvYyBjb2RlCisg
ICAgICAgIGluIERGRyBhbmQgRlRMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIG91
ciAiSW4iIElDIGJ5IGFsaWduaW5nIGl0IHRvIHRoZSBvdGhlciBCeUlkIElDcy4KKyAgICAgICAg
V2Ugc3BsaXQgb3BfaW4gYnl0ZWNvZGUgdG8gb3BfaW5fYnlfaWQgYW5kIG9wX2luX2J5X3ZhbC4g
b3BfaW5fYnlfdmFsCisgICAgICAgIGlzIHRoZSBzYW1lIHRvIHRoZSBvcmlnaW5hbCBvcF9pbi4g
Rm9yIG9wX2luX2J5X2lkLCB3ZSB1c2UgSklUSW5CeUlkR2VuZXJhdG9yCisgICAgICAgIHRvIGVt
aXQgSW5CeUlkIElDIGNvZGUuIEluIGFkZGl0aW9uLCBvdXIgSklUSW5CeUlkR2VuZXJhdG9yIGFu
ZCBvcF9pbl9ieV9pZAorICAgICAgICBoYXMgYSBpbmxpbmUgYWNjZXNzIGNhY2hlIGZvciBvd24g
cHJvcGVydHkgY2FzZSwgd2hpY2ggaXMgdGhlIHNhbWUgdG8KKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvci4KKworICAgICAgICBBbmQgd2Ugc3BsaXQgREZHOjpJbiB0byBERkc6OkluQnlJZCBh
bmQgREZHOjpJbkJ5VmFsLiBJbkJ5VmFsIGlzIHRoZSBzYW1lCisgICAgICAgIHRvIHRoZSBvcmln
aW5hbCBJbiBERkcgbm9kZS4gREZHIEFJIGF0dGVtcHRzIHRvIGxvd2VyIEluQnlWYWwgdG8gSW5C
eUlkCisgICAgICAgIGlmIEFJIGZpZ3VyZWQgb3V0IHRoYXQgdGhlIHByb3BlcnR5IG5hbWUgaXMg
YSBjb25zdGFudCBzdHJpbmcuIEFuZCBpbgorICAgICAgICBJbkJ5SWQgbm9kZSwgd2UgdXNlIEpJ
VEluQnlJZEdlbmVyYXRvciBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIERG
RyBhbmQgRlRMJ3MgYWRob2MgSW4gSUMgY29kZS4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQg
cGF0Y2gsIHdlIHNob3VsZCBpbnRyb2R1Y2UgSW5CeUlkU3RhdHVzIHRvIG9wdGltaXplCisgICAg
ICAgIEluQnlJZCBpbiBERkcgYW5kIEZUTC4gV2Ugd291bGQgbGlrZSB0byBoYXZlIGEgbmV3IElu
QnlJZFN0YXR1cyBpbnN0ZWFkIG9mCisgICAgICAgIHJldXNpbmcgR2V0QnlJZFN0YXR1cyBzaW5j
ZSBHZXRCeUlkU3RhdHVzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkLCBhbmQKKyAgICAgICAgQWNj
ZXNzQ2FzZTo6VHlwZXMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZW0gKEFjY2Vzc0Nhc2U6OkluSGl0
IC8gSW5NaXNzKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OmluaXRJbkJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmRl
cmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnBh
dGNoYWJsZUp1bXApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5CeVZhbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5CeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkluTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRJbkJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OkluUmVjb3JkOjpJblJlY29yZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFkZEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0luQnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
QXJyYXlNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvSUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OkpJVCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6
OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlSW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAg
ICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OnJlcGF0Y2hJbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJl
c2V0SW4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAg
ICAgICAoSlNDOjpJbk5vZGU6OkluTm9kZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpv
cEluQnlWYWwpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW4pOiBEZWxldGVk
LgorCiAyMDE4LTA1LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgbWlzc2luZyBleGNlcHRpb24gY2hlY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZTMyMzlhMTVlNDUzM2M4N2MyMjI5MWMyNjI2
YTE2OGExN2IzNzNkMS4uM2U3NzJiYzkwNjljYTg4Mzg1MDQ2ODBjOGMwM2Y5MjZjZDU4MWMzNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAt
MTE4LDYgKzExOCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8oCiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNl
OgogICAgICAgICByZXR1cm4gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgUmVwbGFjZSwg
c3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSk7CiAKKyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIEluSGl0LCBzdHViSW5m
by51LmJ5SWRTZWxmLm9mZnNldCwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0
dXJlLmdldCgpKTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KQEAgLTU1NSwxMCArNTU4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCgKICAgICAgICAgaml0Lm1vdmUoYmFzZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICAKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wKCZqaXQpOwotICAgICAgICBmYWlsQW5kSWdub3Jl
ID0gaml0LmJyYW5jaDgoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkVxdWFsLAotICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFByb3h5
T2JqZWN0VHlwZSkpOworICAgICAgICBmYWlsQW5kSWdub3JlID0gaml0LmJyYW5jaElmVHlwZSh2
YWx1ZUdQUiwgUHJveHlPYmplY3RUeXBlKTsKICAgICAgICAgCiAgICAgICAgIGppdC5lbWl0TG9h
ZFN0cnVjdHVyZSh2bSwgdmFsdWVHUFIsIHNjcmF0Y2gyR1BSLCBzY3JhdGNoR1BSKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5jcHAKaW5kZXggYWJlOWE4YTI4MmVkZjRlNzhhNDYzODMwZjM1MGI3NmY5OGQw
ZjUwZi4uM2Y5YzU5ZTZiNmRjODE1OWM0OGQ1MTU3YTE0NTE1YWE4OTdmYjY2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC01
NTEsNiArNTUxLDU5IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRD
YWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpCiAjZW5kaWYKIH0KIAordGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5
SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJ
bmZvTWFwJiBtYXApCit7CisgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnNCZWdpbigpICsgbG9jYXRpb247CisKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIoaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKworICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7IC8vIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9y
bSBjb25maWd1cmF0aW9ucy4KKworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CisgICAgICAgIGlmIChz
dHViSW5mby5yZXNldEJ5R0MpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0Mp
Iik7CisKKyAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKKworICAgICAgICBTdHJ1Y3R1cmUq
IGJhc2VTdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1
YiA9IG51bGxwdHI7CisKKyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUpIHsKKyAg
ICAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CisgICAgICAgICAgICBvdXQucHJpbnRm
KCJzZWxmIik7CisgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5ieUlkU2Vs
Zi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ2FjaGVUeXBlOjpTdHViOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3R1YiIpOwor
ICAgICAgICAgICAgc3R1YiA9IHN0dWJJbmZvLnUuc3R1YjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJ1
bnNldCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoYmFzZVN0cnVjdHVyZSkgeworICAgICAgICAgICAgb3V0LnBy
aW50ZigiLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgYmFz
ZVN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0dWIpCisgICAg
ICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIpOworCisgICAgICAgIG91dC5wcmludGYoIiki
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvdXQpOworICAgIFVOVVNFRF9QQVJB
TShtYXApOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoSklUKQogdGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CiB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENhbGxMaW5rU3RhdHVzKFBy
aW50U3RyZWFtJiwgdW5zaWduZWQsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpCkBAIC0xMDEyLDgg
KzEwNjUsMTcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazoKICAgICAgICAgcHJpbnRVbmFyeU9w
KG91dCwgbG9jYXRpb24sIGl0LCAiaXNfZnVuY3Rpb24iKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2Ugb3BfaW46IHsKLSAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9u
LCBpdCwgImluIik7CisgICAgY2FzZSBvcF9pbl9ieV9pZDogeworICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW5fYnlfaWQiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAgICBw
cmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2luX2J5X3ZhbDogeworICAgICAgICBwcmludEJp
bmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW5fYnlfdmFsIik7CiAgICAgICAgIGR1bXBBcnJh
eVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuaAppbmRleCA3Y2QwOGM5NTIxN2Q0ZmM1YWJiN2MzNDc4NjYxZjk2Zjc4NjYzODgwLi41ZTg5
NDNlZjEzZTI2YTJmZGViZWNmZTlhYWU0YWNkZDU4NDEzNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaApAQCAtNzEsNiArNzEsNyBAQCBj
bGFzcyBCeXRlY29kZUR1bXBlciB7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwogICAgIHZvaWQg
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBj
b25zdCBTdHViSW5mb01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOworICAgIHZv
aWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7CiAgICAgZW51bSBDYWNoZUR1bXBNb2RlIHsgRHVtcENhY2hl
cywgRG9udER1bXBDYWNoZXMgfTsKICAgICB2b2lkIHByaW50Q2FsbE9wKFByaW50U3RyZWFtJiBv
dXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3As
IENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNvbnN0IENhbGxMaW5r
SW5mb01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50
IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NTYyOGRmNWI0NjIxNjNlYjI5NjMyMWZlODU4ZDAzYjZkOWY3NmU1NS4uMTZmMWZiNjBjM2Q2NDBi
ZGFjOWJmYTI3YjZjNzUzZjY3ZmZiZGMxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtODAsNyArODAsOCBAQAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfaXNfb2JqZWN0X29yX251bGwiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2lzX2Z1bmN0aW9uIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19jZWxsX3dpdGhfdHlwZSIsICJsZW5ndGgiIDog
NCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfaW5fYnlfaWQiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0
aCIgOiA5IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCmluZGV4IDcwMWQzNmNmYWM0NTFiM2M4ODIzNTY2MWExMDU3MTcyMDM1ODBkZGYuLmRi
NTIyYWMyZTcxMWE0OWIzZjJkOTJkZThjYTI4YmNlYjUzMWUzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xODYsNiArMTg2LDcg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoK
ICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVu
Z3RoOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6CiAgICAgY2FzZSBvcF90eXBlb2Y6CiAgICAgY2Fz
ZSBvcF9pc19lbXB0eToKICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZDoKQEAgLTIyNiw3ICsyMjcs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9zdHJ1
Y3R1cmVfcG5hbWU6CiAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWU6CiAgICAg
Y2FzZSBvcF9nZXRfYnlfdmFsOgotICAgIGNhc2Ugb3BfaW46CisgICAgY2FzZSBvcF9pbl9ieV92
YWw6CiAgICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3BfaW5z
dGFuY2VvZjoKICAgICBjYXNlIG9wX2FkZDoKQEAgLTQ1NCw3ICs0NTUsOCBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6CiAgICAgY2FzZSBv
cF9pc19jZWxsX3dpdGhfdHlwZToKICAgICBjYXNlIG9wX2lzX2Z1bmN0aW9uOgotICAgIGNhc2Ug
b3BfaW46CisgICAgY2FzZSBvcF9pbl9ieV9pZDoKKyAgICBjYXNlIG9wX2luX2J5X3ZhbDoKICAg
ICBjYXNlIG9wX3RvX251bWJlcjoKICAgICBjYXNlIG9wX3RvX3N0cmluZzoKICAgICBjYXNlIG9w
X3RvX29iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggOGYxYTRiZDkwZTNjYWIwYjViMDJjZmJmODYxMWFkZTI1NzkzMzQ0MS4uY2NlMGI2
YTAwNjlmNDJiNThlMTlkOGU5OTUyZmIxYzNiNDg3MDU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU4OSw3ICs1ODksNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBjYXNlIG9wX2luOgorICAgICAgICBjYXNlIG9wX2luX2J5X3ZhbDoKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfdmFsOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OiB7CiAgICAg
ICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAK
aW5kZXggOTEzMGIxZTI1ZDQ0ZTY2MzU4MTdlYTc4YTQ4M2VmOGNhZDY3OTc5MC4uZjM1MWY4MmJl
ZTBhNGQ3OTRkYTkwYzViODZiYzZkYmE1OWMzNzEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKQEAgLTI3Niw2ICsyNzYsMjUgQEAgYm9v
bCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBKU0FycmF5KiBhcnIKICAgICByZXR1cm4gbGlua2VkQ29kZUlubGluZTsKIH0KIAor
Ym9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKKworICAgIEdQUlJlZyBiYXNlID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5iYXNlR1BSKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZSA9IHN0dWJJbmZvLnZhbHVlUmVncygp
OworCisgICAgYXV0byBicmFuY2hUb1Nsb3dQYXRoID0gaml0LnBhdGNoYWJsZUJyYW5jaDMyKAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1
cmUtPmlkKCkpKSk7CisgICAgaml0LmJveEJvb2xlYW5QYXlsb2FkKHRydWUsIHZhbHVlLnBheWxv
YWRHUFIoKSk7CisKKyAgICBib29sIGxpbmtlZENvZGVJbmxpbmUgPSBsaW5rQ29kZUlubGluZSgi
aW4gYWNjZXNzIiwgaml0LCBzdHViSW5mbywgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CisgICAgICAgIGxpbmtCdWZmZXIubGluayhicmFuY2hUb1Nsb3dQYXRoLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24oKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxp
bmU7Cit9CisKIHZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IHRhcmdldCkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IDk5NDhiM2I2Zjg1ZTkzNjMxNGNiMTk3
MGMzYWM0NDM3YWI4ZTY4YmEuLmE0ZDAzMzVmOGFiMDY2MDdkYWExMWJmMWJmMTZiMGU1OWI3ZjIx
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgK
QEAgLTExNiw2ICsxMTYsNyBAQCBjbGFzcyBJbmxpbmVBY2Nlc3MgewogICAgIHN0YXRpYyBib29s
IGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7CiAg
ICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpT
QXJyYXkqKTsKICAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJ
bmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0
aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVy
ZSopOwogCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVsIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNpemUg
b2YgYW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBsYXRmb3Jtcy4gV2hlbiBhZGRpbmcgYSBuZXcg
dHlwZSBvZiBJQywgaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBkNTgxOWFhYTlhZjQ2NTcwNGRlMWI0
YWQ4MTY5ZDlhMzY3Y2M1NmI0Li4wNDIxOGRiMDQ3ZDA5Y2VkNTViZDM3Mjc3NWE0N2M1NDE2N2Y5
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKQEAgLTgxLDYgKzgxLDE1IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86
OmluaXRQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBiYXNl
CiAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZzZXQ7CiB9CiAKK3ZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmluaXRJbkJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjYWNoZVR5
cGUgPSBDYWNoZVR5cGU6OkluQnlJZFNlbGY7CisKKyAgICB1LmJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAqY29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGJhc2VP
YmplY3RTdHJ1Y3R1cmUpOworICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OworfQorCiB2
b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiB7CiAgICAgc3dpdGNoIChjYWNoZVR5cGUp
IHsKQEAgLTkwLDYgKzk5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAg
IGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKICAgICBjYXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6
CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBl
OjpJbkJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpBcnJheUxlbmd0aDoKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTEwNiw2ICsxMTYsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
OjphYm91dFRvRGllKCkKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToK
KyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJy
YXlMZW5ndGg6CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzYsNyArMjQ3LDcgQEAgdm9p
ZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAg
IHJlc2V0UHV0QnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpJbjoKLSAgICAgICAgcmVzZXRJbigqdGhpcyk7CisgICAgICAgIHJlc2V0
SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vz
c1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CkBAIC0y
NTksNiArMjcwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbmNl
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzd2l0Y2ggKGNhY2hlVHlwZSkgewogICAgIGNh
c2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJl
cGxhY2U6CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIGlmIChIZWFw
Ojppc01hcmtlZCh1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKQEAgLTI4Miw2ICsyOTQsNyBAQCBib29sIFN0
cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAgICBjYXNlIENhY2hlVHlw
ZTo6SW5CeUlkU2VsZjoKICAgICAgICAgcmV0dXJuIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6CiAg
ICAgICAgIHJldHVybiB1LnN0dWItPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApp
bmRleCAxNGZlZDk0ZWExZGY2Y2M0ODQxNzFjNzlmMDk4OTA5YzJjZmQzZjExLi5lZmU2MTliNDQ5
NTFmYjhmNjI3ZGRiOTUxZjVhZTg1MjA2MjEyNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTgsNiArNTgsNyBAQCBl
bnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CiAgICAgVW5zZXQsCiAgICAgR2V0QnlJZFNl
bGYsCiAgICAgUHV0QnlJZFJlcGxhY2UsCisgICAgSW5CeUlkU2VsZiwKICAgICBTdHViLAogICAg
IEFycmF5TGVuZ3RoCiB9OwpAQCAtNzIsNiArNzMsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5m
byB7CiAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGYoQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBpbml0QXJyYXlMZW5n
dGgoKTsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUq
IGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKKyAgICB2b2lkIGluaXRJbkJ5
SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQpOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNv
bnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIGNvbnN0IElkZW50aWZp
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOwogCkBAIC0xNzQsNyArMTc2LDcgQEAg
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIFN0cnVjdHVyZVNldCBidWZmZXJlZFN0cnVj
dHVyZXM7CiAgICAgCiAgICAgc3RydWN0IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2Yg
dGhlIGlubGluZSBJQyBmb3IgKmJ5SWQgY2FjaGVzLCBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hh
YmxlIGp1bXAgZm9yICdpbicgYW5kICdpbnN0YW5jZW9mJyBjYWNoZXMuCisgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRo
ZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcy4gb3IgdGhlIGxv
Y2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZvciAnaW5zdGFuY2VvZicgY2FjaGVzLgogICAgICAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogICAgICAgICB1aW50MzJfdCBpbmxpbmVTaXpl
OwogICAgICAgICBpbnQzMl90IGRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlvbjsK
QEAgLTE5NSw3ICsxOTcsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbigp
IHsgcmV0dXJuIHBhdGNoLnN0YXJ0LmxhYmVsQXRPZmZzZXQocGF0Y2guZGVsdGFGcm9tU3RhcnRU
b1Nsb3dQYXRoU3RhcnQpOyB9CiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBwYXRjaGFibGVKdW1wKCkKICAgICB7IAotICAgICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBB
Y2Nlc3NUeXBlOjpJbiB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YpOwor
ICAgICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsKICAg
ICAgICAgcmV0dXJuIHBhdGNoLnN0YXJ0Lmp1bXBBdE9mZnNldDxKU0ludGVybmFsUHRyVGFnPigw
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmQ2NDQ5YjMwZTI3OGMzZWZhZTcwODJl
ZTllNzAwNWVmZDBiNTliNi4uZTE5OWU4ZjFiNDFjMTM1NTM2NmRjNDg4NGQ1M2Q2ZTMzMzMxMDU0
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI2NjcsMTAgKzI2NjcsMTAgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCoKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJl
Z2lzdGVySUQqIGJhc2UpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluQnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFz
ZSkKIHsKICAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVBy
b2ZpbGUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX2luKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2luX2J5
X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CkBAIC0yNjc4LDYgKzI2NzgsMTUgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWcKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEluQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQoreworICAgIGVtaXRPcGNvZGUob3BfaW5fYnlf
aWQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGll
cyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRyeUdldEJ5SWQuIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
YjcyNTVhYzYyMTZlMDlkY2UxYWQ0ZDdjNjY5ZWM1NDZhMmNiNDY3My4uOTc4MjhjYTUwZWZhOGI2
NTJkZGZmNmU0ODI5OTMwODFkYTVlYmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjk0LDcgKzY5NCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90
eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lz
dGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9m
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChv
cF90eXBlb2YsIGRzdCwgc3JjKTsgfQotICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJbkJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5C
eUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAwN2E5Yzkw
N2E3ZTIxMzBhNDI0NGRmYTAwMTFmN2NhNTJiMDZlOGE2Li5hNWZhNTI1ZDIxNjAyMWIwMGQ5NTVh
ZDlkZTYzYzExZjMzNmE1OGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMjgwLDEwICsyMjgwLDE2IEBAIFJlZ2lz
dGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJCiAKIFJlZ2lzdGVySUQqIEluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBpZiAo
aXNOb25JbmRleFN0cmluZ0VsZW1lbnQoKm1fZXhwcjEpKSB7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluQnlJZChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4obV9leHByMSktPnZhbHVlKCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBrZXkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9leHByMSwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX2V4cHIyLT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwga2V5LmdldCgpKSwga2V5LmdldCgpLCBiYXNlLmdldCgpKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRJbkJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
a2V5LmdldCgpKSwga2V5LmdldCgpLCBiYXNlLmdldCgpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggOWJkOGE1MzNiMWNlMWQ2NGM5MzIzMzM5YzgwZjE0NzU4NzlmNDRjOS4uOWRhNWY0
MWM4ZGI5ZDFmMTJjZjNhM2EzMTEzNDQ3NzFiMDcwMTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMzI1OSwxMCArMzI1OSwzMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBj
bG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgSW46IHsK
KyAgICBjYXNlIEluQnlJZDogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3
aGVuIHRoZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdAogICAg
ICAgICAvLyB2YWx1ZSBpbmZvcm1hdGlvbi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgIGZpbHRlcihub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCk7CisgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgSW5CeVZhbDogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiBwcm9wZXJ0eSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBpZiAoSlNWYWx1ZSBjb25zdGFudCA9
IHByb3BlcnR5LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdGFudC5pc1N0cmluZygp
KSB7CisgICAgICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGNvbnN0YW50
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlH
ZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0b21p
YygpKQorICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBk
ZXRlcm1pbmUgd2hlbiB0aGUgcHJvcGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJz
dHJhY3QKKyAgICAgICAgLy8gdmFsdWUgaW5mb3JtYXRpb24uCisgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOworICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QpOwogICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDM4NzRmY2M1YjM2ZGQ5NDI3NWFiMjUzMjY5NTUwYzEzMjM5NGUzZDUuLmUw
ZTdiNDMxMTZhMmMyZjc4ZGQ0NTljNzcyMDNhZDdmMGVjMmI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMDcsNiArMjA3LDgg
QEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAg
ICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0KTsKKyAgICB2b2lkIGhh
bmRsZUluQnlJZCgKKyAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKTsKICAg
ICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBm
b3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9u
IG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBi
ZSBlbWl0dGVkLgpAQCAtNDMxMSw2ICs0MzEzLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5SWQoCiAgICAgfSB9CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
QnlJZChpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCit7CisgICAgVU5VU0VEX1BBUkFN
KGluc3RydWN0aW9uU2l6ZSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9w
ZXJhbmQpLCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCAgYmFz
ZSkpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsK
ICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjM2MywxMSArNjM3MSwyMCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfdG9fb2JqZWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfaW46IHsKLSAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoY3VycmVudEluc3Ry
dWN0aW9uW09QQ09ERV9MRU5HVEgob3BfaW4pIC0gMV0udS5hcnJheVByb2ZpbGUpOworICAgICAg
ICBjYXNlIG9wX2luX2J5X3ZhbDogeworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9pbl9ieV92
YWwpIC0gMV0udS5hcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEluLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKSk7Ci0gICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9pbik7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pbl9ieV9pZDogeworICAgICAgICAgICAg
Tm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5s
aW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmRdOworICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdU
SChvcF9pbl9ieV9pZCk7CisgICAgICAgICAgICBoYW5kbGVJbkJ5SWQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgb3Bjb2RlTGVuZ3RoKTsK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5X2lkKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1
Y2VlNjViNjg0M2VjYTUwODhlZDFhOWE5MTA5NGYzNDA1N2FhYTQ0Li5kYWRjOTJkODY3ZTRjNDRh
MzQ2MmQ4ZDZkYWI2NDU4MDc1YWNkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMzYsNyArMjM2LDggQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWMKICAgICBjYXNlIG9wX3RvX29iamVjdDoKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06
CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKLSAgICBjYXNlIG9wX2luOgorICAgIGNhc2Ugb3Bf
aW5fYnlfdmFsOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6
CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxl
X2xlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXgg
YWQ2MjM2NDdhNzcwNDBjMGQzYjgyNmNkYzFhMzcwYzFhMjNiOWJkYy4uNTUyZWRlZmFlNTJiODk4
OTk4MDYxODdlYTkxZDI3MTc1ZGZjNjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKQEAgLTYxOSw3ICs2MTksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVG
dQogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRW
YXJhcmdzOgogICAgIGNhc2UgVG9QcmltaXRpdmU6Ci0gICAgY2FzZSBJbjoKKyAgICBjYXNlIElu
QnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBj
YXNlIFZhbHVlQWRkOgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA3
Mzc0MTg1NjY3ZTBiZGI3ODdhODNiNzAyY2IxODk1OWI1MDY5ZDAxLi5iN2VkYzA2MGY0MzYyOTNh
Y2E0OTg4ODMzZWE5NDYyMGM1NzJjYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjE2LDYgKzYxNiwyMyBA
QCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgSW5CeVZhbDog
eworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHByb3BlcnR5ID0gbV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBjb25zdGFu
dCA9IHByb3BlcnR5LnZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50
LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSBhc1N0cmluZyhjb25zdGFudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbXBsICYmIGltcGwtPmlzQXRvbWljKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShjb25zdF9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4oc3RhdGljX2Nhc3Q8
Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPihpbXBsKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb0luQnlJZChpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogewogICAgICAgICAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjQm9vbGVhbiB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0Jp
Z0ludCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDk3NGQ5NzEzNjZmZmQ4Yjc5Nzg2ZmJiMjZkZWQzYWMyNWI2
ODdmZGEuLjQxNjIxMGE5MGNlZmIwZDgzZDkwYjE1NDlhMWZlYzAyN2NkOTVlNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE5Myw3ICsxOTMsOCBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsU3RyaW5nQ29u
c3RydWN0b3I6CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICBjYXNlIE51
bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKLSAgICBjYXNlIEluOgorICAgIGNh
c2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5Ogog
ICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDAxMDFkMzc5YmNkNmY3NDVlNzJhODhlYzIxOWZi
Y2YzMjllMzhhOWIuLjlhMWRjMTM2ZDAxNmVkYWEyYWYwYTM2MGVlZDdiZjNlMjA2NzNhYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTQ2OSw3
ICsxNDY5LDEyIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBjYXNlIEluOiB7CisgICAgICAgIGNhc2UgSW5CeUlkOiB7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJbkJ5VmFsOiB7CiAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBj
b252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkobm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDVl
NWE3YTg3NTI0NDI0MWI1MjZhOWYyNGI0ZmY0MGNlOTg4NWJmNjEuLjVmZDUwYjhjN2YwMWVlMzZl
MWIyNzNhYWMyM2EwYzg2MjI3ODNhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCkBAIC0yNjUsMjYgKzI2NSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyht
X2dldEJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5
SWRzV2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0
QnlJZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywg
bGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgbGlu
a0J1ZmZlcik7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSAqbV9pbnNbaV0ubV9zdHVi
SW5mbzsKLQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
c3RhcnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1faW5z
W2ldLm1fanVtcCk7Ci0gICAgICAgIGluZm8ucGF0Y2guc3RhcnQgPSBzdGFydDsKLQotICAgICAg
ICBwdHJkaWZmX3QgaW5saW5lU2l6ZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2Vl
bkNvZGVQdHIoCi0gICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KG1faW5zW2ldLm1fZG9uZSkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChp
bmxpbmVTaXplID49IDApOwotICAgICAgICBpbmZvLnBhdGNoLmlubGluZVNpemUgPSBpbmxpbmVT
aXplOwotCi0gICAgICAgIGluZm8ucGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoQ2FsbExv
Y2F0aW9uID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAg
ICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9p
bnNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+Y2FsbCgpKSk7Ci0KLSAgICAgICAgaW5mby5wYXRj
aC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhTdGFydCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1faW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVs
KCkpKTsKLSAgICB9Ci0gICAgCiAgICAgYXV0byBsaW5rQ2FsbFRodW5rID0gRnVuY3Rpb25QdHI8
Tm9QdHJUYWc+KHZtKCktPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fanNDYWxscykg
ewogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqcmVjb3JkLmluZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggMDUwZWI3YzE2ZjZkYjkwNDQ4
OWJkMmI3ODZjZDNmZDFmMDI5NDU5ZS4uYzE3YjAzMjExNDg4YmY4NTliZTU1NTA0ZTJlYWIwYWRm
YTQzNDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApA
QCAtNzYsMjMgKzc2LDYgQEAgc3RydWN0IENhbGxMaW5rUmVjb3JkIHsKICAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IG1fZnVuY3Rpb247CiB9OwogCi1zdHJ1Y3QgSW5SZWNvcmQgewot
ICAgIEluUmVjb3JkKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBqdW1w
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKLSAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3Iq
IHNsb3dQYXRoR2VuZXJhdG9yLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCi0gICAgICAg
IDogbV9qdW1wKGp1bXApCi0gICAgICAgICwgbV9kb25lKGRvbmUpCi0gICAgICAgICwgbV9zbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aEdlbmVyYXRvcikKLSAgICAgICAgLCBtX3N0dWJJbmZvKHN0
dWJJbmZvKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgbV9qdW1wOwotICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7Ci0gICAgU2xv
d1BhdGhHZW5lcmF0b3IqIG1fc2xvd1BhdGhHZW5lcmF0b3I7Ci0gICAgU3RydWN0dXJlU3R1Yklu
Zm8qIG1fc3R1YkluZm87Ci19OwotCiAvLyA9PT0gSklUQ29tcGlsZXIgPT09CiAvLwogLy8gREZH
OjpKSVRDb21waWxlciBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBKSVQgY29kZSBmcm9t
IHRoZSBkYXRhZmxvdyBncmFwaC4KQEAgLTIwOSwxMSArMTkyLDExIEBAIGNsYXNzIEpJVENvbXBp
bGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBwZW5k
KElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRo
KSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRJbihjb25zdCBJblJlY29yZCYgcmVjb3JkKQorICAg
IHZvaWQgYWRkSW5CeUlkKGNvbnN0IEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdl
bmVyYXRvciogc2xvd1BhdGgpCiAgICAgewotICAgICAgICBtX2lucy5hcHBlbmQocmVjb3JkKTsK
KyAgICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2Vu
ZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBhZGRKU0Nh
bGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hl
Y2ssIENhbGxMaW5rSW5mbyogaW5mbykKICAgICB7CiAgICAgICAgIG1fanNDYWxscy5hcHBlbmQo
SlNDYWxsUmVjb3JkKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgaW5mbykpOwpA
QCAtMzU5LDggKzM0Miw4IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVy
cyB7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlkR2VuZXJhdG9yPiwg
ND4gbV9nZXRCeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRX
aXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICBWZWN0b3I8SW5s
aW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAg
IFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9pbkJ5
SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRv
cj4sIDQ+IG1faW5zdGFuY2VPZnM7Ci0gICAgVmVjdG9yPEluUmVjb3JkLCA0PiBtX2luczsKICAg
ICBWZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CiAgICAgVmVjdG9yPEpTRGlyZWN0
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdENhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVjdFRhaWxD
YWxsUmVjb3JkLCA0PiBtX2pzRGlyZWN0VGFpbENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAppbmRleCA0ZDk3Y2QzYWIxMjdkMzBiYmY0NmFjNzM5ZWRiZjFiZWE4NWMxMzBkLi5m
NmUxMGViM2RiMzIyYWNkMGMzYWM0NTU1YjlkNWNiNGVkYTk4ODE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtNzQzLDYgKzc0MywxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHNldE9wKFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCk7CiAgICAgICAgIG1fb3BJbmZvID0g
ZmFsc2U7CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9JbkJ5SWQodW5zaWduZWQgaWRlbnRp
Zmllck51bWJlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IEluQnlWYWwpOworICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhJbkJ5SWQpOworICAgICAgICBjaGlsZHJlbi5zZXRD
aGlsZDIoRWRnZSgpKTsKKyAgICAgICAgbV9vcEluZm8gPSBpZGVudGlmaWVyTnVtYmVyOworICAg
ICAgICBtX29wSW5mbzIgPSBPcEluZm9XcmFwcGVyKCk7CisgICAgfQogICAgIAogICAgIEpTVmFs
dWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xMDEwLDYgKzEwMTksNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0
ZXJCeUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgSW5CeUlkOgog
ICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoK
ICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgpAQCAt
MTk2Nyw3ICsxOTc3LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEdldEluZGV4ZWRQ
cm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNh
c2UgR2V0VmVjdG9yTGVuZ3RoOgotICAgICAgICBjYXNlIEluOgorICAgICAgICBjYXNlIEluQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6
CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCBmZWVjMjVlNTdjM2JiZGRhNDlhMDkxMWNhYTgxODg3ZTdlYzQwYjFl
Li40ZmJhOTBkYTc1N2Q4NmUxNjE2ZGEzNTIyNjBmOGViYzM3M2RmYTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zNjksNyArMzY5LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3U3RyaW5nT2JqZWN0
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhNYWtlUm9wZSwgTm9kZVJlc3VsdEpTKSBcCi0g
ICAgbWFjcm8oSW4sIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEluQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEluQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUHJvZmlsZVR5cGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
cm9maWxlQ29udHJvbEZsb3csIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhTZXRGdW5j
dGlvbk5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
NGJjYjAyYzYwODVjYTEwMDY4NWYzZjU5MTdmMzg1NWYxYTFjYjQzMS4uMjI4NjQzYjIwN2EzMTU4
NzQ2NmYyZjA3MzAwZmEzMDE1Yjk4Nzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4
MCw3ICs5ODAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIEluOgorICAgICAgICBjYXNlIEluQnlWYWw6
CisgICAgICAgIGNhc2UgSW5CeUlkOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQm9v
bGVhbik7CiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBmMTgzYWU5NDllNDQ1N2U2YjM5NGI2MWQ4ZTRmNDdm
MzI2ZDQ5ZTljLi44MmVlZDZhNjhkYWQ4YzUzYzFmN2I2MWQzOGQ0ZDJhM2M4N2NiNjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzMyLDcg
KzMzMiw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3BlOgotICAgIGNhc2Ug
SW46CisgICAgY2FzZSBJbkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3du
UHJvcGVydHk6CiAgICAgY2FzZSBQdXNoV2l0aFNjb3BlOgogICAgIGNhc2UgQ3JlYXRlQWN0aXZh
dGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggM2Y5MzRlM2IxMWQ4MWM4ZmJiYjIyMWI3NjdlMDFhMzQwNDUyYzFjYS4uYTU4MmYy
ZjI2YTU5ZWQzZDQ5ZGYyYmNmZDhlOGM2NjcyZmQ1Mzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwNTYsNjcgKzEwNTYsNTIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW4oTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IGJhc2UpOworCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIAotICAgIGlm
IChKU1N0cmluZyogc3RyaW5nID0gbm9kZS0+Y2hpbGQyKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8
SlNTdHJpbmcqPigqbV9qaXQudm0oKSkpIHsKLSAgICAgICAgaWYgKHN0cmluZy0+dHJ5R2V0VmFs
dWVJbXBsKCkgJiYgc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKS0+aXNBdG9taWMoKSkgewotICAg
ICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFkZFN0dWJJbmZvKEFjY2Vzc1R5cGU6OkluKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CiAKLSAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAgPSBtX2ppdC5wYXRj
aGFibGVKdW1wKCk7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSA9IG1f
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgYmxv
Y2sgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSByZXN1bHQgb2Ygc3RyaW5nLT50cnlHZXRWYWx1
ZUltcGwoKSBpcyBhdG9taWMsCi0gICAgICAgICAgICAvLyB3ZSBjYW4gY2FzdCBpdCB0byBjb25z
dCBBdG9taWNTdHJpbmdJbXBsKiBzYWZlbHkuCi0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIGp1bXAubV9qdW1wLCB0aGlzLCBvcGVyYXRp
b25Jbk9wdGltaXplLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZXN1bHRHUFIpLCBzdHViSW5mbywgYmFzZUdQUiwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBBdG9taWNTdHJpbmdJbXBsKj4oc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSkpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBzdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9IG1faml0
LmFkZENhbGxTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBzdHViSW5m
by0+Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BSKTsKLSAgICAg
ICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVz
dWx0R1BSKTsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC50aGlzR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJ
bnZhbGlkR1BSUmVnKTsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlVGFnR1BSID0g
c3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC50aGlzVGFnR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsK
LSNlbmRpZgotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSB1c2Vk
UmVnaXN0ZXJzKCk7CisgICAgYmFzZS51c2UoKTsKIAotICAgICAgICAgICAgbV9qaXQuYWRkSW4o
SW5SZWNvcmQoanVtcCwgZG9uZSwgc2xvd1BhdGguZ2V0KCksIHN0dWJJbmZvKSk7Ci0gICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKyAgICBK
SVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRp
Zmllck51bWJlcigpKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIHJlc3VsdFJlZ3Mp
OworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgICAgICAgICAgYmFzZS51
c2UoKTsKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBnZW4uc2xv
d1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAorICAgICAgICBOZWVk
VG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAg
IHJlc3VsdFJlZ3MsIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUt
PmlkZW50aWZpZXJOdW1iZXIoKSkpOwogCi0gICAgICAgICAgICBibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9qaXQuYWRkSW5CeUlkKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKIAorICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
LCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGtl
eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwotICAgICAgICAK
LSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgCisKICAgICBiYXNlLnVzZSgpOwogICAgIGtl
eS51c2UoKTsKLSAgICAgICAgCisKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVy
YXRpb24oCi0gICAgICAgIG9wZXJhdGlvbkdlbmVyaWNJbiwgZXh0cmFjdFJlc3VsdChKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVzdWx0R1BSKSksCi0gICAgICAgIGJhc2VHUFIsIHJlZ3MpOwor
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uSW5CeVZhbCwgcmVzdWx0UmVncywgYmFzZUdQUiwgcmVncyk7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKLSAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggMGI3OTEyZGNjYzI1YzM0Y2VjNWVkYTQ3NDI1ZTk2NDRmNWJhZjc3Ny4uNDYxNzRjOTRhNDll
M2M3OGU4YTU1YThiODNiYmIwNDI4YmFlMzM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzM1LDcgKzczNSw4IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXNoV2l0aFNjb3BlKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVHZXRCeUlkKE5vZGUqLCBBY2Nlc3NUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRCeUlkRmx1c2goTm9kZSosIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY29tcGlsZUluKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUluQnlW
YWwoTm9kZSopOwogICAgIAogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBh
cmVOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kKTsKICAgICB2b2lkIG5vblNwZWN1bGF0aXZl
UGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOb2RlKiBicmFuY2hO
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDlmMTMxZDkxNGIxZTUwMDJiNTQ2NmMxNzRhNzg3OGU2YTY3NTM0
ZTIuLjNlZmI3YjdlNDUwODFlNjhlNWFkOGEwZTRjNWJkYjJhNDE4YWQzNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzc1MSw4ICszNzUxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY29tcGlsZVNldEZ1bmN0aW9uTmFtZShub2RlKTsKICAgICAgICAgYnJl
YWs7CiAKLSAgICBjYXNlIEluOgotICAgICAgICBjb21waWxlSW4obm9kZSk7CisgICAgY2FzZSBJ
bkJ5SWQ6CisgICAgICAgIGNvbXBpbGVJbkJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBJbkJ5VmFsOgorICAgICAgICBjb21waWxlSW5CeVZhbChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEhhc093blByb3BlcnR5OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBhMmNhYTAwM2FmYmQ2
ZmZhN2JjZGUxODJlNDBhMjc3ZmMzMjI2NGFhLi44ZDM4Njk3N2NhODNiMjQ2ODk4NDkxMWEzNmYy
YTlhOTE0MjU4ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQzMDEsOCArNDMwMSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBJbjoKLSAgICAgICAgY29tcGlsZUlu
KG5vZGUpOworICAgIGNhc2UgSW5CeUlkOgorICAgICAgICBjb21waWxlSW5CeUlkKG5vZGUpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSW5CeVZhbDoKKyAgICAgICAgY29tcGlsZUluQnlW
YWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eTogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDA2
ODYzZDBlMjJkNjRlNmExYjEzMzczYmIxM2IwYjc0M2E1Y2MyZWQuLjZiOTUxMzQ4ZWQyNDJiNGJk
MDI2NzM3MzdmYzVkNGIxNzY5OTc2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTIwNSw3ICsyMDUsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFRocm93OgogICAgIGNhc2Ug
VGhyb3dTdGF0aWNFcnJvcjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgotICAgIGNhc2UgSW46Cisg
ICAgY2FzZSBJbkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVy
dHk6CiAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZToKICAgICBjYXNlIE1hcEhhc2g6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMTJjOTMzODZh
ZmE1ZmYzM2M4M2E3YTYwNzc1MDBiMmFiYTNiOTI2Ny4uNzIwZjc3NThkYzY0MTQzODlkYjc5MzY2
M2UwMjZlODdhMjU5NWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtNzA4LDggKzcwOCwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBjYXNlIEdldEJ5SWREaXJlY3RGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRC
eUlkKEFjY2Vzc1R5cGU6OkdldERpcmVjdCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBJbjoKLSAgICAgICAgICAgIGNvbXBpbGVJbigpOworICAgICAgICBjYXNlIEluQnlJZDoK
KyAgICAgICAgICAgIGNvbXBpbGVJbkJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEluQnlWYWw6CisgICAgICAgICAgICBjb21waWxlSW5CeVZhbCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAgICAgICAgICBjb21w
aWxlSGFzT3duUHJvcGVydHkoKTsKQEAgLTk2NjksODcgKzk2NzIsNzAgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW4oKQorICAgIHZvaWQgY29tcGlsZUluQnlW
YWwoKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSW5CeVZhbCksIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSkpOworICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwotICAgICAgICBFZGdlIGJhc2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgTFZhbHVl
IGNlbGwgPSBsb3dDZWxsKGJhc2UpOwotICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5v
ZGUtPmNoaWxkMigpLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4odm0oKSkpIHsKLSAg
ICAgICAgICAgIGlmIChzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpICYmIHN0cmluZy0+dHJ5R2V0
VmFsdWVJbXBsKCktPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogc3RyID0gYml0d2lzZV9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4oc3RyaW5nLT50cnlH
ZXRWYWx1ZUltcGwoKSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1i
ZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwot
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKLQotICAgICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7Ci0KLSAgICAgICAgICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAg
ICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVy
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKwor
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Cisg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0K
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxs
U2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KKyAgICAg
ICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CisgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFy
YW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCB1aWQsIEpTVmFsdWVS
ZWdzKHBhcmFtc1sxXS5ncHIoKSksCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1swXS5ncHIoKSkpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0g
aml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCisgICAg
ICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQg
dGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuIFdlIGRvbid0IG5lZWQgYSBKUyBleGNlcHRpb25I
YW5kbGUgYmVjYXVzZSB3ZSBkb24ndAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGUg
UHJveHkgb2JqZWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVh
dGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbyhBY2Nlc3NUeXBlOjpJbik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+
Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BS
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0
YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLT5wYXRjaC50aGlzR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVn
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJz
ID0gcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBqdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGpp
dC5sYWJlbCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganVtcC5tX2p1bXAubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25z
LmdldCgpLCBvcGVyYXRpb25Jbk9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1YkluZm8p
LCBiYXNlR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cikpLmNhbGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihqdW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHViSW5mby0+cGF0Y2guc3RhcnQgPSBzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3QgaW5saW5lU2l6ZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZm
ZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KGRvbmUpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
bmxpbmVTaXplID49IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC5pbmxpbmVTaXplID0gaW5saW5lU2l6ZTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUZyb21TdGFy
dFRvU2xvd1BhdGhDYWxsTG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPE5vUHRyVGFnPihzbG93UGF0aENhbGwpKTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5k
ZWx0YUZyb21TdGFydFRvU2xvd1BhdGhTdGFydCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KHNsb3dQYXRoQmVnaW4p
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShs
aW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
ICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IAotCi0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwgbV9jYWxsRnJhbWUsIGNlbGws
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShwYXRj
aHBvaW50KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IGMxYzJkNGU5NTdkZmVhZTcxMjAzOWM0NWNi
ZTdiOTVjNjJhODI1YzAuLjY4NGU4MTNkYzRhNGE4M2M2NzUxMDMwZTBiYzdiNjZiOWJmMmExOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC01MCw5ICs1MCwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KSBcCiAgICAg
bWFjcm8oT3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpIFwKLSAgICBtYWNybyhPcGVyYXRpb25Jbk9wdGltaXplKSBc
Ci0gICAgbWFjcm8oT3BlcmF0aW9uSW4pIFwKICAgICBtYWNybyhPcGVyYXRpb25HZW5lcmljSW4p
IFwKKyAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWQpIFwKKyAgICBtYWNybyhPcGVyYXRpb25JbkJ5
SWRHZW5lcmljKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpIFwKICAgICBt
YWNybyhPcGVyYXRpb25QdXRCeUlkU3RyaWN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpIFwK
QEAgLTY3LDcgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nl
c3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAotICAgIG1hY3Jv
KFB1dEJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAorICAgIG1h
Y3JvKEluQnlJZFNlbGZQYXRjaCkKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTk5ZDgxYThhMzVhMzRiMzEyZWYzMTU2ZjJmZDhkMzQ2
NDczN2RiZS4uZDlkYjA2MjlhNDM4YzEyOWQ1N2JmYTM4MzE2NjllYjhhZjE1Njk5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNzgsMTEgKzc4LDYgQEAgSklUOjpKSVQoVk0qIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZz
ZXQpCiAgICAgLCBtX2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKICAgICAsIG1fbGFiZWxz
KGNvZGVCbG9jayA/IGNvZGVCbG9jay0+bnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSA6IDApCiAgICAg
LCBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
LSAgICAsIG1fZ2V0QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9nZXRCeUlkV2l0aFRoaXNJ
bmRleChVSU5UX01BWCkKLSAgICAsIG1fcHV0QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXgoVUlOVF9NQVgpCi0gICAgLCBtX2NhbGxMaW5rSW5mb0luZGV4
KFVJTlRfTUFYKQogICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoKnZtKQogICAgICwg
bV9jYW5CZU9wdGltaXplZChmYWxzZSkKICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGluZyhmYWxz
ZSkKQEAgLTI3Nyw3ICsyNzIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZU9mZnNldDsKIAog
ICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9TTE9XX09QKGluKQor
ICAgICAgICBERUZJTkVfU0xPV19PUChpbl9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XX09Q
KGxlc3MpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoZ3JlYXRlcikKQEAgLTM0MSw2ICszMzYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvdykKICAgICAgICAgREVGSU5F
X09QKG9wX2JlbG93ZXEpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQorICAg
ICAgICBERUZJTkVfT1Aob3BfaW5fYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfdW5zZXQ6CkBAIC00NzgsNiArNDc0LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRJbmRleCA9IDA7CiAgICAgbV9nZXRC
eUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOworICAgIG1faW5C
eUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01MjEs
NiArNTE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQogICAgICAgICBjYXNlIG9w
X2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgpAQCAtNjAwLDYgKzU5OCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9n
ZXRCeUlkSW5kZXggPT0gbV9nZXRCeUlkcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Z2V0QnlJZFdpdGhUaGlzSW5kZXggPT0gbV9nZXRCeUlkc1dpdGhUaGlzLnNpemUoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9wdXRCeUlkSW5kZXggPT0gbV9wdXRCeUlkcy5zaXplKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKG1faW5CeUlkSW5kZXggPT0gbV9pbkJ5SWRzLnNpemUoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZU9mSW5kZXggPT0gbV9pbnN0YW5jZU9mcy5zaXplKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsQ29tcGls
YXRpb25JbmZvLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzID09IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CkBAIC04NDIsNiAr
ODQxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGlu
ZUNhY2hlcyhtX2dldEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVD
YWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVz
KG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5z
dGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIAogICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZv
LnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMTU2ZjFiNTgxMjlmN2Y2Y2Y3
NmYxMzk1YTUzYTlhOWQyMDhkYmZkNC4uYjk2YWEyMjQzM2FhYmRhNTBlYThkYTlmM2E5OTVkOTA0
Yjc5Nzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNiArNTAwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qKTsKQEAgLTYxMSw2ICs2MTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRz
X2xlbmd0aChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9hcmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbShJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9qbGVzcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKQEAgLTg2NSw2ICs4NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VmVjdG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAg
VmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CisgICAgICAgIFZlY3RvcjxK
SVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0
aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21w
aWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5mbzsKQEAgLTg3OCwxMiArODgxLDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhD
YWxsRnJhbWVSb2xsYmFjazsKICAgICAgICAgTGFiZWwgbV9leGNlcHRpb25IYW5kbGVyOwogCi0g
ICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZEluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2dldEJ5
SWRXaXRoVGhpc0luZGV4OwotICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleDsKLSAgICAg
ICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4Owor
ICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVu
c2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNp
Z25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1faW5C
eUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRl
eCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJ
TlRfTUFYIH07CiAgICAgICAgIAogICAgICAgICBMYWJlbCBtX2FyaXR5Q2hlY2s7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4
IDhmMTdlOWU3YTM5ZGQ2YWQwODZjMDFhMzRlMmMxODA4NGI5MjNmMTQuLjlkYWY0OWRiZTkzZWJk
MTZhODk3NjJhYmY2MDdlZDA0MjIxZGM5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjYsNiArMTY2LDIw
IEBAIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhG
dW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsK
IH0KIAorSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUp
CisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAsIG1faXNM
ZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lID09IGNvZGVCbG9jay0+dm0oKS0+cHJvcGVydHlOYW1l
cy0+bGVuZ3RoLmltcGwoKSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIo
KSAhPSB2YWx1ZS50YWdHUFIoKSk7Cit9CisKK3ZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgZ2VuZXJhdGVGYXN0Q29t
bW9uKGppdCwgbV9pc0xlbmd0aEFjY2VzcyA/IElubGluZUFjY2Vzczo6c2l6ZUZvckxlbmd0aEFj
Y2VzcygpIDogSW5saW5lQWNjZXNzOjpzaXplRm9yUHJvcGVydHlBY2Nlc3MoKSk7Cit9CisKIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMDdhMDhj
ODVjMjNjMjIzMDVjM2FhNDVjZjQ1MzdiZDljNzY1YjQwNC4uMWE1MjRkOGU2MmMyNmM4NzIyMDJi
M2ZiMmEyZDlkOWU2YjJhNjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQzLDYgKzE0MywyMCBAQCBjbGFzcyBK
SVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJ
VEJ5SWRHZW5lcmF0b3IgeworcHVibGljOgorICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQor
CisgICAgSklUSW5CeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgVW5pcXVl
ZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzTGVuZ3RoQWNjZXNzOworfTsKKwogY2xh
c3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiBwdWJsaWM6CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYmYxNjc3ZTIyYzczZTI0
NjQxY2JlOGUwZTM5ZTU1MDY0MDk3YmUxMS4uNzZkNzJlMjk3MzliNjAxMDUzZWY1MjMwYTdkZDAw
MGI2NmVmYTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC0zNzcsNjQgKzM3Nyw4OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgUwogICAgIH0p
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkluQnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCi0gICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAot
ICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3Qo
KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZElu
UGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQotICAgIAotICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAKLSAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKLSAgICBMT0df
SUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluT3B0aW1pemUsIGJhc2UtPmNsYXNzSW5mbygqdm0pLCBp
ZGVudCkpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Ci0gICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChi
YXNlKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FT
U0VSVChhY2Nlc3NUeXBlID09IHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKLSAgICAKLSAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhleGVjLT5jb2RlQmxvY2soKSwgYXNPYmplY3QoYmFz
ZSktPnN0cnVjdHVyZSgpKSkKLSAgICAgICAgcmVwYXRjaEluKGV4ZWMsIGJhc2UsIGlkZW50LCBy
ZXN1bHQsIHNsb3QsICpzdHViSW5mbyk7Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5
SWQsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFz
UHJvcGVydHkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmpl
Y3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
KnZtKTsKIAotICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICgh
YmFzZS0+aXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsKKworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUlu
dmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KKyAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5KTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvbkluLCBiYXNlLT5jbGFzc0luZm8oKnZtKSwgaWRlbnQpKTsKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSkt
Pmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkpOworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0
aW9uSW5CeUlkR2VuZXJpYywgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkp
IHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBh
cmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCkpOworCisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVy
Q2FjaGluZyhleGVjLT5jb2RlQmxvY2soKSwgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSkpCisg
ICAgICAgIHJlcGF0Y2hJbkJ5SUQoZXhlYywgYmFzZU9iamVjdCwgaWRlbnQsIGZvdW5kLCBzbG90
LCAqc3R1YkluZm8pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5k
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0lu
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlWYWwoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4o
ZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZXhlYywgYmFzZSwg
SlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA3YTMyNjY5ZTRlM2RlZDI0MmJmN2NlNTA0Yzg3MDMwMTY1Njlm
NDVjLi42MDcxZTVkYWI0ZDNhMjU2Nzg1YjU0ZDE0YjU4MWRlMWFjY2VkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzcxLDkgKzM3MSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplKEV4ZWNTdGF0ZSosIFN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkRGlyZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5CeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4o
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlWYWwoRXhlY1N0
YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggN2U1ZDEwN2FkMjIyNTll
YTI0ZjNmZjVhNWE4ZjFhNWI2NzE3ZWI3MC4uZTYzNmY3MTIwOTBmZjUwOThlZDYxNDNlYTliOGM5
YTJmODA5NzczOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTc1MSw2ICs3NTEsNDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CisKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDAsIGJhc2VWUmVnKTsKKworICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7
CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOworCisgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBK
SVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOworCisg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25D
aGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAx
NDM3M2JiYjI0NjcxOGU5NDdkZWY2ZTkyZTAwMjUwYWM0Y2ZkYWUxLi44NWVjMGIyMDRkMjc2ZjI5
MTMxYzlhODhkZjlmM2RjMGUxMDcyNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKQEAgLTYwNSw4ICs2MDUsOCBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjbwogICAgIH0K
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW4oCi0gICAgRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAorc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAorICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC02MzEsNiArNjMxLDI2IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluKAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgIGlmICh3YXNGb3VuZCkg
eworICAgICAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2
bSwgYmFzZSk7CisgICAgICAgICAgICBpZiAoYWN0aW9uICE9IEF0dGVtcHRUb0NhY2hlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBhY3Rpb247CisKKyAgICAgICAgICAgIC8vIE9wdGltaXplIHNl
bGYgYWNjZXNzLgorICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5
cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkKKyAg
ICAgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZQorICAgICAgICAgICAgICAg
ICYmICFzbG90LndhdGNocG9pbnRTZXQoKQorICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
Pm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgICAgIGJvb2wg
Z2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3Mo
c3R1YkluZm8sIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJ
bmxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxm
UGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CisgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0
SW5CeUlkU2VsZihjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9
IGJhc2UpIHsKICAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87CiAgICAgICAgICAg
ICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRl
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7
CkBAIC02NjQsNyArNjg0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW4o
CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBpZGVudCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAotICAgICAgICAgICAgdm0sIGNvZGVCbG9j
aywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgaW52
YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNz
Q2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRP
ZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRk
QWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgaWRlbnQsIFdURk1vdmUobmV3Q2FzZSkpOwog
CkBAIC02NzIsMTAgKzY5Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
KAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0
dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcCgKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCks
Ci0gICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjg0LDEzICs3MDEsMTQgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW4oCiAgICAgcmV0dXJuIHJlc3VsdC5z
aG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAK
LXZvaWQgcmVwYXRjaEluKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCB3YXNGb3VuZCwKLSAgICBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVwYXRjaEluQnlJ
RChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBpZiAodHJ5Q2FjaGVJbihleGVjLCBiYXNlLCBp
ZGVudCwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluKTsKKworICAgIGlmICh0cnlDYWNoZUlu
QnlJRChleGVjLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHVi
SW5mbykgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5SWQp
OworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VP
ZigKQEAgLTEyMzYsOSArMTI1NCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAo
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbigpKTsKIH0KIAotdm9pZCByZXNldEluKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
K3ZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKIHsKLSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigp
KTsKIH0KIAogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBhYTMyYzI2ZTFiMjI4NGNlMzVi
ZDdlYWI3MGZjNzMzMmM3Yjk2ZmQwLi4wZjM2NmRkZDhjZWIzNjAyY2VmYjEwMTFkNjAwYzdlZjQ4
ZDJhMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDQsNyArNDQsNyBA
QCB2b2lkIGJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdAogdm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNs
b3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9pZCBidWlsZFB1dEJ5SWRMaXN0
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwotdm9pZCBy
ZXBhdGNoSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2Fz
Rm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJl
cGF0Y2hJbkJ5SUQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9v
bCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZv
aWQgcmVwYXRjaEluc3RhbmNlT2YoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtG
b3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxl
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVj
dEZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIGxpbmtWaXJ0
dWFsRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRH
ZXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlJREtpbmQpOwogdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVz
ZXRJbihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2Nh
dGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMmJjOWZlYmZlYzM4NTc4MjY3YzA2MGM5
ZjYzOGNiMTE4NTU4MWNkYS4uNzY0ODcwNTljZDc2NGMwYTdmY2U0YWE3ZTEwNmQ3ZmZjZWY3YjI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTUwNywxMCArMTUwNywxNiBAQCBfbGxpbnRfb3BfaXNfZnVuY3Rpb246
CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2lzX2Z1bmN0aW9uX2xlbmd0aCkKIAogCi1fbGxp
bnRfb3BfaW46CitfbGxpbnRfb3BfaW5fYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2luKQotICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
bl9sZW5ndGgpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5fYnlfaWQpCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2luX2J5X2lkX2xlbmd0aCkKKworCitfbGxpbnRfb3BfaW5fYnlf
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9p
bl9ieV92YWwpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2luX2J5X3ZhbF9sZW5ndGgpCiAK
IAogX2xsaW50X29wX3RyeV9nZXRfYnlfaWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDYyNjk4OWQ1MjZmYWVi
MDJhODViMjBlOTVkNmRjYjk2OGFiYjBhZDAuLjNlZWE1NGQ2NDg2Njc5ZDBiNGUwMzRkMjM0N2Uw
NjAyZmY3NGJkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCBfbGxpbnRfb3Bf
cHV0X2J5X2lkOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X2J5X2lkX2xlbmd0aCkKIAorCiBtYWNybyBm
aW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDEsIHNjcmF0Y2gpCiAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZTZm
MDNiNjViNzVkMDAyNTJmMDQzZWM5OTMxZmJiYTUwNGI5M2NkZS4uNWQ3N2RiMTliNzYyZWY3ODQx
NDY4OGVkYzcxYzg5ZjlmN2Y2ZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTYyMyw3ICs2MjMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB9CiAKICAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlP
cE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IG9wX2luX2J5X3ZhbCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA4NGRkM2QyYTQ1MTZhMTg4ZjBmOThhMDFkNTAxMDA0Y2RjNzI1NjYzLi4yNTNkYjVlNGFhYzYx
MTRlMzA2ZjlkNGYyMDk0YTRiN2MzZjFhNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY0OCwxMCArNjQ4LDIxIEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbikKICAgICBSRVRVUk4oanNCb29sZWFu
KGpzSXNGdW5jdGlvblR5cGUoT1BfQygyKS5qc1ZhbHVlKCkpKSk7CiB9CiAKLVNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pbikKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpCiB7
CiAgICAgQkVHSU4oKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJ
bihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUuYXJy
YXlQcm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
QnlWYWwoZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51
LmFycmF5UHJvZmlsZSkpKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lk
KQoreworICAgIEJFR0lOKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMikuanNW
YWx1ZSgpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIFRIUk9XKGNy
ZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkpOworCisgICAgUkVU
VVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcm9wZXJ0eShleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKSkpOwogfQogCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggZGIxZWVhOTVkNDhjM2U0OGE5NWZm
ODZjNmNmYmNhNDU3OWI0MjViYS4uMjdjMzk3MjM5ZjAyNmQ2NTZmYjEyYTQ3NzAzZTM0NzI5NWEw
MGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKQEAgLTg1LDcgKzg1LDcgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZAogICAgIHJldHVy
biBwYWRkaW5nOwogfQogCi1pbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9
IG51bGxwdHIpCitpbmxpbmUgYm9vbCBvcEluQnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
bnVsbHB0cikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTMwNiw3ICszMDYsOCBAQCBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2lzX29iamVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVj
dF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24p
OwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbik7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaW5fYnlfdmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3Zh
bCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340775</attachid>
            <date>2018-05-19 08:28:58 -0700</date>
            <delta_ts>2018-05-19 09:38:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185682-20180520002856.patch</filename>
            <type>text/plain</type>
            <size>85453</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi5iZDNjMzRmZGVkNDBhM2Vk
MjJjMzlhNDI2NjNlNGEzODZhYzYzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMTgtMDUtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50IG91ciBvcF9pbiBJQyBpcyBhZGhvYzogSXQgaXMgb25seSBlbWl0dGVkIGluIERGRyBhbmQg
RlRMIGxheWVycywKKyAgICAgICAgd2hlbiB3ZSBmb3VuZCB0aGF0IERGRzo6SW4ncyBwYXJhbWV0
ZXIgaXMgY29uc3RhbnQgc3RyaW5nLiBXZSBzaG91bGQKKyAgICAgICAgYWxpZ24gdGhpcyBJQyB0
byB0aGUgb3RoZXIgQnlJZCBJQ3MgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSBhZGhvYyBjb2RlCisg
ICAgICAgIGluIERGRyBhbmQgRlRMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIG91
ciAiSW4iIElDIGJ5IGFsaWduaW5nIGl0IHRvIHRoZSBvdGhlciBCeUlkIElDcy4KKyAgICAgICAg
V2Ugc3BsaXQgb3BfaW4gYnl0ZWNvZGUgdG8gb3BfaW5fYnlfaWQgYW5kIG9wX2luX2J5X3ZhbC4g
b3BfaW5fYnlfdmFsCisgICAgICAgIGlzIHRoZSBzYW1lIHRvIHRoZSBvcmlnaW5hbCBvcF9pbi4g
Rm9yIG9wX2luX2J5X2lkLCB3ZSB1c2UgSklUSW5CeUlkR2VuZXJhdG9yCisgICAgICAgIHRvIGVt
aXQgSW5CeUlkIElDIGNvZGUuIEluIGFkZGl0aW9uLCBvdXIgSklUSW5CeUlkR2VuZXJhdG9yIGFu
ZCBvcF9pbl9ieV9pZAorICAgICAgICBoYXMgYSBpbmxpbmUgYWNjZXNzIGNhY2hlIGZvciBvd24g
cHJvcGVydHkgY2FzZSwgd2hpY2ggaXMgdGhlIHNhbWUgdG8KKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvci4KKworICAgICAgICBBbmQgd2Ugc3BsaXQgREZHOjpJbiB0byBERkc6OkluQnlJZCBh
bmQgREZHOjpJbkJ5VmFsLiBJbkJ5VmFsIGlzIHRoZSBzYW1lCisgICAgICAgIHRvIHRoZSBvcmln
aW5hbCBJbiBERkcgbm9kZS4gREZHIEFJIGF0dGVtcHRzIHRvIGxvd2VyIEluQnlWYWwgdG8gSW5C
eUlkCisgICAgICAgIGlmIEFJIGZpZ3VyZWQgb3V0IHRoYXQgdGhlIHByb3BlcnR5IG5hbWUgaXMg
YSBjb25zdGFudCBzdHJpbmcuIEFuZCBpbgorICAgICAgICBJbkJ5SWQgbm9kZSwgd2UgdXNlIEpJ
VEluQnlJZEdlbmVyYXRvciBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIERG
RyBhbmQgRlRMJ3MgYWRob2MgSW4gSUMgY29kZS4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQg
cGF0Y2gsIHdlIHNob3VsZCBpbnRyb2R1Y2UgSW5CeUlkU3RhdHVzIHRvIG9wdGltaXplCisgICAg
ICAgIEluQnlJZCBpbiBERkcgYW5kIEZUTC4gV2Ugd291bGQgbGlrZSB0byBoYXZlIGEgbmV3IElu
QnlJZFN0YXR1cyBpbnN0ZWFkIG9mCisgICAgICAgIHJldXNpbmcgR2V0QnlJZFN0YXR1cyBzaW5j
ZSBHZXRCeUlkU3RhdHVzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkLCBhbmQKKyAgICAgICAgQWNj
ZXNzQ2FzZTo6VHlwZXMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZW0gKEFjY2Vzc0Nhc2U6OkluSGl0
IC8gSW5NaXNzKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdElu
QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cGF0Y2hhYmxlSnVt
cCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5S
ZWNvcmQ6OkluUmVjb3JkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YWRkSW4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4p
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6SklUKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGlu
ayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlk
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5f
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2Fj
aGVJbkJ5SUQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeUlEKToKKyAgICAgICAgKEpTQzo6
cmVzZXRJbkJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6cmVwYXRjaEluKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cmVzZXRJbik6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6
OkluTm9kZTo6SW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbCk6
CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BJbik6IERlbGV0ZWQuCisKIDIwMTgt
MDUtMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtaXNz
aW5nIGV4Y2VwdGlvbiBjaGVjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCBlMzIzOWExNWU0NTMzYzg3YzIyMjkxYzI2MjZhMTY4YTE3YjM3
M2QxLi4zZTc3MmJjOTA2OWNhODgzODUwNDY4MGM4YzAzZjkyNmNkNTgxYzM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xMTgsNiArMTE4
LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1
cmVTdHViSW5mbygKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CiAgICAgICAg
IHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBSZXBsYWNlLCBzdHViSW5mby51
LmJ5SWRTZWxmLm9mZnNldCwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJl
LmdldCgpKTsKIAorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgorICAgICAgICByZXR1
cm4gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgSW5IaXQsIHN0dWJJbmZvLnUuYnlJZFNl
bGYub2Zmc2V0LCBzdHViSW5mby51LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkp
OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNTU1
LDEwICs1NTgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAg
ICBqaXQubW92ZShiYXNlR1BSLCB2YWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGxvb3AoJmppdCk7Ci0gICAgICAgIGZhaWxBbmRJZ25vcmUgPSBqaXQuYnJh
bmNoOCgKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6RXF1YWwsCi0gICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBl
KSk7CisgICAgICAgIGZhaWxBbmRJZ25vcmUgPSBqaXQuYnJhbmNoSWZUeXBlKHZhbHVlR1BSLCBQ
cm94eU9iamVjdFR5cGUpOwogICAgICAgICAKICAgICAgICAgaml0LmVtaXRMb2FkU3RydWN0dXJl
KHZtLCB2YWx1ZUdQUiwgc2NyYXRjaDJHUFIsIHNjcmF0Y2hHUFIpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAppbmRleCBhYmU5YThhMjgyZWRmNGU3OGE0NjM4MzBmMzUwYjc2Zjk4ZDBmNTBmLi4zZjlj
NTllNmI2ZGM4MTU5YzQ4ZDUxNTdhMTQ1MTVhYTg5N2ZiNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTU1MSw2ICs1NTEs
NTkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGkKICNlbmRpZgogfQogCit0ZW1wbGF0ZTxjbGFz
cyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1h
cCkKK3sKKyAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkg
KyBsb2NhdGlvbjsKKworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworCisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8g
dGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3Vy
YXRpb25zLgorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKKyAgICAgICAgaWYgKHN0dWJJbmZvLnJl
c2V0QnlHQykKKyAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBHQykiKTsKKworICAg
ICAgICBvdXQucHJpbnRmKCIgaml0KCIpOworCisgICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVj
dHVyZSA9IG51bGxwdHI7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBzdHViID0gbnVsbHB0
cjsKKworICAgICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgeworICAgICAgICBjYXNl
IENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInNlbGYiKTsK
KyAgICAgICAgICAgIGJhc2VTdHJ1Y3R1cmUgPSBzdHViSW5mby51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNo
ZVR5cGU6OlN0dWI6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJzdHViIik7CisgICAgICAgICAg
ICBzdHViID0gc3R1YkluZm8udS5zdHViOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAgICAgICAgIG91dC5wcmludGYoInVuc2V0Iik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChiYXNlU3RydWN0dXJlKSB7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIp
OworICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJzdHJ1Y3QiLCBiYXNlU3RydWN0dXJl
LCBpZGVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3R1YikKKyAgICAgICAgICAgIG91
dC5wcmludCgiLCAiLCAqc3R1Yik7CisKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAgIH0K
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG91dCk7CisgICAgVU5VU0VEX1BBUkFNKG1hcCk7Cisj
ZW5kaWYKK30KKwogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KIHZv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKQEAgLTEwMTIsOCArMTA2NSwxNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IHR5cGVuYW1lIEJsb2NrOgogICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBvcF9pbjogewotICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW4i
KTsKKyAgICBjYXNlIG9wX2luX2J5X2lkOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CisgICAgICAgIHByaW50SW5CeUlk
Q2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfaW5fYnlfdmFsOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJpbl9ieV92YWwiKTsKICAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5n
KG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCmluZGV4
IDdjZDA4Yzk1MjE3ZDRmYzVhYmI3YzM0Nzg2NjFmOTZmNzg2NjM4ODAuLjVlODk0M2VmMTNlMjZh
MmZkZWJlY2ZlOWFhZTRhY2RkNTg0MTM2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIEJ5dGVj
b2RlRHVtcGVyIHsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7CiAgICAgdm9pZCBwcmludEdldEJ5
SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJ
bmZvTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludElu
QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1
YkluZm9NYXAmKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVt
cENhY2hlcyB9OwogICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1w
TW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7
CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCA1NjI4ZGY1YjQ2
MjE2M2ViMjk2MzIxZmU4NThkMDNiNmQ5Zjc2ZTU1Li4xNmYxZmI2MGMzZDY0MGJkYWM5YmZhMjdi
NmM3NTNmNjdmZmJkYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCkBAIC04MCw3ICs4MCw4IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9pc19vYmplY3Rfb3JfbnVsbCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfaXNfZnVuY3Rpb24iLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2lzX2NlbGxfd2l0aF90eXBlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfaW5fYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9pbl9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2FycmF5X2xlbmd0aCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQiLCAibGVuZ3RoIiA6IDkgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5k
ZXggNzAxZDM2Y2ZhYzQ1MWIzYzg4MjM1NjYxYTEwNTcxNzIwMzU4MGRkZi4uZGI1MjJhYzJlNzEx
YTQ5YjNmMmQ5MmRlOGNhMjhiY2ViNTMxZTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE4Niw2ICsxODYsNyBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX2RpcmVjdDoKICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CisgICAg
Y2FzZSBvcF9pbl9ieV9pZDoKICAgICBjYXNlIG9wX3R5cGVvZjoKICAgICBjYXNlIG9wX2lzX2Vt
cHR5OgogICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOgpAQCAtMjI2LDcgKzIyNyw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFt
ZToKICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZToKICAgICBjYXNlIG9wX2dl
dF9ieV92YWw6Ci0gICAgY2FzZSBvcF9pbjoKKyAgICBjYXNlIG9wX2luX2J5X3ZhbDoKICAgICBj
YXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgog
ICAgIGNhc2Ugb3BfYWRkOgpAQCAtNDU0LDcgKzQ1NSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2NlbGxf
d2l0aF90eXBlOgogICAgIGNhc2Ugb3BfaXNfZnVuY3Rpb246Ci0gICAgY2FzZSBvcF9pbjoKKyAg
ICBjYXNlIG9wX2luX2J5X2lkOgorICAgIGNhc2Ugb3BfaW5fYnlfdmFsOgogICAgIGNhc2Ugb3Bf
dG9fbnVtYmVyOgogICAgIGNhc2Ugb3BfdG9fc3RyaW5nOgogICAgIGNhc2Ugb3BfdG9fb2JqZWN0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA4
ZjFhNGJkOTBlM2NhYjBiNWIwMmNmYmY4NjExYWRlMjU3OTMzNDQxLi5jY2UwYjZhMDA2OWY0MmI1
OGUxOWQ4ZTk5NTJmYjFjM2I0ODcwNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTg5LDcgKzU4OSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bf
aW46CisgICAgICAgIGNhc2Ugb3BfaW5fYnlfdmFsOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV92
YWw6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6IHsKICAgICAgICAgICAgIGlu
dCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAppbmRleCA5MTMw
YjFlMjVkNDRlNjYzNTgxN2VhNzhhNDgzZWY4Y2FkNjc5NzkwLi5mMzUxZjgyYmVlMGE0ZDc5NGRh
OTBjNWI4NmJjNmRiYTU5YzM3MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjc2LDYgKzI3NiwyNSBAQCBib29sIElubGluZUFj
Y2Vzczo6Z2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEpT
QXJyYXkqIGFycgogICAgIHJldHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCitib29sIElubGlu
ZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAg
R1BSUmVnIGJhc2UgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIp
OworICAgIEpTVmFsdWVSZWdzIHZhbHVlID0gc3R1YkluZm8udmFsdWVSZWdzKCk7CisKKyAgICBh
dXRvIGJyYW5jaFRvU2xvd1BhdGggPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzIoCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkp
KTsKKyAgICBqaXQuYm94Qm9vbGVhblBheWxvYWQodHJ1ZSwgdmFsdWUucGF5bG9hZEdQUigpKTsK
KworICAgIGJvb2wgbGlua2VkQ29kZUlubGluZSA9IGxpbmtDb2RlSW5saW5lKCJpbiBhY2Nlc3Mi
LCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAg
bGlua0J1ZmZlci5saW5rKGJyYW5jaFRvU2xvd1BhdGgsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbigpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbGlua2VkQ29kZUlubGluZTsKK30KKwog
dm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmgKaW5kZXggOTk0OGIzYjZmODVlOTM2MzE0Y2IxOTcwYzNhYzQ0Mzdh
YjhlNjhiYS4uYTRkMDMzNWY4YWIwNjYwN2RhYTExYmYxYmYxNmIwZTU5YjdmMjFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTE2LDYg
KzExNiw3IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFi
bGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMg
Ym9vbCBnZW5lcmF0ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwog
ICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyBib29sIGdl
bmVyYXRlU2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAKICAg
ICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJQyBv
bgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9mIElD
LCBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGQ1ODE5YWFhOWFmNDY1NzA0ZGUxYjRhZDgxNjlkOWEz
NjdjYzU2YjQuLjA0MjE4ZGIwNDdkMDljZWQ1NWJkMzcyNzc1YTQ3YzU0MTY3Zjk5Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcApAQCAtODEsNiArODEsMTUgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5
SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJhc2UKICAgICB1LmJ5
SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKIH0KIAordm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dEluQnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0
cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNhY2hlVHlwZSA9IENhY2hl
VHlwZTo6SW5CeUlkU2VsZjsKKworICAgIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICpjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgYmFzZU9iamVjdFN0cnVj
dHVyZSk7CisgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZzZXQ7Cit9CisKIHZvaWQgU3RydWN0
dXJlU3R1YkluZm86OmRlcmVmKCkKIHsKICAgICBzd2l0Y2ggKGNhY2hlVHlwZSkgewpAQCAtOTAs
NiArOTksNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiAgICAgY2FzZSBDYWNo
ZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNl
IENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNl
bGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTA2LDYgKzExNiw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9E
aWUoKQogICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKICAgICBjYXNlIENhY2hlVHlwZTo6R2V0
QnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgIGNhc2Ug
Q2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpBcnJheUxlbmd0aDoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNiw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgcmVzZXRQdXRC
eUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OkluOgotICAgICAgICByZXNldEluKCp0aGlzKTsKKyAgICAgICAgcmVzZXRJbkJ5SUQoY29k
ZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5z
dGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKQEAgLTI1OSw2ICsyNzAs
NyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKENvZGVCbG9j
ayogY29kZUJsb2NrKQogICAgIHN3aXRjaCAoY2FjaGVUeXBlKSB7CiAgICAgY2FzZSBDYWNoZVR5
cGU6OkdldEJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAg
ICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2Vk
KHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGJyZWFrOwpAQCAtMjgyLDYgKzI5NCw3IEBAIGJvb2wgU3RydWN0dXJlU3R1
YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRT
ZWxmOgogICAgICAgICByZXR1cm4gdS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKICAgICAgICAgcmV0
dXJuIHUuc3R1Yi0+cHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDE0ZmVk
OTRlYTFkZjZjYzQ4NDE3MWM3OWYwOTg5MDljMmNmZDNmMTEuLmVmZTYxOWI0NDk1MWZiOGY2Mjdk
ZGI5NTFmNWFlODUyMDYyMTI0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01OCw2ICs1OCw3IEBAIGVudW0gY2xhc3Mg
Q2FjaGVUeXBlIDogaW50OF90IHsKICAgICBVbnNldCwKICAgICBHZXRCeUlkU2VsZiwKICAgICBQ
dXRCeUlkUmVwbGFjZSwKKyAgICBJbkJ5SWRTZWxmLAogICAgIFN0dWIsCiAgICAgQXJyYXlMZW5n
dGgKIH07CkBAIC03Miw2ICs3Myw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2
b2lkIGluaXRHZXRCeUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGluaXRBcnJheUxlbmd0aCgpOwogICAg
IHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVj
dFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOworICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7
CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgY29uc3QgSWRlbnRpZmllciYsIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CiAKQEAgLTE3NCw3ICsxNzYsNyBAQCBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbyB7CiAgICAgU3RydWN0dXJlU2V0IGJ1ZmZlcmVkU3RydWN0dXJlczsKICAg
ICAKICAgICBzdHJ1Y3QgewotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4gc3RhcnQ7IC8vIFRoaXMgaXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5l
IElDIGZvciAqYnlJZCBjYWNoZXMsIG9yIHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBm
b3IgJ2luJyBhbmQgJ2luc3RhbmNlb2YnIGNhY2hlcy4KKyAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3Rh
cnQgb2YgdGhlIGlubGluZSBJQyBmb3IgKmJ5SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2Yg
cGF0Y2hhYmxlIGp1bXAgZm9yICdpbnN0YW5jZW9mJyBjYWNoZXMuCiAgICAgICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgICAgIHVpbnQzMl90IGlubGluZVNpemU7CiAgICAgICAg
IGludDMyX3QgZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoQ2FsbExvY2F0aW9uOwpAQCAtMTk1LDcg
KzE5Nyw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4gc2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
cGF0Y2guc3RhcnQubGFiZWxBdE9mZnNldChwYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhT
dGFydCk7IH0KICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IHBhdGNoYWJs
ZUp1bXAoKQogICAgIHsgCi0gICAgICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6
OkluIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFuY2VPZik7CisgICAgICAgIEFT
U0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YpOwogICAgICAgICByZXR1
cm4gcGF0Y2guc3RhcnQuanVtcEF0T2Zmc2V0PEpTSW50ZXJuYWxQdHJUYWc+KDApOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ZDY0NDliMzBlMjc4YzNlZmFlNzA4MmVlOWU3MDA1ZWZk
MGI1OWI2Li5lMTk5ZThmMWI0MWMxMzU1MzY2ZGM0ODg0ZDUzZDZlMzMzMzEwNTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMjY2NywxMCArMjY2NywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
YmFzZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5CeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKQogewogICAg
IFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwot
ICAgIGVtaXRPcGNvZGUob3BfaW4pOworICAgIGVtaXRPcGNvZGUob3BfaW5fYnlfdmFsKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3Bl
cnR5LT5pbmRleCgpKTsKQEAgLTI2NzgsNiArMjY3OCwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEluKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHks
IFJlZwogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SW5CeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHkpCit7CisgICAgZW1pdE9wY29kZShvcF9pbl9ieV9pZCk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25z
dGFudChwcm9wZXJ0eSkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0VHJ5R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub3Qg
c3VwcG9ydGVkIHdpdGggdHJ5R2V0QnlJZC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBiNzI1NWFjNjIx
NmUwOWRjZTFhZDRkN2M2NjllYzU0NmEyY2I0NjczLi45NzgyOGNhNTBlZmE4YjY1MmRkZmY2ZTQ4
Mjk5MzA4MWRhNWViYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02OTQsNyArNjk0LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGJhc2VQcm90b3R5cGUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZkN1c3RvbShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogaGFz
SW5zdGFuY2VWYWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUeXBlT2YoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU9wKG9wX3R5cGVvZiwg
ZHN0LCBzcmMpOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEluQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbkJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDA3YTljOTA3YTdlMjEzMGE0
MjQ0ZGZhMDAxMWY3Y2E1MmIwNmU4YTYuLmE1ZmE1MjVkMjE2MDIxYjAwZDk1NWFkOWRlNjNjMTFm
MzM2YTU4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKQEAgLTIyODAsMTAgKzIyODAsMTYgQEAgUmVnaXN0ZXJJRCogSW5z
dGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlckkKIAogUmVnaXN0ZXJJRCogSW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIGlmIChpc05vbkluZGV4
U3RyaW5nRWxlbWVudCgqbV9leHByMSkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0SW5CeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgYmFzZS5nZXQoKSksIGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPiht
X2V4cHIxKS0+dmFsdWUoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGtleSA9
IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0SW4oZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBrZXkuZ2V0KCkpLCBrZXkuZ2V0KCksIGJhc2UuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEluQnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBrZXkuZ2V0KCkp
LCBrZXkuZ2V0KCksIGJhc2UuZ2V0KCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5
YmQ4YTUzM2IxY2UxZDY0YzkzMjMzMzljODBmMTQ3NTg3OWY0NGM5Li45ZGE1ZjQxYzhkYjlkMWYx
MmNmM2EzYTMxMTM0NDc3MWIwNzAxMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMjU5LDEw
ICszMjU5LDMwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2FzZSBJbjogeworICAgIGNhc2Ug
SW5CeUlkOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJtaW5lIHdoZW4gdGhlIHBy
b3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0CiAgICAgICAgIC8vIHZh
bHVlIGluZm9ybWF0aW9uLgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgZmlsdGVy
KG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0KTsKKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2Fz
ZSBJbkJ5VmFsOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHByb3BlcnR5ID0gZm9yTm9kZShu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGlmIChKU1ZhbHVlIGNvbnN0YW50ID0gcHJvcGVydHku
dmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKGNvbnN0YW50LmlzU3RyaW5nKCkpIHsKKyAgICAg
ICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY29uc3RhbnQpOworICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1w
bCgpOworICAgICAgICAgICAgICAgIGlmIChpbXBsICYmIGltcGwtPmlzQXRvbWljKCkpCisgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3
aGVuIHRoZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdAorICAg
ICAgICAvLyB2YWx1ZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgIGZpbHRlcihub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCk7CiAgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggMzg3NGZjYzViMzZkZDk0Mjc1YWIyNTMyNjk1NTBjMTMyMzk0ZTNkNS4uZTBlN2I0MzExNmEy
YzJmNzhkZDQ1OWM3NzIwM2FkN2YwZWMyYjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIwNyw2ICsyMDcsOCBAQCBjbGFzcyBC
eXRlQ29kZVBhcnNlciB7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QpOworICAgIHZvaWQgaGFuZGxlSW5CeUlk
KAorICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpOwogICAgIAogICAgIC8v
IEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNv
bmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2Vy
IGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQu
CkBAIC00MzExLDYgKzQzMTMsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICB9IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKGludCBk
ZXN0aW5hdGlvbk9wZXJhbmQsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5zdHJ1Y3Rp
b25TaXplKTsKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksIGFk
ZFRvR3JhcGgoSW5CeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksICBiYXNlKSk7Cit9CisK
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQogewogICAgIGNsZWFy
Q2FjaGVzKCk7CkBAIC02MzYzLDExICs2MzcxLDIwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19v
YmplY3QpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bT1BD
T0RFX0xFTkdUSChvcF9pbikgLSAxXS51LmFycmF5UHJvZmlsZSk7CisgICAgICAgIGNhc2Ugb3Bf
aW5fYnlfdmFsOiB7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlN
b2RlKGN1cnJlbnRJbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2luX2J5X3ZhbCkgLSAxXS51
LmFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW4s
IE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lu
KTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUu
YXNXb3JkKCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIG9wX2luX2J5X2lkOiB7CisgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07Cisg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBPUENPREVfTEVOR1RIKG9wX2luX2J5
X2lkKTsKKyAgICAgICAgICAgIGhhbmRsZUluQnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBvcGNvZGVMZW5ndGgpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfaW5fYnlfaWQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjZWU2NWI2ODQz
ZWNhNTA4OGVkMWE5YTkxMDk0ZjM0MDU3YWFhNDQuLmRhZGM5MmQ4NjdlNGM0NGEzNDYyZDhkNmRh
YjY0NTgwNzVhY2RkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKQEAgLTIzNiw3ICsyMzYsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Ywog
ICAgIGNhc2Ugb3BfdG9fb2JqZWN0OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNl
IG9wX3N3aXRjaF9jaGFyOgotICAgIGNhc2Ugb3BfaW46CisgICAgY2FzZSBvcF9pbl9ieV92YWw6
CisgICAgY2FzZSBvcF9pbl9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKICAgICBjYXNl
IG9wX2dldF9mcm9tX3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBhZDYyMzY0N2E3
NzA0MGMwZDNiODI2Y2RjMWEzNzBjMWEyM2I5YmRjLi41NTJlZGVmYWU1MmI4OTg5OTgwNjE4N2Vh
OTFkMjcxNzVkZmM2NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtNjE5LDcgKzYxOSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAg
ICAgY2FzZSBUb1ByaW1pdGl2ZToKLSAgICBjYXNlIEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAg
ICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgIGNhc2UgVmFsdWVB
ZGQ6CiAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDczNzQxODU2Njdl
MGJkYjc4N2E4M2I3MDJjYjE4OTU5YjUwNjlkMDEuLmI3ZWRjMDYwZjQzNjI5M2FjYTQ5ODg4MzNl
YTk0NjIwYzU3MmNhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC02MTYsNiArNjE2LDIzIEBAIGNsYXNzIENv
bnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBJbkJ5VmFsOiB7CisgICAgICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgcHJvcGVydHkgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGNvbnN0YW50ID0gcHJvcGVy
dHkudmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNTdHJpbmco
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5n
KGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGlt
cGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGltcGwgJiYgaW1wbC0+aXNBdG9taWMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5z
dXJlKGNvbnN0X2Nhc3Q8VW5pcXVlZFN0cmluZ0ltcGwqPihzdGF0aWNfY2FzdDxjb25zdCBVbmlx
dWVkU3RyaW5nSW1wbCo+KGltcGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSW5CeUlkKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICBjYXNlIFRvUHJpbWl0aXZlOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjRnVsbE51bWJlciB8
IFNwZWNCb29sZWFuIHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQmlnSW50KSkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggOTc0ZDk3MTM2NmZmZDhiNzk3ODZmYmIyNmRlZDNhYzI1YjY4N2ZkYS4uNDE2
MjEwYTkwY2VmYjBkODNkOTBiMTU0OWExZmVjMDI3Y2Q5NWU1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTkzLDcgKzE5Myw4IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgogICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgotICAgIGNhc2UgSW46CisgICAgY2FzZSBJbkJ5VmFs
OgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAgY2FzZSBK
dW1wOgogICAgIGNhc2UgQnJhbmNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggMDEwMWQzNzliY2Q2Zjc0NWU3MmE4OGVjMjE5ZmJjZjMyOWUzOGE5
Yi4uOWExZGMxMzZkMDE2ZWRhYTJhZjBhMzYwZWVkN2JmM2UyMDY3M2FhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDY5LDcgKzE0NjksMTIg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNhc2UgSW46IHsKKyAgICAgICAgY2FzZSBJbkJ5SWQ6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIEluQnlWYWw6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewogICAgICAgICAgICAgICAgIGNvbnZlcnRUb0hh
c0luZGV4ZWRQcm9wZXJ0eShub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNWU1YTdhODc1MjQ0
MjQxYjUyNmE5ZjI0YjRmZjQwY2U5ODg1YmY2MS4uNWZkNTBiOGM3ZjAxZWUzNmUxYjI3M2FhYzIz
YTBjODYyMjc4M2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKQEAgLTI2NSwyNiArMjY1LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNXaXRoVGhp
cywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgbGlu
a0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsK
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2lucy5zaXplKCk7ICsraSkgewotICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5mbyA9ICptX2luc1tpXS5tX3N0dWJJbmZvOwotCi0g
ICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydCA9IGxp
bmtCdWZmZXIubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9pbnNbaV0ubV9qdW1w
KTsKLSAgICAgICAgaW5mby5wYXRjaC5zdGFydCA9IHN0YXJ0OwotCi0gICAgICAgIHB0cmRpZmZf
dCBpbmxpbmVTaXplID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigK
LSAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4obV9pbnNbaV0ubV9kb25lKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGlubGluZVNpemUg
Pj0gMCk7Ci0gICAgICAgIGluZm8ucGF0Y2guaW5saW5lU2l6ZSA9IGlubGluZVNpemU7Ci0KLSAg
ICAgICAgaW5mby5wYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb24gPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgc3Rh
cnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5tX3Ns
b3dQYXRoR2VuZXJhdG9yLT5jYWxsKCkpKTsKLQotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhRnJv
bVN0YXJ0VG9TbG93UGF0aFN0YXJ0ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cigKLSAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4obV9pbnNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwotICAg
IH0KLSAgICAKICAgICBhdXRvIGxpbmtDYWxsVGh1bmsgPSBGdW5jdGlvblB0cjxOb1B0clRhZz4o
dm0oKS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CiAgICAgICAg
IENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCAwNTBlYjdjMTZmNmRiOTA0NDg5YmQyYjc4NmNk
M2ZkMWYwMjk0NTllLi5jMTdiMDMyMTE0ODhiZjg1OWJlNTU1MDRlMmVhYjBhZGZhNDM0OTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC03NiwyMyAr
NzYsNiBAQCBzdHJ1Y3QgQ2FsbExpbmtSZWNvcmQgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4gbV9mdW5jdGlvbjsKIH07CiAKLXN0cnVjdCBJblJlY29yZCB7Ci0gICAgSW5SZWNv
cmQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAsIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBkb25lLAotICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhH
ZW5lcmF0b3IsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKLSAgICAgICAgOiBtX2p1bXAo
anVtcCkKLSAgICAgICAgLCBtX2RvbmUoZG9uZSkKLSAgICAgICAgLCBtX3Nsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoR2VuZXJhdG9yKQotICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8pCi0g
ICAgewotICAgIH0KLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX2p1
bXA7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKLSAgICBTbG93UGF0aEdlbmVy
YXRvciogbV9zbG93UGF0aEdlbmVyYXRvcjsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHVi
SW5mbzsKLX07Ci0KIC8vID09PSBKSVRDb21waWxlciA9PT0KIC8vCiAvLyBERkc6OkpJVENvbXBp
bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIEpJVCBjb2RlIGZyb20gdGhlIGRhdGFm
bG93IGdyYXBoLgpAQCAtMjA5LDExICsxOTIsMTEgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJs
aWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9
CiAKLSAgICB2b2lkIGFkZEluKGNvbnN0IEluUmVjb3JkJiByZWNvcmQpCisgICAgdm9pZCBhZGRJ
bkJ5SWQoY29uc3QgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBz
bG93UGF0aCkKICAgICB7Ci0gICAgICAgIG1faW5zLmFwcGVuZChyZWNvcmQpOworICAgICAgICBt
X2luQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+KGdl
biwgc2xvd1BhdGgpKTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGFkZEpTQ2FsbChDYWxsIGZh
c3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgQ2FsbExp
bmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9qc0NhbGxzLmFwcGVuZChKU0NhbGxSZWNv
cmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBpbmZvKSk7CkBAIC0zNTksOCAr
MzQyLDggQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICBW
ZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2dldEJ5
SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yPiwgND4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdy
YXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fcHV0QnlJZHM7CisgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CiAgICAg
VmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiwgND4gbV9p
bnN0YW5jZU9mczsKLSAgICBWZWN0b3I8SW5SZWNvcmQsIDQ+IG1faW5zOwogICAgIFZlY3RvcjxK
U0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RDYWxsUmVjb3Jk
LCA0PiBtX2pzRGlyZWN0Q2FsbHM7CiAgICAgVmVjdG9yPEpTRGlyZWN0VGFpbENhbGxSZWNvcmQs
IDQ+IG1fanNEaXJlY3RUYWlsQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDRkOTdjZDNhYjEyN2QzMGJiZjQ2YWM3MzllZGJmMWJlYTg1YzEzMGQuLmY2ZTEwZWIzZGIz
MjJhY2QwYzNhYzQ1NTViOWQ1Y2I0ZWRhOTg4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC03NDMsNiArNzQzLDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgc2V0T3Ao
U2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KTsKICAgICAgICAgbV9vcEluZm8gPSBmYWxzZTsKICAg
ICB9CisKKyAgICB2b2lkIGNvbnZlcnRUb0luQnlJZCh1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gSW5CeVZhbCk7CisgICAgICAgIHNldE9w
QW5kRGVmYXVsdEZsYWdzKEluQnlJZCk7CisgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihFZGdl
KCkpOworICAgICAgICBtX29wSW5mbyA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIG1fb3BJ
bmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9CiAgICAgCiAgICAgSlNWYWx1ZSBhc0pTVmFs
dWUoKQogICAgIHsKQEAgLTEwMTAsNiArMTAxOSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
Y2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAg
ICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgICAgIGNh
c2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgICAgICBj
YXNlIFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6CkBAIC0xOTY3LDcgKzE5
NzcsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRWZWN0
b3JMZW5ndGg6Ci0gICAgICAgIGNhc2UgSW46CisgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CmluZGV4IGZlZWMyNWU1N2MzYmJkZGE0OWEwOTExY2FhODE4ODdlN2VjNDBiMWUuLjRmYmE5MGRh
NzU3ZDg2ZTE2MTZkYTM1MjI2MGY4ZWJjMzczZGZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM2OSw3ICszNjksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0
YW50LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdTdHJpbmdPYmplY3QsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKE1ha2VSb3BlLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhJ
biwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oSW5C
eVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
SW5CeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQcm9maWxlVHlwZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFByb2ZpbGVDb250
cm9sRmxvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFNldEZ1bmN0aW9uTmFtZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0YmNiMDJjNjA4
NWNhMTAwNjg1ZjNmNTkxN2YzODU1ZjFhMWNiNDMxLi4yMjg2NDNiMjA3YTMxNTg3NDY2ZjJmMDcz
MDBmYTMwMTViOTg3OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTgwLDcgKzk4MCw4
IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIGNhc2UgSW46CisgICAgICAgIGNhc2UgSW5CeVZhbDoKKyAgICAgICAg
Y2FzZSBJbkJ5SWQ6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCmluZGV4IGYxODNhZTk0OWU0NDU3ZTZiMzk0YjYxZDhlNGY0N2YzMjZkNDllOWMu
LjgyZWVkNmE2OGRhZDhjNTNjMWY3YjYxZDM4ZDRkMmEzYzg3Y2I2NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMzIsNyArMzMyLDggQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6Ci0gICAgY2FzZSBJbjoKKyAgICBj
YXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToK
ICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAz
ZjkzNGUzYjExZDgxYzhmYmJiMjIxYjc2N2UwMWEzNDA0NTJjMWNhLi5hNTgyZjJmMjZhNTllZDNk
NDlkZjJiY2ZkOGU4YzY2NzJmZDUzOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTA1Niw2NyArMTA1Niw1MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihO
b2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZChOb2RlKiBub2Rl
KQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisK
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgCi0gICAgaWYgKEpTU3RyaW5n
KiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+
KCptX2ppdC52bSgpKSkgewotICAgICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSAm
JiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0b21pYygpKSB7Ci0gICAgICAgICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkU3R1Yklu
Zm8oQWNjZXNzVHlwZTo6SW4pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAg
ICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVtcCA9IG1faml0LnBhdGNoYWJsZUp1bXAo
KTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lID0gbV9qaXQubGFiZWwo
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBibG9jayBpcyBleGVj
dXRlZCBvbmx5IHdoZW4gdGhlIHJlc3VsdCBvZiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpIGlz
IGF0b21pYywKLSAgICAgICAgICAgIC8vIHdlIGNhbiBjYXN0IGl0IHRvIGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwqIHNhZmVseS4KLSAgICAgICAgICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICAgICAganVtcC5tX2p1bXAsIHRoaXMsIG9wZXJhdGlvbkluT3B0aW1p
emUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUiks
IHN0dWJJbmZvLCBiYXNlR1BSLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEF0
b21pY1N0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHN0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5jb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOwotICAgICAgICAgICAgc3R1
YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1bHRHUFIpOwot
ICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+
KEludmFsaWRHUFJSZWcpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJS
ZWcpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VUYWdHUFIgPSBzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRo
aXNUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotI2VuZGlmCi0g
ICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMo
KTsKKyAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgICAgICBtX2ppdC5hZGRJbihJblJlY29yZChq
dW1wLCBkb25lLCBzbG93UGF0aC5nZXQoKSwgc3R1YkluZm8pKTsKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCkpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAgICAgICAgICBiYXNlLnVzZSgpOworICAg
IGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIGdlbi5zbG93UGF0aEp1bXAo
KSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgIE5lZWRUb1NwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgcmVzdWx0UmVn
cywgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmll
ck51bWJlcigpKSk7CiAKLSAgICAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogCisg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyByZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7Ci0gICAgICAgIAotICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotICAgICAgICAKKwogICAgIGJhc2UudXNlKCk7CiAgICAga2V5LnVzZSgpOwot
ICAgICAgICAKKwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgb3BlcmF0aW9uR2VuZXJpY0luLCBleHRyYWN0UmVzdWx0KEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZXN1bHRHUFIpKSwKLSAgICAgICAgYmFzZUdQUiwgcmVncyk7CisgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5
VmFsLCByZXN1bHRSZWdzLCBiYXNlR1BSLCByZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwotICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAwYjc5MTJk
Y2NjMjVjMzRjZWM1ZWRhNDc0MjVlOTY0NGY1YmFmNzc3Li40NjE3NGM5NGE0OWUzYzc4ZThhNTVh
OGI4M2JiYjA0MjhiYWUzMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC03MzUsNyArNzM1LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUdldEJ5SWQoTm9kZSosIEFjY2Vzc1R5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5SWRGbHVz
aChOb2RlKiwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjb21waWxlSW4oTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUluQnlJZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlSW5CeVZhbChOb2RlKik7
CiAgICAgCiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVu
ZGVmaW5lZChFZGdlIG9wZXJhbmQpOwogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJy
YW5jaE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE5vZGUqIGJyYW5jaE5vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggOWYxMzFkOTE0YjFlNTAwMmI1NDY2YzE3NGE3ODc4ZTZhNjc1MzRlMi4uM2VmYjdi
N2U0NTA4MWU2OGU1YWQ4YTBlNGM1YmRiMmE0MThhZDM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNzUxLDgg
KzM3NTEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlU2V0RnVuY3Rpb25OYW1lKG5vZGUpOwogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgSW46Ci0gICAgICAgIGNvbXBpbGVJbihub2RlKTsKKyAgICBjYXNlIEluQnlJZDoKKyAg
ICAgICAgY29tcGlsZUluQnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElu
QnlWYWw6CisgICAgICAgIGNvbXBpbGVJbkJ5VmFsKG5vZGUpOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgSGFzT3duUHJvcGVydHk6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGEyY2FhMDAzYWZiZDZmZmE3YmNkZTE4
MmU0MGEyNzdmYzMyMjY0YWEuLjhkMzg2OTc3Y2E4M2IyNDY4OTg0OTExYTM2ZjJhOWE5MTQyNTg4
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcApAQCAtNDMwMSw4ICs0MzAxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNldEZ1bmN0aW9uTmFtZShub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEluOgotICAgICAgICBjb21waWxlSW4obm9kZSk7Cisg
ICAgY2FzZSBJbkJ5SWQ6CisgICAgICAgIGNvbXBpbGVJbkJ5SWQobm9kZSk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBJbkJ5VmFsOgorICAgICAgICBjb21waWxlSW5CeVZhbChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhhc093blByb3BlcnR5OiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMDY4NjNkMGUyMmQ2
NGU2YTFiMTMzNzNiYjEzYjBiNzQzYTVjYzJlZC4uNmI5NTEzNDhlZDI0MmI0YmQwMjY3MzczN2Zj
NWQ0YjE3Njk5NzY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcApAQCAtMjA1LDcgKzIwNSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBUaHJvd1N0YXRp
Y0Vycm9yOgogICAgIGNhc2UgVW5yZWFjaGFibGU6Ci0gICAgY2FzZSBJbjoKKyAgICBjYXNlIElu
QnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBj
YXNlIElzQ2VsbFdpdGhUeXBlOgogICAgIGNhc2UgTWFwSGFzaDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAxMmM5MzM4NmFmYTVmZjMzYzgz
YTdhNjA3NzUwMGIyYWJhM2I5MjY3Li5lNmRlY2ZhZWY5NDNhNGFlZmVhZWZjYzJlOWY3ODBhYmVm
OGQ3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC03MDgsOCArNzA4LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNh
c2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNz
VHlwZTo6R2V0RGlyZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEluOgot
ICAgICAgICAgICAgY29tcGlsZUluKCk7CisgICAgICAgIGNhc2UgSW5CeUlkOgorICAgICAgICAg
ICAgY29tcGlsZUluQnlJZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5C
eVZhbDoKKyAgICAgICAgICAgIGNvbXBpbGVJbkJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgICAgIGNvbXBpbGVIYXNPd25Q
cm9wZXJ0eSgpOwpAQCAtOTY2OSw4NyArOTY3Miw3MCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIGNvbXBpbGVJbigpCisgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCiAgICAg
ewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkluQnlW
YWwpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMigpKSkpOworICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisg
ICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICBFZGdlIGJhc2UgPSBu
b2RlLT5jaGlsZDEoKTsKLSAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKGJhc2UpOwotICAg
ICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5vZGUtPmNoaWxkMigpLT5keW5hbWljQ2FzdENv
bnN0YW50PEpTU3RyaW5nKj4odm0oKSkpIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmctPnRyeUdl
dFZhbHVlSW1wbCgpICYmIHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCktPmlzQXRvbWljKCkpIHsK
LSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogc3RyID0gYml0d2lzZV9jYXN0PFVu
aXF1ZWRTdHJpbmdJbXBsKj4oc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSk7Ci0gICAgICAgICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2
NCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwp
OwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLQotICAgICAg
ICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7Ci0KLSAgICAg
ICAgICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21l
UmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZh
bHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisKKyAgICAgICAgUmVmUHRy
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAg
ICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAg
U3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJn
ZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhh
bmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0
ZSgKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCB1aWQsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCisgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAg
ICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCisgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMu
IFdlIGRvbid0IG5lZWQgYSBKUyBleGNlcHRpb25IYW5kbGUgYmVjYXVzZSB3ZSBkb24ndAotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGUgUHJveHkgb2JqZWN0cy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0u
Z3ByKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5hZGRT
dHViSW5mbyhBY2Nlc3NUeXBlOjpJbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
by0+Y2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BS
ID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BS
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC50aGlzR1BSID0gc3Rh
dGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6UGF0Y2hhYmxl
SnVtcCBqdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcC5tX2p1bXAubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93
UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25Jbk9wdGltaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBiYXNlR1BSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cikpLmNh
bGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExp
bmtUYXNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0ID0gbGlua0J1
ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihqdW1wKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guc3RhcnQgPSBzdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgaW5s
aW5lU2l6ZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KGRvbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmxpbmVTaXplID49IDApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5pbmxpbmVTaXpl
ID0gaW5saW5lU2l6ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb24gPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
PE5vUHRyVGFnPihzbG93UGF0aENhbGwpKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhTdGFy
dCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8Tm9QdHJUYWc+KHNsb3dQYXRoQmVnaW4pKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBw
YXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
dWlkKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0
U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IAotCi0g
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
R2VuZXJpY0luKSwgbV9jYWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsKICAgICB9CiAKICAgICB2b2lk
IGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmlu
ZGV4IGMxYzJkNGU5NTdkZmVhZTcxMjAzOWM0NWNiZTdiOTVjNjJhODI1YzAuLjY4NGU4MTNkYzRh
NGE4M2M2NzUxMDMwZTBiYzdiNjZiOWJmMmExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5oCkBAIC01MCw5ICs1MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpIFwKLSAg
ICBtYWNybyhPcGVyYXRpb25Jbk9wdGltaXplKSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uSW4pIFwK
ICAgICBtYWNybyhPcGVyYXRpb25HZW5lcmljSW4pIFwKKyAgICBtYWNybyhPcGVyYXRpb25JbkJ5
SWQpIFwKKyAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWRHZW5lcmljKSBcCisgICAgbWFjcm8oT3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkU3RyaWN0
KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdCkgXAogICAgIG1hY3JvKE9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpIFwKQEAgLTY3LDcgKzY4LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlz
dCkgXAogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJ
ZFJlcGxhY2VXaXRoSnVtcCkgXAotICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpCisgICAgbWFj
cm8oUHV0QnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkKIAogY2xh
c3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTk5
ZDgxYThhMzVhMzRiMzEyZWYzMTU2ZjJmZDhkMzQ2NDczN2RiZS4uZDlkYjA2MjlhNDM4YzEyOWQ1
N2JmYTM4MzE2NjllYjhhZjE1Njk5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
NzgsMTEgKzc4LDYgQEAgSklUOjpKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5z
aWduZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQpCiAgICAgLCBtX2ludGVycHJldGVyKHZt
LT5pbnRlcnByZXRlcikKICAgICAsIG1fbGFiZWxzKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+bnVt
YmVyT2ZJbnN0cnVjdGlvbnMoKSA6IDApCiAgICAgLCBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAsIG1fZ2V0QnlJZEluZGV4KFVJTlRf
TUFYKQotICAgICwgbV9nZXRCeUlkV2l0aFRoaXNJbmRleChVSU5UX01BWCkKLSAgICAsIG1fcHV0
QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgoVUlOVF9N
QVgpCi0gICAgLCBtX2NhbGxMaW5rSW5mb0luZGV4KFVJTlRfTUFYKQogICAgICwgbV9wY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIoKnZtKQogICAgICwgbV9jYW5CZU9wdGltaXplZChmYWxzZSkKICAg
ICAsIG1fc2hvdWxkRW1pdFByb2ZpbGluZyhmYWxzZSkKQEAgLTI3Nyw3ICsyNzIsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZU9mZnNldDsKIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
Ci0gICAgICAgIERFRklORV9TTE9XX09QKGluKQorICAgICAgICBERUZJTkVfU0xPV19PUChpbl9i
eV92YWwpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3MpCiAgICAgICAgIERFRklORV9TTE9X
X09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ3JlYXRlcikKQEAgLTM0MSw2ICsz
MzYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklO
RV9PUChvcF9iZWxvdykKICAgICAgICAgREVGSU5FX09QKG9wX2JlbG93ZXEpCiAgICAgICAgIERF
RklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3BfaW5fYnlfaWQp
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfcHJvdG9fbG9hZDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6CkBAIC00
NzgsNiArNDc0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBt
X2dldEJ5SWRJbmRleCA9IDA7CiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAg
bV9wdXRCeUlkSW5kZXggPSAwOworICAgIG1faW5CeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFu
Y2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9j
YWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01MjEsNiArNTE4LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0
cnVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2luX2J5X2lkKQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgpAQCAtNjAwLDYgKzU5OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9nZXRCeUlkSW5kZXggPT0gbV9nZXRCeUlkcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPT0gbV9n
ZXRCeUlkc1dpdGhUaGlzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9wdXRCeUlkSW5k
ZXggPT0gbV9wdXRCeUlkcy5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1faW5CeUlkSW5k
ZXggPT0gbV9pbkJ5SWRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZU9m
SW5kZXggPT0gbV9pbnN0YW5jZU9mcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fY2Fs
bExpbmtJbmZvSW5kZXggPT0gbV9jYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQobnVtYmVyT2ZWYWx1ZVByb2ZpbGVzID09IG1fY29kZUJsb2NrLT5udW1iZXJP
ZlZhbHVlUHJvZmlsZXMoKSk7CkBAIC04NDIsNiArODQxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQg
SklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzLCBwYXRjaEJ1
ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIAog
ICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggMTU2ZjFiNTgxMjlmN2Y2Y2Y3NmYxMzk1YTUzYTlhOWQyMDhkYmZkNC4uYjk2
YWEyMjQzM2FhYmRhNTBlYThkYTlmM2E5OTVkOTA0Yjc5Nzk1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC01MDAsNiArNTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
aW5fYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9y
ZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5z
dGFuY2UoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTYxMSw2ICs2MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTg2NSw2ICs4Njcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+
IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+
IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+
IG1fcHV0QnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlk
czsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7
CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9u
SW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0
aW9uSW5mbzsKQEAgLTg3OCwxMiArODgxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
dW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjazsKICAgICAgICAg
TGFiZWwgbV9leGNlcHRpb25IYW5kbGVyOwogCi0gICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZElu
ZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4OwotICAgICAgICB1
bnNpZ25lZCBtX3B1dEJ5SWRJbmRleDsKLSAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5k
ZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwotICAgICAgICB1
bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OworICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRJ
bmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5k
ZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRf
TUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAg
ICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVu
c2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5z
aWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIAogICAgICAg
ICBMYWJlbCBtX2FyaXR5Q2hlY2s7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVy
PiBtX2xpbmtCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDhmMTdlOWU3YTM5ZGQ2YWQwODZjMDFhMzRl
MmMxODA4NGI5MjNmMTQuLjlkYWY0OWRiZTkzZWJkMTZhODk3NjJhYmY2MDdlZDA0MjIxZGM5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0xNjYsNiArMTY2LDIwIEBAIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkg
SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IoCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0
ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lID09
IGNvZGVCbG9jay0+dm0oKS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7Cit9CisK
K3ZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCit7CisgICAgZ2VuZXJhdGVGYXN0Q29tbW9uKGppdCwgbV9pc0xlbmd0aEFjY2VzcyA/
IElubGluZUFjY2Vzczo6c2l6ZUZvckxlbmd0aEFjY2VzcygpIDogSW5saW5lQWNjZXNzOjpzaXpl
Rm9yUHJvcGVydHlBY2Nlc3MoKSk7Cit9CisKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVElu
c3RhbmNlT2ZHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAogICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBwcm90b3R5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMDdhMDhjODVjMjNjMjIzMDVjM2FhNDVjZjQ1MzdiZDlj
NzY1YjQwNC4uMWE1MjRkOGU2MmMyNmM4NzIyMDJiM2ZiMmEyZDlkOWU2YjJhNjBkYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aApAQCAtMTQzLDYgKzE0MywyMCBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3Mg
SklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworcHVibGljOgor
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQorCisgICAgSklUSW5CeUlkR2VuZXJhdG9yKAor
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworCisgICAgdm9p
ZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgYm9v
bCBtX2lzTGVuZ3RoQWNjZXNzOworfTsKKwogY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5zdGFu
Y2VPZkdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggYmYxNjc3ZTIyYzczZTI0NjQxY2JlOGUwZTM5ZTU1MDY0MDk3YmUxMS4u
NzZkNzJlMjk3MzliNjAxMDUzZWY1MjMwYTdkZDAwMGI2NmVmYTRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0zNzcsNjQgKzM3Nyw4OCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgUwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAotICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkg
ewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZt
LCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7
CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZh
bHVlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQotICAgIAotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwga2V5KTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluT3B0
aW1pemUsIGJhc2UtPmNsYXNzSW5mbygqdm0pLCBpZGVudCkpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7
Ci0gICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChhY2Nlc3NUeXBlID09IHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKLSAgICAKLSAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhl
eGVjLT5jb2RlQmxvY2soKSwgYXNPYmplY3QoYmFzZSktPnN0cnVjdHVyZSgpKSkKLSAgICAgICAg
cmVwYXRjaEluKGV4ZWMsIGJhc2UsIGlkZW50LCByZXN1bHQsIHNsb3QsICpzdHViSW5mbyk7Ci0g
ICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAg
TE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5SWQsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2
bSksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxs
KiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAotICAgIHN0dWJJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJy
b3IoZXhlYywgYmFzZSkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKCZ2bSwgdWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMs
IGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5
KTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluLCBiYXNlLT5jbGFzc0luZm8oKnZt
KSwgaWRlbnQpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSktPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkp
OworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5CeUlkR2VuZXJpYywgYmFzZU9iamVj
dC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZU9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwg
dWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwor
ICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1
ZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAg
ICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBiYXNlT2JqZWN0LT5j
bGFzc0luZm8odm0pLCBpZGVudCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBi
b29sIGZvdW5kID0gYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhleGVjLT5jb2RlQmxvY2soKSwg
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSkpCisgICAgICAgIHJlcGF0Y2hJbkJ5SUQoZXhlYywg
YmFzZU9iamVjdCwgaWRlbnQsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8pOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBi
YXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluQnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1Zh
bHVlIGtleSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2Rl
KGtleSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xv
d1BhdGhzOjpvcEluQnlWYWwoZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CiB9
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA3YTMyNjY5
ZTRlM2RlZDI0MmJmN2NlNTA0Yzg3MDMwMTY1NjlmNDVjLi42MDcxZTVkYWI0ZDNhMjU2Nzg1YjU0
ZDE0YjU4MWRlMWFjY2VkMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMzcxLDkgKzM3MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0R2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8q
LCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluQnlWYWwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggN2U1ZDEwN2FkMjIyNTllYTI0ZjNmZjVhNWE4ZjFhNWI2NzE3ZWI3MC4u
ZTYzNmY3MTIwOTBmZjUwOThlZDYxNDNlYTliOGM5YTJmODA5NzczOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTc1MSw2ICs3NTEs
NDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCByZXN1bHRWUmVnID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZVZSZWcgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CisK
KyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKKworICAg
IEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGlkZW50LT5pbXBs
KCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdFZSZWcpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgaW50IHJl
c3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeUlkc1ttX2luQnlJZEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkp
OworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAxNDM3M2JiYjI0NjcxOGU5NDdkZWY2ZTkyZTAw
MjUwYWM0Y2ZkYWUxLi44NWVjMGIyMDRkMjc2ZjI5MTMxYzlhODhkZjlmM2RjMGUxMDcyNjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTYwNSw4ICs2MDUsOCBAQCB2
b2lkIHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjbwogICAgIH0KIH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlSW4oCi0gICAgRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LAorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5C
eUlEKAorICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CkBAIC02MzEsNiArNjMxLDI2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
KAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlw
ZUFjY2Vzc0NoYWluOwogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRp
b25TZXQ7CiAgICAgICAgIGlmICh3YXNGb3VuZCkgeworICAgICAgICAgICAgSW5saW5lQ2FjaGVB
Y3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgICAgICBpZiAo
YWN0aW9uICE9IEF0dGVtcHRUb0NhY2hlKQorICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb247
CisKKyAgICAgICAgICAgIC8vIE9wdGltaXplIHNlbGYgYWNjZXNzLgorICAgICAgICAgICAgaWYg
KHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkKKyAgICAgICAgICAgICAgICAmJiBzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZQorICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQor
ICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGlu
ZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3Moc3R1YkluZm8sIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCksIGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGlu
Z1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihjb2RlQmxvY2ssIHN0cnVj
dHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBS
ZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IGJhc2UpIHsKICAgICAgICAgICAgICAgICBi
b29sIHVzZXNQb2x5UHJvdG87CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4g
PSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7CkBAIC02NjQsNyArNjg0LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW4oCiAgICAgICAgIExPR19JQygoSUNFdmVudDo6
SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCkpOwogCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAotICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJ
bkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgIHZt
LCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNlOjpJ
bk1pc3MsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRPZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAK
ICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9j
aywgaWRlbnQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC02NzIsMTAgKzY5Miw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
Ci0KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKLSAgICAgICAgICAg
ICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0gICAgICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNjg0LDEzICs3MDEsMTQgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW4oCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9u
Q2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRjaEluKAotICAgIEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCB3
YXNGb3VuZCwKLSAgICBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKK3ZvaWQgcmVwYXRjaEluQnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBiYXNlT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91
bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAg
ICBpZiAodHJ5Q2FjaGVJbihleGVjLCBiYXNlLCBpZGVudCwgd2FzRm91bmQsIHNsb3QsIHN0dWJJ
bmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
ZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJh
dGlvbkluKTsKKworICAgIGlmICh0cnlDYWNoZUluQnlJRChleGVjLCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkgewor
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5SWQpOworICAgIH0KIH0KIAogc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKQEAgLTEyMzYsOSArMTI1NCwxMCBAQCBz
dGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1w
KCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKIH0KIAotdm9pZCByZXNldElu
KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICByZXNldFBh
dGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKIH0KIAogdm9pZCByZXNldEluc3RhbmNl
T2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaAppbmRleCBhYTMyYzI2ZTFiMjI4NGNlMzViZDdlYWI3MGZjNzMzMmM3Yjk2ZmQwLi4wZjM2
NmRkZDhjZWIzNjAyY2VmYjEwMTFkNjAwYzdlZjQ4ZDJhMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIGJ1aWxkR2V0QnlJRExpc3QoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdAog
dm9pZCBidWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwogdm9pZCBidWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIFB1dEtpbmQpOwotdm9pZCByZXBhdGNoSW4oRXhlY1N0YXRlKiwgSlNDZWxs
KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hJbkJ5SUQoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoRXhlY1N0
YXRlKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZv
JiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdEZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0lu
Zm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpA
QCAtNTQsNyArNTQsNyBAQCB2b2lkIGxpbmtWaXJ0dWFsRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5r
SW5mbyYpOwogdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5m
byYsIENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRHZXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgR2V0QnlJREtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbihTdHJ1Y3R1cmVTdHViSW5mbyYpOwor
dm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBy
ZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4s
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggMmJjOWZlYmZlYzM4NTc4MjY3YzA2MGM5ZjYzOGNiMTE4NTU4MWNkYS4uNzY0ODcwNTlj
ZDc2NGMwYTdmY2U0YWE3ZTEwNmQ3ZmZjZWY3YjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTUwNywxMCArMTUw
NywxNiBAQCBfbGxpbnRfb3BfaXNfZnVuY3Rpb246CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X2lzX2Z1bmN0aW9uX2xlbmd0aCkKIAogCi1fbGxpbnRfb3BfaW46CitfbGxpbnRfb3BfaW5fYnlf
aWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2lu
KQotICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pbl9sZW5ndGgpCisgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfaW5fYnlfaWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2luX2J5X2lk
X2xlbmd0aCkKKworCitfbGxpbnRfb3BfaW5fYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbl9ieV92YWwpCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2luX2J5X3ZhbF9sZW5ndGgpCiAKIAogX2xsaW50X29wX3RyeV9nZXRfYnlfaWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDYyNjk4OWQ1MjZmYWViMDJhODViMjBlOTVkNmRjYjk2OGFiYjBhZDAu
LjNlZWE1NGQ2NDg2Njc5ZDBiNGUwMzRkMjM0N2UwNjAyZmY3NGJkYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xNTUyLDYgKzE1NTIsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bf
cHV0X2J5X2lkX2xlbmd0aCkKIAorCiBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0
Y2gpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHNjcmF0Y2gpCiAgICAgc3RvcmVxIHJl
c3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZTZmMDNiNjViNzVkMDAyNTJmMDQzZWM5OTMxZmJi
YTUwNGI5M2NkZS4uNWQ3N2RiMTliNzYyZWY3ODQxNDY4OGVkYzcxYzg5ZjlmN2Y2ZGZmOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAg
LTYyMyw3ICs2MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgSW5O
b2RlOjpJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHBy
Miwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIG9wX2luX2J5X3ZhbCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4NGRkM2QyYTQ1MTZhMTg4ZjBmOThhMDFk
NTAxMDA0Y2RjNzI1NjYzLi4yNTNkYjVlNGFhYzYxMTRlMzA2ZjlkNGYyMDk0YTRiN2MzZjFhNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTY0OCwxMCArNjQ4LDIxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19m
dW5jdGlvbikKICAgICBSRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoT1BfQygyKS5q
c1ZhbHVlKCkpKSk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbikKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBSRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwg
T1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUuYXJyYXlQcm9maWxlKSkpOworICAgIFJFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZXhlYywgT1BfQygyKS5qc1ZhbHVl
KCksIE9QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51LmFycmF5UHJvZmlsZSkpKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQoreworICAgIEJFR0lOKCk7CisKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIGlmICghYmFzZVZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9y
KGV4ZWMsIGJhc2VWYWx1ZSkpOworCisgICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNl
VmFsdWUpLT5oYXNQcm9wZXJ0eShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggZGIxZWVhOTVkNDhjM2U0OGE5NWZmODZjNmNmYmNhNDU3OWI0MjViYS4uMjdjMzk3
MjM5ZjAyNmQ2NTZmYjEyYTQ3NzAzZTM0NzI5NWEwMGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTg1LDcgKzg1LDcgQEAgQUxX
QVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZAogICAgIHJldHVybiBwYWRkaW5nOwogfQogCi1pbmxpbmUgYm9v
bCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1l
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCitpbmxpbmUgYm9vbCBvcElu
QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUs
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTMwNiw3ICszMDYsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9pbik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFsKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3N0cmNhdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3By
aW1pdGl2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340777</attachid>
            <date>2018-05-19 09:38:33 -0700</date>
            <delta_ts>2018-05-19 10:11:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185682-20180520013832.patch</filename>
            <type>text/plain</type>
            <size>94525</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi5lMGIyYjZiMDY1MWM5YzA2
NzQ0NzlmZGY0MTk2MjBiZjk4ZDkxYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTgtMDUtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50IG91ciBvcF9pbiBJQyBpcyBhZGhvYzogSXQgaXMgb25seSBlbWl0dGVkIGluIERGRyBhbmQg
RlRMIGxheWVycywKKyAgICAgICAgd2hlbiB3ZSBmb3VuZCB0aGF0IERGRzo6SW4ncyBwYXJhbWV0
ZXIgaXMgY29uc3RhbnQgc3RyaW5nLiBXZSBzaG91bGQKKyAgICAgICAgYWxpZ24gdGhpcyBJQyB0
byB0aGUgb3RoZXIgQnlJZCBJQ3MgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSBhZGhvYyBjb2RlCisg
ICAgICAgIGluIERGRyBhbmQgRlRMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIG91
ciAiSW4iIElDIGJ5IGFsaWduaW5nIGl0IHRvIHRoZSBvdGhlciBCeUlkIElDcy4KKyAgICAgICAg
V2Ugc3BsaXQgb3BfaW4gYnl0ZWNvZGUgdG8gb3BfaW5fYnlfaWQgYW5kIG9wX2luX2J5X3ZhbC4g
b3BfaW5fYnlfdmFsCisgICAgICAgIGlzIHRoZSBzYW1lIHRvIHRoZSBvcmlnaW5hbCBvcF9pbi4g
Rm9yIG9wX2luX2J5X2lkLCB3ZSB1c2UgSklUSW5CeUlkR2VuZXJhdG9yCisgICAgICAgIHRvIGVt
aXQgSW5CeUlkIElDIGNvZGUuIEluIGFkZGl0aW9uLCBvdXIgSklUSW5CeUlkR2VuZXJhdG9yIGFu
ZCBvcF9pbl9ieV9pZAorICAgICAgICBoYXMgYSBpbmxpbmUgYWNjZXNzIGNhY2hlIGZvciBvd24g
cHJvcGVydHkgY2FzZSwgd2hpY2ggaXMgdGhlIHNhbWUgdG8KKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvci4KKworICAgICAgICBBbmQgd2Ugc3BsaXQgREZHOjpJbiB0byBERkc6OkluQnlJZCBh
bmQgREZHOjpJbkJ5VmFsLiBJbkJ5VmFsIGlzIHRoZSBzYW1lCisgICAgICAgIHRvIHRoZSBvcmln
aW5hbCBJbiBERkcgbm9kZS4gREZHIEFJIGF0dGVtcHRzIHRvIGxvd2VyIEluQnlWYWwgdG8gSW5C
eUlkCisgICAgICAgIGlmIEFJIGZpZ3VyZWQgb3V0IHRoYXQgdGhlIHByb3BlcnR5IG5hbWUgaXMg
YSBjb25zdGFudCBzdHJpbmcuIEFuZCBpbgorICAgICAgICBJbkJ5SWQgbm9kZSwgd2UgdXNlIEpJ
VEluQnlJZEdlbmVyYXRvciBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIERG
RyBhbmQgRlRMJ3MgYWRob2MgSW4gSUMgY29kZS4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQg
cGF0Y2gsIHdlIHNob3VsZCBpbnRyb2R1Y2UgSW5CeUlkU3RhdHVzIHRvIG9wdGltaXplCisgICAg
ICAgIEluQnlJZCBpbiBERkcgYW5kIEZUTC4gV2Ugd291bGQgbGlrZSB0byBoYXZlIGEgbmV3IElu
QnlJZFN0YXR1cyBpbnN0ZWFkIG9mCisgICAgICAgIHJldXNpbmcgR2V0QnlJZFN0YXR1cyBzaW5j
ZSBHZXRCeUlkU3RhdHVzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkLCBhbmQKKyAgICAgICAgQWNj
ZXNzQ2FzZTo6VHlwZXMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZW0gKEFjY2Vzc0Nhc2U6OkluSGl0
IC8gSW5NaXNzKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdElu
QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cGF0Y2hhYmxlSnVt
cCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5S
ZWNvcmQ6OkluUmVjb3JkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YWRkSW4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4p
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6SklUKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGlu
ayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlk
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5f
YnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAg
ICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpyZXBhdGNoSW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpy
ZXNldEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6
b3BJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluKTogRGVsZXRl
ZC4KKwogMjAxOC0wNS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGUzMjM5YTE1ZTQ1MzNjODdjMjIyOTFjMjYy
NmExNjhhMTdiMzczZDEuLjNlNzcyYmM5MDY5Y2E4ODM4NTA0NjgwYzhjMDNmOTI2Y2Q1ODFjMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTExOCw2ICsxMTgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFj
ZToKICAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIFJlcGxhY2Us
IHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCkpOwogCisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJbkhpdCwgc3R1Yklu
Zm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC01NTUsMTAgKzU1OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3Vh
cmQoCiAgICAgICAgIGppdC5tb3ZlKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9vcCgmaml0KTsKLSAgICAgICAgZmFpbEFuZElnbm9y
ZSA9IGppdC5icmFuY2g4KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpFcXVhbCwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihQcm94
eU9iamVjdFR5cGUpKTsKKyAgICAgICAgZmFpbEFuZElnbm9yZSA9IGppdC5icmFuY2hJZlR5cGUo
dmFsdWVHUFIsIFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIAogICAgICAgICBqaXQuZW1pdExv
YWRTdHJ1Y3R1cmUodm0sIHZhbHVlR1BSLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUik7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFiZTlhOGEyODJlZGY0ZTc4YTQ2MzgzMGYzNTBiNzZmOThk
MGY1MGYuLjNmOWM1OWU2YjZkYzgxNTljNDhkNTE1N2ExNDUxNWFhODk3ZmI2NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAt
NTUxLDYgKzU1MSw1OSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlk
Q2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aQogI2VuZGlmCiB9CiAKK3Rl
bXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5C
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYgbWFwKQoreworICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rp
b25zQmVnaW4oKSArIGxvY2F0aW9uOworCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisKKyAgICBVTlVTRURfUEFSQU0o
aWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRhaW4gcGxhdGZv
cm0gY29uZmlndXJhdGlvbnMuCisKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOworICAgICAgICBpZiAo
c3R1YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdD
KSIpOworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisKKyAgICAgICAgU3RydWN0dXJl
KiBiYXNlU3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIHN0
dWIgPSBudWxscHRyOworCisgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKSB7Cisg
ICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgorICAgICAgICAgICAgb3V0LnByaW50
Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNl
bGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0dWIiKTsK
KyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICAgICAgb3V0LnByaW50Zigi
dW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGJh
c2VTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHViKQorICAg
ICAgICAgICAgb3V0LnByaW50KCIsICIsICpzdHViKTsKKworICAgICAgICBvdXQucHJpbnRmKCIp
Iik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob3V0KTsKKyAgICBVTlVTRURfUEFS
QU0obWFwKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrPgogdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKQpAQCAtMTAxMiw4
ICsxMDY1LDE3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6CiAgICAgICAgIHByaW50VW5hcnlP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIG9wX2luOiB7Ci0gICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlv
biwgaXQsICJpbiIpOworICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAgICAgICAg
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKKyAgICAgICAgcHJpbnRC
aW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X3ZhbCIpOwogICAgICAgICBkdW1wQXJy
YXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmgKaW5kZXggN2NkMDhjOTUyMTdkNGZjNWFiYjdjMzQ3ODY2MWY5NmY3ODY2Mzg4MC4uNWU4
OTQzZWYxM2UyNmEyZmRlYmVjZmU5YWFlNGFjZGQ1ODQxMzY0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTcxLDYgKzcxLDcgQEAg
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgewogICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KTsKICAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwg
Y29uc3QgU3R1YkluZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFBy
aW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2
b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCBTdHViSW5mb01hcCYpOwogICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNo
ZXMsIERvbnREdW1wQ2FjaGVzIH07CiAgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9w
LCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4
IDU2MjhkZjViNDYyMTYzZWIyOTYzMjFmZTg1OGQwM2I2ZDlmNzZlNTUuLjE2ZjFmYjYwYzNkNjQw
YmRhYzliZmEyN2I2Yzc1M2Y2N2ZmYmRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTgwLDcgKzgwLDggQEAKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2lzX29iamVjdF9vcl9udWxsIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfY2VsbF93aXRoX3R5cGUiLCAibGVuZ3RoIiA6
IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luIiwgImxlbmd0aCIgOiA1IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luX2J5X2lkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIgOiA5IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIsICJsZW5n
dGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAppbmRleCA3MDFkMzZjZmFjNDUxYjNjODgyMzU2NjFhMTA1NzE3MjAzNTgwZGRmLi5k
YjUyMmFjMmU3MTFhNDliM2YyZDkyZGU4Y2EyOGJjZWI1MzFlMzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTg2LDYgKzE4Niw3
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBP
cGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6
CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfdHlwZW9mOgogICAgIGNh
c2Ugb3BfaXNfZW1wdHk6CiAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CkBAIC0yMjYsNyArMjI3
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2VudW1lcmF0b3Jfc3Ry
dWN0dXJlX3BuYW1lOgogICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lOgogICAg
IGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKLSAgICBjYXNlIG9wX2luOgorICAgIGNhc2Ugb3BfaW5fYnlf
dmFsOgogICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2lu
c3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9hZGQ6CkBAIC00NTQsNyArNDU1LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ug
b3BfaXNfY2VsbF93aXRoX3R5cGU6CiAgICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKLSAgICBjYXNl
IG9wX2luOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6CisgICAgY2FzZSBvcF9pbl9ieV92YWw6CiAg
ICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgY2FzZSBvcF90b19zdHJpbmc6CiAgICAgY2FzZSBv
cF90b19vYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDhmMWE0YmQ5MGUzY2FiMGI1YjAyY2ZiZjg2MTFhZGUyNTc5MzM0NDEuLmNjZTBi
NmEwMDY5ZjQyYjU4ZTE5ZDhlOTk1MmZiMWMzYjQ4NzA1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODksNyArNTg5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgY2FzZSBvcF9pbjoKKyAgICAgICAgY2FzZSBvcF9pbl9ieV92YWw6CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X3ZhbDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDogewogICAg
ICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3Bw
CmluZGV4IDkxMzBiMWUyNWQ0NGU2NjM1ODE3ZWE3OGE0ODNlZjhjYWQ2Nzk3OTAuLmYzNTFmODJi
ZWUwYTRkNzk0ZGE5MGM1Yjg2YmM2ZGJhNTljMzcxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yNzYsNiArMjc2LDI1IEBAIGJv
b2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgSlNBcnJheSogYXJyCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAK
K2Jvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIENDYWxsSGVscGVycyBq
aXQ7CisKKyAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0
Y2guYmFzZUdQUik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1ZVJlZ3Mo
KTsKKworICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlLT5pZCgpKSkpOworICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZCh0cnVlLCB2YWx1ZS5wYXls
b2FkR1BSKCkpOworCisgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxpbmUo
ImluIGFjY2VzcyIsIGppdCwgc3R1YkluZm8sIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikg
eworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoYnJhbmNoVG9TbG93UGF0aCwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKCkpOworICAgIH0pOworICAgIHJldHVybiBsaW5rZWRDb2RlSW5s
aW5lOworfQorCiB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB0YXJnZXQpCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCA5OTQ4YjNiNmY4NWU5MzYzMTRjYjE5
NzBjM2FjNDQzN2FiOGU2OGJhLi5hNGQwMzM1ZjhhYjA2NjA3ZGFhMTFiZjFiZjE2YjBlNTliN2Yy
MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5o
CkBAIC0xMTYsNiArMTE2LDcgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9v
bCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwog
ICAgIHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBK
U0FycmF5Kik7CiAgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHVi
SW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3Rh
dGljIGJvb2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBTdHJ1Y3R1
cmUqKTsKIAogICAgIC8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBzaXpl
IG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEgbmV3
IHR5cGUgb2YgSUMsIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDU4MTlhYWE5YWY0NjU3MDRkZTFi
NGFkODE2OWQ5YTM2N2NjNTZiNC4uMDQyMThkYjA0N2QwOWNlZDU1YmQzNzI3NzVhNDdjNTQxNjdm
OTljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCkBAIC04MSw2ICs4MSwxNSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
Ojppbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogYmFz
ZQogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCit2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0SW5CeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBi
YXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2FjaGVU
eXBlID0gQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOworCisgICAgdS5ieUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLnNldCgKKyAgICAgICAgKmNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0U3RydWN0dXJlKTsKKyAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKK30KKwog
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogewogICAgIHN3aXRjaCAoY2FjaGVUeXBl
KSB7CkBAIC05MCw2ICs5OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAg
ICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAgICBjYXNlIENhY2hlVHlw
ZTo6SW5CeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMDYsNiArMTE2LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5m
bzo6YWJvdXRUb0RpZSgpCiAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2Fj
aGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6
CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFy
cmF5TGVuZ3RoOgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjM2LDcgKzI0Nyw3IEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAg
ICByZXNldFB1dEJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6SW46Ci0gICAgICAgIHJlc2V0SW4oKnRoaXMpOworICAgICAgICByZXNl
dEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwpAQCAt
MjU5LDYgKzI3MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW5j
ZXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3dpdGNoIChjYWNoZVR5cGUpIHsKICAgICBj
YXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRS
ZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgogICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CkBAIC0yODIsNiArMjk0LDcgQEAgYm9vbCBT
dHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2Vs
ZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNoZVR5
cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIHJldHVybiB1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOgog
ICAgICAgICByZXR1cm4gdS5zdHViLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgK
aW5kZXggMTRmZWQ5NGVhMWRmNmNjNDg0MTcxYzc5ZjA5ODkwOWMyY2ZkM2YxMS4uZWZlNjE5YjQ0
OTUxZmI4ZjYyN2RkYjk1MWY1YWU4NTIwNjIxMjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU4LDYgKzU4LDcgQEAg
ZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewogICAgIFVuc2V0LAogICAgIEdldEJ5SWRT
ZWxmLAogICAgIFB1dEJ5SWRSZXBsYWNlLAorICAgIEluQnlJZFNlbGYsCiAgICAgU3R1YiwKICAg
ICBBcnJheUxlbmd0aAogfTsKQEAgLTcyLDYgKzczLDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm8gewogICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFz
ZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgaW5pdEFycmF5TGVu
Z3RoKCk7CiAgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiwgU3RydWN0dXJl
KiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CisgICAgdm9pZCBpbml0SW5C
eUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0KTsKIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBjb25zdCBJZGVudGlm
aWVyJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKIApAQCAtMTc0LDcgKzE3Niw3IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBTdHJ1Y3R1cmVTZXQgYnVmZmVyZWRTdHJ1
Y3R1cmVzOwogICAgIAogICAgIHN0cnVjdCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0YXJ0IG9m
IHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcywgb3IgdGhlIGxvY2F0aW9uIG9mIHBhdGNo
YWJsZSBqdW1wIGZvciAnaW4nIGFuZCAnaW5zdGFuY2VvZicgY2FjaGVzLgorICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8vIFRoaXMgaXMgZWl0
aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNoZXMuIG9yIHRoZSBs
b2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNhY2hlcy4KICAgICAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKICAgICAgICAgdWludDMyX3QgaW5saW5lU2l6
ZTsKICAgICAgICAgaW50MzJfdCBkZWx0YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb247
CkBAIC0xOTUsNyArMTk3LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb24o
KSB7IHJldHVybiBwYXRjaC5zdGFydC5sYWJlbEF0T2Zmc2V0KHBhdGNoLmRlbHRhRnJvbVN0YXJ0
VG9TbG93UGF0aFN0YXJ0KTsgfQogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gcGF0Y2hhYmxlSnVtcCgpCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6SW4gfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsK
KyAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFuY2VPZik7CiAg
ICAgICAgIHJldHVybiBwYXRjaC5zdGFydC5qdW1wQXRPZmZzZXQ8SlNJbnRlcm5hbFB0clRhZz4o
MCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDZkNjQ0OWIzMGUyNzhjM2VmYWU3MDgy
ZWU5ZTcwMDVlZmQwYjU5YjYuLmUxOTllOGYxYjQxYzEzNTUzNjZkYzQ4ODRkNTNkNmUzMzMzMTA1
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjY3LDEwICsyNjY3LDEwIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFuY2VPZkN1c3RvbShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiBiYXNlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5
VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJh
c2UpCiB7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQ
cm9maWxlKCk7Ci0gICAgZW1pdE9wY29kZShvcF9pbik7CisgICAgZW1pdE9wY29kZShvcF9pbl9i
eV92YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocHJvcGVydHktPmluZGV4KCkpOwpAQCAtMjY3OCw2ICsyNjc4LDE1IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2luX2J5
X2lkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0cnlHZXRCeUlkLiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IGI3MjU1YWM2MjE2ZTA5ZGNlMWFkNGQ3YzY2OWVjNTQ2YTJjYjQ2NzMuLjk3ODI4Y2E1MGVmYThi
NjUyZGRmZjZlNDgyOTkzMDgxZGE1ZWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY5NCw3ICs2OTQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2Yo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3Rv
dHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdp
c3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVP
ZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Ao
b3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5CeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElu
QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHJ5R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMDdhOWM5
MDdhN2UyMTMwYTQyNDRkZmEwMDExZjdjYTUyYjA2ZThhNi4uYTVmYTUyNWQyMTYwMjFiMDBkOTU1
YWQ5ZGU2M2MxMWYzMzZhNThkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjI4MCwxMCArMjI4MCwxNiBAQCBSZWdp
c3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySQogCiBSZWdpc3RlcklEKiBJbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgaWYg
KGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX2V4cHIxKSkgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbkJ5SWQoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBiYXNlLmdldCgpKSwgYmFzZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3Ry
aW5nTm9kZSo+KG1fZXhwcjEpLT52YWx1ZSgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4ga2V5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbihnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7CisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0SW5CeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IDliZDhhNTMzYjFjZTFkNjRjOTMyMzMzOWM4MGYxNDc1ODc5ZjQ0YzkuLjlkYTVm
NDFjOGRiOWQxZjEyY2YzYTNhMzExMzQ0NzcxYjA3MDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTMyNTksMTAgKzMyNTksMzAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIEluOiB7
CisgICAgY2FzZSBJbkJ5SWQ6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUg
d2hlbiB0aGUgcHJvcGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKICAg
ICAgICAgLy8gdmFsdWUgaW5mb3JtYXRpb24uCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QpOworICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIEluQnlWYWw6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgcHJvcGVydHkg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgY29uc3RhbnQg
PSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNTdHJpbmco
KSkgeworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhjb25zdGFu
dCk7CisgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5
R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAgICAgaWYgKGltcGwgJiYgaW1wbC0+aXNBdG9t
aWMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
ZGV0ZXJtaW5lIHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFi
c3RyYWN0CisgICAgICAgIC8vIHZhbHVlIGluZm9ybWF0aW9uLgorICAgICAgICBjbG9iYmVyV29y
bGQoKTsKKyAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0KTsKICAgICAg
ICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAzODc0ZmNjNWIzNmRkOTQyNzVhYjI1MzI2OTU1MGMxMzIzOTRlM2Q1Li5l
MGU3YjQzMTE2YTJjMmY3OGRkNDU5Yzc3MjAzYWQ3ZjBlYzJiN2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjA3LDYgKzIwNyw4
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAg
ICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCk7CisgICAgdm9pZCBo
YW5kbGVJbkJ5SWQoCisgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIE5vZGUqIGJhc2Us
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSk7CiAg
ICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBlbWl0IGEgY2hlY2sg
Zm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAgIC8vIGNvbmRpdGlv
biBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJsZSBjaGVjayBjYW4g
YmUgZW1pdHRlZC4KQEAgLTQzMTEsNiArNDMxMywxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bkJ5SWQoaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQoreworICAgIFVOVVNFRF9QQVJB
TShpbnN0cnVjdGlvblNpemUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25P
cGVyYW5kKSwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgIGJh
c2UpKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7
CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAgLTYzNjMsMTEgKzYzNzEsMjAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX3RvX29iamVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2luOiB7Ci0g
ICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2luKSAtIDFdLnUuYXJyYXlQcm9maWxlKTsKKyAgICAg
ICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfaW5fYnlf
dmFsKSAtIDFdLnUuYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChJbiwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSkpOwotICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfaW4pOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW5CeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfdmFs
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IE9QQ09ERV9MRU5H
VEgob3BfaW5fYnlfaWQpOworICAgICAgICAgICAgaGFuZGxlSW5CeUlkKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIG9wY29kZUxlbmd0aCk7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV9pZCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXgg
NWNlZTY1YjY4NDNlY2E1MDg4ZWQxYTlhOTEwOTRmMzQwNTdhYWE0NC4uZGFkYzkyZDg2N2U0YzQ0
YTM0NjJkOGQ2ZGFiNjQ1ODA3NWFjZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM2LDcgKzIzNiw4IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjCiAgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAgY2FzZSBvcF9pbjoKKyAgICBjYXNlIG9w
X2luX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3Bl
OgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJs
ZV9sZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGFkNjIzNjQ3YTc3MDQwYzBkM2I4MjZjZGMxYTM3MGMxYTIzYjliZGMuLjU1MmVkZWZhZTUyYjg5
ODk5ODA2MTg3ZWE5MWQyNzE3NWRmYzY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC02MTksNyArNjE5LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJk
VmFyYXJnczoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgotICAgIGNhc2UgSW46CisgICAgY2FzZSBJ
bkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAg
Y2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
NzM3NDE4NTY2N2UwYmRiNzg3YTgzYjcwMmNiMTg5NTliNTA2OWQwMS4uYjdlZGMwNjBmNDM2Mjkz
YWNhNDk4ODgzM2VhOTQ2MjBjNTcyY2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTYxNiw2ICs2MTYsMjMg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEluQnlWYWw6
IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBwcm9wZXJ0eSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgY29uc3Rh
bnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0gYXNTdHJpbmcoY29uc3RhbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0b21pYygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KHN0YXRpY19jYXN0
PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JbkJ5SWQoaWRlbnRpZmllck51bWJlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKICAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNG
dWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNC
aWdJbnQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA5NzRkOTcxMzY2ZmZkOGI3OTc4NmZiYjI2ZGVkM2FjMjVi
Njg3ZmRhLi40MTYyMTBhOTBjZWZiMGQ4M2Q5MGIxNTQ5YTFmZWMwMjdjZDk1ZTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTMsNyArMTkzLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yOgogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6Ci0gICAgY2FzZSBJbjoKKyAgICBj
YXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToK
ICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAwMTAxZDM3OWJjZDZmNzQ1ZTcyYTg4ZWMyMTlm
YmNmMzI5ZTM4YTliLi45YTFkYzEzNmQwMTZlZGFhMmFmMGEzNjBlZWQ3YmYzZTIwNjczYWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE0Njks
NyArMTQ2OSwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBJbjogeworICAgICAgICBjYXNlIEluQnlJZDogeworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5CeVZhbDogewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAg
Y29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA1
ZTVhN2E4NzUyNDQyNDFiNTI2YTlmMjRiNGZmNDBjZTk4ODViZjYxLi41ZmQ1MGI4YzdmMDFlZTM2
ZTFiMjczYWFjMjNhMGM4NjIyNzgzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjY1LDI2ICsyNjUsOSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9nZXRCeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRC
eUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1
dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxp
bmtCdWZmZXIpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gKm1faW5zW2ldLm1fc3R1
YkluZm87Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2lu
c1tpXS5tX2p1bXApOwotICAgICAgICBpbmZvLnBhdGNoLnN0YXJ0ID0gc3RhcnQ7Ci0KLSAgICAg
ICAgcHRyZGlmZl90IGlubGluZVNpemUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihtX2luc1tpXS5tX2RvbmUpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5saW5lU2l6ZSA+PSAwKTsKLSAgICAgICAgaW5mby5wYXRjaC5pbmxpbmVTaXplID0gaW5saW5l
U2l6ZTsKLQotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxM
b2NhdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAg
ICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1f
aW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSkpOwotCi0gICAgICAgIGluZm8ucGF0
Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJl
bCgpKSk7Ci0gICAgfQotICAgIAogICAgIGF1dG8gbGlua0NhbGxUaHVuayA9IEZ1bmN0aW9uUHRy
PE5vUHRyVGFnPih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMp
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDA1MGViN2MxNmY2ZGI5MDQ0
ODliZDJiNzg2Y2QzZmQxZjAyOTQ1OWUuLmMxN2IwMzIxMTQ4OGJmODU5YmU1NTUwNGUyZWFiMGFk
ZmE0MzQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTc2LDIzICs3Niw2IEBAIHN0cnVjdCBDYWxsTGlua1JlY29yZCB7CiAgICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX2Z1bmN0aW9uOwogfTsKIAotc3RydWN0IEluUmVjb3JkIHsK
LSAgICBJblJlY29yZCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAgIFNsb3dQYXRoR2VuZXJhdG9y
KiBzbG93UGF0aEdlbmVyYXRvciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQotICAgICAg
ICA6IG1fanVtcChqdW1wKQotICAgICAgICAsIG1fZG9uZShkb25lKQotICAgICAgICAsIG1fc2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5lcmF0b3IpCi0gICAgICAgICwgbV9zdHViSW5mbyhz
dHViSW5mbykKLSAgICB7Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fanVtcDsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwotICAgIFNs
b3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQYXRoR2VuZXJhdG9yOwotICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBtX3N0dWJJbmZvOwotfTsKLQogLy8gPT09IEpJVENvbXBpbGVyID09PQogLy8KIC8vIERG
Rzo6SklUQ29tcGlsZXIgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgSklUIGNvZGUgZnJv
bSB0aGUgZGF0YWZsb3cgZ3JhcGguCkBAIC0yMDksMTEgKzE5MiwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVu
ZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkSW4oY29uc3QgSW5SZWNvcmQmIHJlY29yZCkKKyAg
ICB2b2lkIGFkZEluQnlJZChjb25zdCBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgbV9pbnMuYXBwZW5kKHJlY29yZCk7
CisgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWRkSlND
YWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0No
ZWNrLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5k
KEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pKTsK
QEAgLTM1OSw4ICszNDIsOCBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBl
cnMgewogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZEdlbmVyYXRvcj4s
IDQ+IG1fZ2V0QnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5C
eUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwotICAgIFZlY3RvcjxJblJlY29yZCwgND4gbV9pbnM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVj
dENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RUYWls
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggNGQ5N2NkM2FiMTI3ZDMwYmJmNDZhYzczOWVkYmYxYmVhODVjMTMwZC4u
ZjZlMTBlYjNkYjMyMmFjZDBjM2FjNDU1NWI5ZDVjYjRlZGE5ODgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc0Myw2ICs3NDMsMTUgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBzZXRPcChTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgpOwogICAgICAgICBtX29wSW5mbyA9
IGZhbHNlOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvSW5CeUlkKHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBJbkJ5VmFsKTsKKyAg
ICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSW5CeUlkKTsKKyAgICAgICAgY2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2UoKSk7CisgICAgICAgIG1fb3BJbmZvID0gaWRlbnRpZmllck51bWJlcjsKKyAg
ICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KICAgICAKICAgICBKU1Zh
bHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTAxMCw2ICsxMDE5LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIEluQnlJZDoK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6
CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKQEAg
LTE5NjcsNyArMTk3Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5
VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggZmVlYzI1ZTU3YzNiYmRkYTQ5YTA5MTFjYWE4MTg4N2U3ZWM0MGIx
ZS4uNGZiYTkwZGE3NTdkODZlMTYxNmRhMzUyMjYwZjhlYmMzNzNkZmE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzY5LDcgKzM2OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N0cmluZ09iamVj
dCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAot
ICAgIG1hY3JvKEluLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhJbkJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhJbkJ5SWQsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFByb2ZpbGVUeXBlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHJvZmlsZUNvbnRyb2xGbG93LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU2V0RnVu
Y3Rpb25OYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IDRiY2IwMmM2MDg1Y2ExMDA2ODVmM2Y1OTE3ZjM4NTVmMWExY2I0MzEuLjIyODY0M2IyMDdhMzE1
ODc0NjZmMmYwNzMwMGZhMzAxNWI5ODc5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05
ODAsNyArOTgwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5VmFs
OgorICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0Jv
b2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZjE4M2FlOTQ5ZTQ0NTdlNmIzOTRiNjFkOGU0ZjQ3
ZjMyNmQ0OWU5Yy4uODJlZWQ2YTY4ZGFkOGM1M2MxZjdiNjFkMzhkNGQyYTNjODdjYjY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTMzMiw3
ICszMzIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6
CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKLSAgICBjYXNl
IEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093
blByb3BlcnR5OgogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDNmOTM0ZTNiMTFkODFjOGZiYmIyMjFiNzY3ZTAxYTM0MDQ1MmMxY2EuLmYyYjlk
NjY5ODkwNWYxOGVlMmM0ZmQ1ZDk0OThlNDNkZmEyMjY4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDU2LDY3ICsxMDU2LDUy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlLCBQYXlsb2FkV29yZCk7CisKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0gICAgCi0gICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1p
Y0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCptX2ppdC52bSgpKSkgewotICAgICAgICBpZiAoc3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0
b21pYygpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oQWNjZXNzVHlwZTo6SW4pOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCA9IG1faml0LnBhdGNoYWJsZUp1bXAoKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBkb25lID0gbV9qaXQubGFiZWwoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
U2luY2UgdGhpcyBibG9jayBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIHJlc3VsdCBvZiBzdHJp
bmctPnRyeUdldFZhbHVlSW1wbCgpIGlzIGF0b21pYywKLSAgICAgICAgICAgIC8vIHdlIGNhbiBj
YXN0IGl0IHRvIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHNhZmVseS4KLSAgICAgICAgICAgIGF1
dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAganVtcC5tX2p1bXAs
IHRoaXMsIG9wZXJhdGlvbkluT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0dWJJbmZvLCBiYXNlR1BSLAotICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0dWJJbmZvLT5jYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAg
ICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJh
c2VHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihyZXN1bHRHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNH
UFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmJhc2VUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpOwotI2VuZGlmCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJl
Z2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgICAg
ICBtX2ppdC5hZGRJbihJblJlY29yZChqdW1wLCBkb25lLCBzbG93UGF0aC5nZXQoKSwgc3R1Yklu
Zm8pKTsKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgcmVzdWx0UmVncyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAg
ICAgICAgICBiYXNlLnVzZSgpOworICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisg
ICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUs
CisgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKKyAgICAgICAgcmVzdWx0UmVncywgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAKLSAgICAgICAgICAgIGJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX2ppdC5h
ZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShzbG93UGF0aCkpOwogCisgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVn
cy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyByZWdzID0ga2V5LmpzVmFsdWVSZWdz
KCk7Ci0gICAgICAgIAotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICAKKwogICAgIGJhc2Uu
dXNlKCk7CiAgICAga2V5LnVzZSgpOwotICAgICAgICAKKwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgb3BlcmF0aW9uR2VuZXJpY0luLCBleHRyYWN0
UmVzdWx0KEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZXN1bHRHUFIpKSwKLSAgICAgICAgYmFz
ZUdQUiwgcmVncyk7CisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5VmFsLCByZXN1bHRSZWdzLCBiYXNlR1BSLCByZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5SWQoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCAwYjc5MTJkY2NjMjVjMzRjZWM1ZWRhNDc0MjVlOTY0NGY1YmFmNzc3
Li40NjE3NGM5NGE0OWUzYzc4ZThhNTVhOGI4M2JiYjA0MjhiYWUzMzYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MzUsNyArNzM1LDgg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1c2hXaXRoU2NvcGUo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5SWQoTm9kZSosIEFjY2Vzc1R5cGUpOwogICAg
IHZvaWQgY29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBj
b21waWxlSW4oTm9kZSopOworICAgIHZvaWQgY29tcGlsZUluQnlJZChOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlSW5CeVZhbChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5v
blBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQpOwogICAgIHZvaWQg
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQs
IE5vZGUqIGJyYW5jaE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOWYxMzFkOTE0YjFlNTAwMmI1NDY2YzE3
NGE3ODc4ZTZhNjc1MzRlMi4uM2VmYjdiN2U0NTA4MWU2OGU1YWQ4YTBlNGM1YmRiMmE0MThhZDM2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0zNzUxLDggKzM3NTEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2V0RnVuY3Rpb25OYW1lKG5vZGUp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSW46Ci0gICAgICAgIGNvbXBpbGVJbihub2Rl
KTsKKyAgICBjYXNlIEluQnlJZDoKKyAgICAgICAgY29tcGlsZUluQnlJZChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEluQnlWYWw6CisgICAgICAgIGNvbXBpbGVJbkJ5VmFsKG5v
ZGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IGEyY2FhMDAzYWZiZDZmZmE3YmNkZTE4MmU0MGEyNzdmYzMyMjY0YWEuLjhkMzg2OTc3Y2E4M2Iy
NDY4OTg0OTExYTM2ZjJhOWE5MTQyNTg4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDMwMSw4ICs0MzAxLDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNl
dEZ1bmN0aW9uTmFtZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEluOgotICAg
ICAgICBjb21waWxlSW4obm9kZSk7CisgICAgY2FzZSBJbkJ5SWQ6CisgICAgICAgIGNvbXBpbGVJ
bkJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJbkJ5VmFsOgorICAgICAg
ICBjb21waWxlSW5CeVZhbChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhhc093
blByb3BlcnR5OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKaW5kZXggMDY4NjNkMGUyMmQ2NGU2YTFiMTMzNzNiYjEzYjBiNzQzYTVjYzJlZC4uNmI5
NTEzNDhlZDI0MmI0YmQwMjY3MzczN2ZjNWQ0YjE3Njk5NzY1NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjA1LDcgKzIwNSw4IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVGhy
b3c6CiAgICAgY2FzZSBUaHJvd1N0YXRpY0Vycm9yOgogICAgIGNhc2UgVW5yZWFjaGFibGU6Ci0g
ICAgY2FzZSBJbjoKKyAgICBjYXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2Fz
ZSBIYXNPd25Qcm9wZXJ0eToKICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgogICAgIGNhc2UgTWFw
SGFzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCAxMmM5MzM4NmFmYTVmZjMzYzgzYTdhNjA3NzUwMGIyYWJhM2I5MjY3Li5lNmRlY2ZhZWY5
NDNhNGFlZmVhZWZjYzJlOWY3ODBhYmVmOGQ3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03MDgsOCArNzA4LDExIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgICAgICAg
ICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0RGlyZWN0KTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEluOgotICAgICAgICAgICAgY29tcGlsZUluKCk7CisgICAgICAg
IGNhc2UgSW5CeUlkOgorICAgICAgICAgICAgY29tcGlsZUluQnlJZCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSW5CeVZhbDoKKyAgICAgICAgICAgIGNvbXBpbGVJbkJ5VmFs
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAg
ICAgICAgICAgIGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpOwpAQCAtOTY2OSw4NyArOTY3Miw3MCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2
NCwgcmVzdWx0cykpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbigpCisgICAgdm9p
ZCBjb21waWxlSW5CeVZhbCgpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkluQnlWYWwpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgIH0KIAorICAg
IHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2Rl
OwotICAgICAgICBFZGdlIGJhc2UgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgTFZhbHVlIGNl
bGwgPSBsb3dDZWxsKGJhc2UpOwotICAgICAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5vZGUt
PmNoaWxkMigpLT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4odm0oKSkpIHsKLSAgICAg
ICAgICAgIGlmIChzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpICYmIHN0cmluZy0+dHJ5R2V0VmFs
dWVJbXBsKCktPmlzQXRvbWljKCkpIHsKLSAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogc3RyID0gYml0d2lzZV9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4oc3RyaW5nLT50cnlHZXRW
YWx1ZUltcGwoKSk7Ci0gICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kU29tZVJlZ2lzdGVyKGNlbGwpOwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikpOwotICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAg
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKLQotICAgICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7Ci0KLSAgICAgICAgICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxT
dGF0ZTsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAg
ICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBW
YWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKworICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KKyAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CisgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1z
KS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCB1aWQsIEpTVmFsdWVSZWdz
KHBhcmFtc1sxXS5ncHIoKSksCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFt
c1swXS5ncHIoKSkpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQ
YXRoKGppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0
LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCisgICAgICAg
ICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
IAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFy
Z2V0IGZvciBvcGVyYXRpb24gY2FsbHMuIFdlIGRvbid0IG5lZWQgYSBKUyBleGNlcHRpb25IYW5k
bGUgYmVjYXVzZSB3ZSBkb24ndAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGUgUHJv
eHkgb2JqZWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bihwYXJhbXMpLT5qdW1wcyhqaXQpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5hZGRTdHViSW5mbyhBY2Nlc3NUeXBlOjpJbik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+Y29k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BSKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRp
Y19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC50aGlzR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0g
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6UGF0Y2hhYmxlSnVtcCBqdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5s
YWJlbCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
anVtcC5tX2p1bXAubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25Jbk9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBi
YXNlR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cikpLmNhbGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihqdW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guc3RhcnQgPSBzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdHJkaWZmX3QgaW5saW5lU2l6ZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KGRvbmUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmxp
bmVTaXplID49IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLT5wYXRjaC5pbmxpbmVTaXplID0gaW5saW5lU2l6ZTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0YUZyb21TdGFydFRv
U2xvd1BhdGhDYWxsTG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPE5vUHRyVGFnPihzbG93UGF0aENhbGwpKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5kZWx0
YUZyb21TdGFydFRvU2xvd1BhdGhTdGFydCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KHNsb3dQYXRoQmVnaW4pKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQ
YXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5r
QnVmZmVyLCBsaW5rQnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAg
IHNldEpTVmFsdWUocGF0Y2hwb2ludCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IAotCi0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwgbV9jYWxsRnJhbWUsIGNlbGwsIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBv
aW50KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IGMxYzJkNGU5NTdkZmVhZTcxMjAzOWM0NWNiZTdi
OTVjNjJhODI1YzAuLjY4NGU4MTNkYzRhNGE4M2M2NzUxMDMwZTBiYzdiNjZiOWJmMmExOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC01MCw5ICs1MCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzT3B0aW1pemUpIFwKLSAgICBtYWNybyhPcGVyYXRpb25Jbk9wdGltaXplKSBcCi0g
ICAgbWFjcm8oT3BlcmF0aW9uSW4pIFwKICAgICBtYWNybyhPcGVyYXRpb25HZW5lcmljSW4pIFwK
KyAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWQpIFwKKyAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWRH
ZW5lcmljKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpIFwKICAgICBtYWNy
byhPcGVyYXRpb25QdXRCeUlkU3RyaWN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpIFwKQEAg
LTY3LDcgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3ND
YXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAotICAgIG1hY3JvKFB1
dEJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3Jv
KEluQnlJZFNlbGZQYXRjaCkKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMTk5ZDgxYThhMzVhMzRiMzEyZWYzMTU2ZjJmZDhkMzQ2NDcz
N2RiZS4uZDlkYjA2MjlhNDM4YzEyOWQ1N2JmYTM4MzE2NjllYjhhZjE1Njk5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtNzgsMTEgKzc4LDYgQEAgSklUOjpKSVQoVk0qIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQp
CiAgICAgLCBtX2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKICAgICAsIG1fbGFiZWxzKGNv
ZGVCbG9jayA/IGNvZGVCbG9jay0+bnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSA6IDApCiAgICAgLCBt
X2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAg
ICAsIG1fZ2V0QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9nZXRCeUlkV2l0aFRoaXNJbmRl
eChVSU5UX01BWCkKLSAgICAsIG1fcHV0QnlJZEluZGV4KFVJTlRfTUFYKQotICAgICwgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXgoVUlOVF9NQVgpCi0gICAgLCBtX2NhbGxMaW5rSW5mb0luZGV4KFVJ
TlRfTUFYKQogICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoKnZtKQogICAgICwgbV9j
YW5CZU9wdGltaXplZChmYWxzZSkKICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGluZyhmYWxzZSkK
QEAgLTI3Nyw3ICsyNzIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZU9mZnNldDsKIAogICAg
ICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9TTE9XX09QKGluKQorICAg
ICAgICBERUZJTkVfU0xPV19PUChpbl9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxl
c3MpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NMT1df
T1AoZ3JlYXRlcikKQEAgLTM0MSw2ICszMzYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvdykKICAgICAgICAgREVGSU5FX09Q
KG9wX2JlbG93ZXEpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQorICAgICAg
ICBERUZJTkVfT1Aob3BfaW5fYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfdW5zZXQ6CkBAIC00NzgsNiArNDc0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRJbmRleCA9IDA7CiAgICAgbV9nZXRCeUlk
V2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOworICAgIG1faW5CeUlk
SW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01MjEsNiAr
NTE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkKKyAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQogICAgICAgICBjYXNlIG9wX2dl
dF9hcnJheV9sZW5ndGg6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgpAQCAtNjAwLDYgKzU5OCw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9nZXRC
eUlkSW5kZXggPT0gbV9nZXRCeUlkcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZ2V0
QnlJZFdpdGhUaGlzSW5kZXggPT0gbV9nZXRCeUlkc1dpdGhUaGlzLnNpemUoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9wdXRCeUlkSW5kZXggPT0gbV9wdXRCeUlkcy5zaXplKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKG1faW5CeUlkSW5kZXggPT0gbV9pbkJ5SWRzLnNpemUoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9pbnN0YW5jZU9mSW5kZXggPT0gbV9pbnN0YW5jZU9mcy5zaXplKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsQ29tcGlsYXRp
b25JbmZvLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtYmVyT2ZWYWx1ZVByb2ZpbGVz
ID09IG1fY29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CkBAIC04NDIsNiArODQx
LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNh
Y2hlcyhtX2dldEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKIAogICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNp
emUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMTU2ZjFiNTgxMjlmN2Y2Y2Y3NmYx
Mzk1YTUzYTlhOWQyMDhkYmZkNC4uYjk2YWEyMjQzM2FhYmRhNTBlYThkYTlmM2E5OTVkOTA0Yjc5
Nzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNiArNTAwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qKTsKQEAgLTYxMSw2ICs2MTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9h
cmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbShJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9qbGVzcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKQEAgLTg2NSw2ICs4NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVj
dG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVj
dG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRJ
bkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9u
SW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxh
dGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5mbzsKQEAgLTg3OCwxMiArODgxLDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjazsKICAgICAgICAgTGFiZWwgbV9leGNlcHRpb25IYW5kbGVyOwogCi0gICAg
ICAgIHVuc2lnbmVkIG1fZ2V0QnlJZEluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRX
aXRoVGhpc0luZGV4OwotICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleDsKLSAgICAgICAg
dW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0
cnVjdGlvbkluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4OworICAg
ICAgICB1bnNpZ25lZCBtX2dldEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2ln
bmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1faW5CeUlk
SW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7
IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsg
VUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIAogICAgICAgICBMYWJlbCBtX2FyaXR5Q2hlY2s7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDhm
MTdlOWU3YTM5ZGQ2YWQwODZjMDFhMzRlMmMxODA4NGI5MjNmMTQuLjJmOTY5NzczOWMwZjhlOWMx
MWFlMTk3ZjM0NDU0Zjg2OGQxYmE5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjYsNiArMTY2LDIxIEBA
IFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5j
dGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0K
IAorSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCisg
ICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKK3sKKyAgICAvLyBGSVhN
RTogV2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHku
CisgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFz
ZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOworfQorCit2b2lkIEpJVEluQnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIGdl
bmVyYXRlRmFzdENvbW1vbihqaXQsIElubGluZUFjY2Vzczo6c2l6ZUZvclByb3BlcnR5QWNjZXNz
KCkpOworfQorCiBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwKICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CmluZGV4IDA3YTA4Yzg1YzIzYzIyMzA1YzNhYTQ1Y2Y0NTM3YmQ5Yzc2NWI0MDQuLmI3NDdiODY4
OWFkOTM4NDRhYjc4NTE0NWMwODQzNWYzZDY4ZThkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE0Myw2ICsxNDMs
MTcgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9y
IHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2NsYXNzIEpJVEluQnlJZEdlbmVyYXRv
ciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBKSVRJbkJ5SWRHZW5l
cmF0b3IoKSB7IH0KKworICAgIEpJVEluQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYpOworfTsKKwogY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5zdGFu
Y2VPZkdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggYmYxNjc3ZTIyYzczZTI0NjQxY2JlOGUwZTM5ZTU1MDY0MDk3YmUxMS4u
NzZkNzJlMjk3MzliNjAxMDUzZWY1MjMwYTdkZDAwMGI2NmVmYTRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0zNzcsNjQgKzM3Nyw4OCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgUwogICAgIH0pKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAotICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkg
ewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZt
LCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7
CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZh
bHVlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQotICAgIAotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwga2V5KTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluT3B0
aW1pemUsIGJhc2UtPmNsYXNzSW5mbygqdm0pLCBpZGVudCkpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7
Ci0gICAgYm9vbCByZXN1bHQgPSBhc09iamVjdChiYXNlKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChhY2Nlc3NUeXBlID09IHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKLSAgICAKLSAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhl
eGVjLT5jb2RlQmxvY2soKSwgYXNPYmplY3QoYmFzZSktPnN0cnVjdHVyZSgpKSkKLSAgICAgICAg
cmVwYXRjaEluKGV4ZWMsIGJhc2UsIGlkZW50LCByZXN1bHQsIHNsb3QsICpzdHViSW5mbyk7Ci0g
ICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAg
TE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5SWQsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2
bSksIGlkZW50KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxs
KiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCi0gICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAotICAgIHN0dWJJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJy
b3IoZXhlYywgYmFzZSkpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKCZ2bSwgdWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMs
IGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwga2V5
KTsKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluLCBiYXNlLT5jbGFzc0luZm8oKnZt
KSwgaWRlbnQpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSktPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkp
OworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5CeUlkR2VuZXJpYywgYmFzZU9iamVj
dC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZU9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwg
dWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwor
ICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1
ZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAg
ICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBiYXNlT2JqZWN0LT5j
bGFzc0luZm8odm0pLCBpZGVudCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBi
b29sIGZvdW5kID0gYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhleGVjLT5jb2RlQmxvY2soKSwg
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSkpCisgICAgICAgIHJlcGF0Y2hJbkJ5SUQoZXhlYywg
YmFzZU9iamVjdCwgaWRlbnQsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8pOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBi
YXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluQnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1Zh
bHVlIGtleSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2Rl
KGtleSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xv
d1BhdGhzOjpvcEluQnlWYWwoZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CiB9
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA3YTMyNjY5
ZTRlM2RlZDI0MmJmN2NlNTA0Yzg3MDMwMTY1NjlmNDVjLi42MDcxZTVkYWI0ZDNhMjU2Nzg1YjU0
ZDE0YjU4MWRlMWFjY2VkMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMzcxLDkgKzM3MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0R2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8q
LCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluQnlWYWwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggN2U1ZDEwN2FkMjIyNTllYTI0ZjNmZjVhNWE4ZjFhNWI2NzE3ZWI3MC4u
ZTYzNmY3MTIwOTBmZjUwOThlZDYxNDNlYTliOGM5YTJmODA5NzczOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTc1MSw2ICs3NTEs
NDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCByZXN1bHRWUmVnID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZVZSZWcgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CisK
KyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKKworICAg
IEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGlkZW50LT5pbXBs
KCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdFZSZWcpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgaW50IHJl
c3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeUlkc1ttX2luQnlJZEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkp
OworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRl
eCBkYjJhNDcyZTg1MGE1NjZlMDdhMDIzY2Y0MzMwNDIyMjE4MTE1ZDY3Li42MDQxYmM0ZTJkNzZj
M2M1NWUzMDcwNDJlOTVlMTRmODBjYjdiMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTc3MSw2ICs3NzEsNDEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxv
Y2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworCisgICAg
ZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5k
ZXgoY3VycmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBt
X2luQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDAp
OworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2dldEJ5
SWRJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgaWRlbnQtPmltcGwoKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wg
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDE0MzczYmJiMjQ2
NzE4ZTk0N2RlZjZlOTJlMDAyNTBhYzRjZmRhZTEuLjg1ZWMwYjIwNGQyNzZmMjkxMzFjOWE4OGRm
OWYzZGMwZTEwNzI2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAt
NjA1LDggKzYwNSw4IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvCiAgICAgfQogfQogCi1zdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCitzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCisgICAgRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKQEAgLTYzMSw2ICs2MzEsMjYgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlSW4oCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgaWYgKHdhc0ZvdW5kKSB7CisgICAgICAg
ICAgICBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBhY3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsK
KyAgICAgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFjdGlvbjsKKworICAgICAgICAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3Mu
CisgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlID09IENhY2hlVHlwZTo6VW5zZXQK
KyAgICAgICAgICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQorICAgICAgICAgICAg
ICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlCisgICAgICAgICAgICAgICAgJiYgIXNsb3Qu
d2F0Y2hwb2ludFNldCgpCisgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRD
b2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhzdHViSW5mbywg
c3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewor
ICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQnlJZFNlbGZQYXRjaCwgc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0
dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRJbkJ5SWRTZWxm
KGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZSkgewog
ICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKICAgICAgICAgICAgICAgICBwcm90
b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlLCBzbG90LCB1c2VzUG9seVByb3RvKTsKQEAgLTY2NCw3
ICs2ODQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50KSk7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGUoCi0gICAgICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3Vu
ZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNzLCBpbnZhbGlkT2Zmc2V0
LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
OworICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhp
dCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNldCgpIDog
aW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgY29kZUJsb2NrLCBpZGVudCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTY3Miwx
MCArNjkyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW4oCiAgICAgICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBpZGVudCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02ODQsMTMgKzcwMSwxNCBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVV
cE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKIH0KIAotdm9pZCByZXBh
dGNoSW4oCi0gICAgRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBib29sIHdhc0ZvdW5kLAotICAgIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXBhdGNoSW5CeUlEKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwotICAgIGlmICh0cnlDYWNoZUluKGV4ZWMsIGJhc2UsIGlkZW50LCB3YXNG
b3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24oKSwgb3BlcmF0aW9uSW4pOworCisgICAgaWYgKHRyeUNhY2hlSW5CeUlEKGV4ZWMs
IGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBH
aXZlVXBPbkNhY2hlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZCk7CisgICAgfQog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAtMTIz
Niw5ICsxMjU0LDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJ
bmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOwog
fQogCi12b2lkIHJlc2V0SW4oU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNl
dEluQnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CisgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOwogfQogCiB2
b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGFhMzJjMjZlMWIyMjg0Y2UzNWJkN2VhYjcwZmM3
MzMyYzdiOTZmZDAuLjBmMzY2ZGRkOGNlYjM2MDJjZWZiMTAxMWQ2MDBjN2VmNDhkMmExNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgYnVp
bGRHZXRCeUlETGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90CiB2b2lkIGJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hJbihF
eGVjU3RhdGUqLCBKU0NlbGwqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVwYXRjaEluQnlJ
RChFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5k
LCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNo
SW5zdGFuY2VPZihFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwg
U3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihFeGVjU3Rh
dGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rRGlyZWN0Rm9yKEV4ZWNT
dGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPik7CkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgbGlua1ZpcnR1YWxGb3IoRXhl
Y1N0YXRlKiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoRXhlY1N0
YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5SUQoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUlES2luZCk7CiB2b2lkIHJlc2V0UHV0
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluKFN0cnVj
dHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9p
ZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxK
U0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVG
dW5jdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCAyYmM5ZmViZmVjMzg1NzgyNjdjMDYwYzlmNjM4Y2IxMTg1
NTgxY2RhLi43NjQ4NzA1OWNkNzY0YzBhN2ZjZTRhYTdlMTA2ZDdmZmNlZjdiMjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xNTA3LDEwICsxNTA3LDE2IEBAIF9sbGludF9vcF9pc19mdW5jdGlvbjoKICAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfaXNfZnVuY3Rpb25fbGVuZ3RoKQogCiAKLV9sbGludF9vcF9pbjoK
K19sbGludF9vcF9pbl9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfaW4pCi0gICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2luX2xlbmd0aCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbl9ieV9pZCkKKyAgICBkaXNwYXRjaChjb25z
dGV4cHIgb3BfaW5fYnlfaWRfbGVuZ3RoKQorCisKK19sbGludF9vcF9pbl9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2luX2J5X3ZhbCkK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaW5fYnlfdmFsX2xlbmd0aCkKIAogCiBfbGxpbnRf
b3BfdHJ5X2dldF9ieV9pZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNjI2OTg5ZDUyNmZhZWIwMmE4NWIyMGU5
NWQ2ZGNiOTY4YWJiMGFkMC4uM2VlYTU0ZDY0ODY2NzlkMGI0ZTAzNGQyMzQ3ZTA2MDJmZjc0YmRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KQEAgLTE1NTIsNiArMTU1Miw3IEBAIF9sbGludF9vcF9wdXRfYnlfaWQ6
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGRpc3Bh
dGNoKGNvbnN0ZXhwciBvcF9wdXRfYnlfaWRfbGVuZ3RoKQogCisKIG1hY3JvIGZpbmlzaEdldEJ5
VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgc2NyYXRj
aCkKICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBlNmYwM2I2NWI3NWQw
MDI1MmYwNDNlYzk5MzFmYmJhNTA0YjkzY2RlLi41ZDc3ZGIxOWI3NjJlZjc4NDE0Njg4ZWRjNzFj
ODlmOWY3ZjZkZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaApAQCAtNjIzLDcgKzYyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0K
IAogICAgIGlubGluZSBJbk5vZGU6OkluTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsb2Nh
dGlvbiwgZXhwcjEsIGV4cHIyLCBvcF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3BfaW5fYnlf
dmFsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDg0ZGQzZDJh
NDUxNmExODhmMGY5OGEwMWQ1MDEwMDRjZGM3MjU2NjMuLjI1M2RiNWU0YWFjNjExNGUzMDZmOWQ0
ZjIwOTRhNGI3YzNmMWE1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNjQ4LDEwICs2NDgsMjEgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0
aW9uVHlwZShPUF9DKDIpLmpzVmFsdWUoKSkpKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luKQorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKIHsKICAgICBCRUdJ
TigpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIE9Q
X0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5hcnJheVByb2ZpbGUp
KSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChleGVj
LCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUuYXJyYXlQcm9m
aWxlKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlfaWQpCit7CisgICAg
QkVHSU4oKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7Cisg
ICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgVEhST1coY3JlYXRlSW52YWxp
ZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CisKKyAgICBSRVRVUk4oanNCb29s
ZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBkYjFlZWE5NWQ0OGMzZTQ4YTk1ZmY4NmM2Y2ZiY2E0
NTc5YjQyNWJhLi4yN2MzOTcyMzlmMDI2ZDY1NmZiMTJhNDc3MDNlMzQ3Mjk1YTAwZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
ODUsNyArODUsNyBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kCiAgICAgcmV0dXJuIHBhZGRpbmc7
CiB9CiAKLWlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWws
IEpTVmFsdWUgcHJvcE5hbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikK
K2lubGluZSBib29sIG9wSW5CeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbCwg
SlNWYWx1ZSBwcm9wTmFtZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMzA2LDcgKzMwNiw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfdHlwZW9mKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfb2Jq
ZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfb2JqZWN0X29yX251bGwp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7Ci1TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW5fYnlfaWQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92
YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTk4MzkxNGI0MWQ1YTMwZmJhN2NjMmFlMzdiM2Ux
YmRhYTU0YjliZS4uNDM4MTJhN2I2MjMwMDkwMTA0ZThjMWJjMzg3Y2ZiNjg1ZWJjYjhjYyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOC0wNS0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBKU0Mgc2hvdWxkIGhhdmUgY29uc2lzdGVudCBJbkJ5SWQg
SUMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTY4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Ry
ZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByb3RvR2V0dGVyLl9fcHJvdG9fXy5nZXQgaGVsbG8p
OgorICAgICAgICAocHJvdG9TZXR0ZXIuX19wcm90b19fLnNldCBoZWxsbyk6CisgICAgICAgIChp
LnNob3VsZEJlLnRlc3QuZ2V0IGhlbGxvKToKKyAgICAgICAgKGkuc2hvdWxkQmUudGVzdC5zZXQg
aGVsbG8pOgorICAgICAgICAqIHN0cmVzcy9pbi1ieS1pZC1haS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvaW4tYnktaWQt
Y3VzdG9tLWFjY2Vzc29ycy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICogc3RyZXNzL2luLWJ5LWlkLWN1
c3RvbS12YWx1ZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2luLWJ5LWlkLW9wZXJhdGlvbi5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHNlbGZDYWNoZSk6Cisg
ICAgICAgICogc3RyZXNzL2luLWJ5LWlkLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoaGFuZGxlci5oYXMpOgorCiAyMDE4LTA1
LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2suCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1h
Y2Nlc3NvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1hY2Nlc3NvcnMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTM4ZGQ2ZDdhM2JmMWI4NmQ0YWU5NDM3MDliNjQ1YmQ2NjQ3ZTc3MAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qcwpAQCAtMCwwICsx
LDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgdmFyIG5hbWUg
PSAiaGVsbG8iOworICAgIHJldHVybiBuYW1lIGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3Qp
OworCit2YXIgcHJvdG9HZXR0ZXIgPSB7CisgICAgX19wcm90b19fOiB7CisgICAgICAgIGdldCBo
ZWxsbygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0Iik7CisgICAgICAgIH0K
KyAgICB9Cit9OwordmFyIHByb3RvU2V0dGVyID0geworICAgIF9fcHJvdG9fXzogeworICAgICAg
ICBzZXQgaGVsbG8odmFsdWUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0Iik7
CisgICAgICAgIH0KKyAgICB9Cit9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIHNob3VsZEJlKHRlc3QoeworICAgICAgICBnZXQgaGVsbG8oKSB7CisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIm91dCIpOworICAgICAgICB9CisgICAgfSksIHRydWUpOworICAgIHNo
b3VsZEJlKHRlc3Qoe30pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUodGVzdChwcm90b0dldHRlciks
IHRydWUpOworICAgIHNob3VsZEJlKHRlc3QoeworICAgICAgICBzZXQgaGVsbG8odmFsdWUpIHsK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0Iik7CisgICAgICAgIH0KKyAgICB9KSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdChwcm90b1NldHRlciksIHRydWUpOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtYWkuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbi1i
eS1pZC1haS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmExMWFjNzJhNWQyOTE1OTYxZDY2ZjhlZDNhNTEzYTFj
MGY1ZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtYWkuanMK
QEAgLTAsMCArMSwyNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAg
IHZhciBuYW1lID0gImhlbGxvIjsKKyAgICByZXR1cm4gbmFtZSBpbiBvYmplY3Q7Cit9Citub0lu
bGluZSh0ZXN0KTsKKwordmFyIHByb3RvID0geworICAgIF9fcHJvdG9fXzogeyBoZWxsbzogMiB9
Cit9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3Qo
eworICAgICAgICBoZWxsbzogNDIKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7
fSksIGZhbHNlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHsKKyAgICAgICAgaGVsbG93b3JsZDogNDMs
CisgICAgICAgIG9rOiA0NAorICAgIH0pLCBmYWxzZSk7CisgICAgc2hvdWxkQmUodGVzdChwcm90
byksIHRydWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9t
LWFjY2Vzc29ycy5qcyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWN1c3RvbS1hY2Nlc3NvcnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTU3MWVjOGViNWQ3ZTIzYWYzMjQzYjhmMTFlYmEzMGRmZjBkZmZiYwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWN1c3RvbS1hY2Nlc3Nv
cnMuanMKQEAgLTAsMCArMSwyNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKG9iamVjdCkK
K3sKKyAgICByZXR1cm4gImN1c3RvbVZhbHVlIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0
MSk7CisKK2Z1bmN0aW9uIHRlc3QyKG9iamVjdCkKK3sKKyAgICByZXR1cm4gImN1c3RvbUFjY2Vz
c29yIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK3ZhciB0YXJnZXQxID0gJHZt
LmNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIoKTsKK3ZhciB0YXJnZXQyID0geyBfX3Byb3Rv
X186IHRhcmdldDEgfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91
bGRCZSh0ZXN0MSh0YXJnZXQxKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdDEodGFyZ2V0Miks
IHRydWUpOworICAgIHNob3VsZEJlKHRlc3QyKHRhcmdldDEpLCB0cnVlKTsKKyAgICBzaG91bGRC
ZSh0ZXN0Mih0YXJnZXQyKSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9p
bi1ieS1pZC1jdXN0b20tdmFsdWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9t
LXZhbHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODQ3ODFmYzM1OGYzY2E2ZGU1MGNjYzQ4ZjMxNGZmMjE4
NGM0M2VhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9t
LXZhbHVlcy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmpl
Y3QpCit7CisgICAgcmV0dXJuICIkMSIgaW4gb2JqZWN0OworfQorbm9JbmxpbmUodGVzdCk7CisK
K3ZhciB0YXJnZXQxID0gUmVnRXhwOwordmFyIHRhcmdldDIgPSB7IF9fcHJvdG9fXzogUmVnRXhw
IH07Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCh0
YXJnZXQxKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh0YXJnZXQyKSwgdHJ1ZSk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1vcGVyYXRpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9pbi1ieS1pZC1vcGVyYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVkZDJjNDBlMzE5OWIy
MDZmMGY2NmNiNWIyYjI1ZmVkZWU5NDViMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2luLWJ5LWlkLW9wZXJhdGlvbi5qcwpAQCAtMCwwICsxLDQyIEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVu
Y3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuICJoZWxsbyIgaW4gb2JqZWN0OworfQor
bm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBz
aG91bGRCZSh0ZXN0KHsKKyAgICAgICAgaGVsbG86IDQyCisgICAgfSksIHRydWUpOworICAgIHNo
b3VsZEJlKHRlc3QoeworICAgICAgICBoZWxsbzogdW5kZWZpbmVkLAorICAgICAgICB3b3JsZDog
NDQKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7CisgICAgICAgIGhlbGxvd29y
bGQ6IDQzLAorICAgICAgICBvazogNDQKKyAgICB9KSwgZmFsc2UpOworfQorCitmdW5jdGlvbiBz
ZWxmQ2FjaGUob2JqZWN0KQoreworICAgIHJldHVybiAiaGVsbG8iIGluIG9iamVjdDsKK30KK25v
SW5saW5lKHNlbGZDYWNoZSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK29iamVjdC5oZWxsbyA9IDQy
OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShzZWxmQ2FjaGUo
b2JqZWN0KSwgdHJ1ZSk7CitvYmplY3Qud29ybGQgPSA0MzsKK3Nob3VsZEJlKHNlbGZDYWNoZShv
YmplY3QpLCB0cnVlKTsKK29iamVjdC53b3JsZCA9IDQzOworc2hvdWxkQmUoc2VsZkNhY2hlKHsg
X19wcm90b19fOiBvYmplY3QgfSksIHRydWUpOworZGVsZXRlIG9iamVjdC5oZWxsbzsKK3Nob3Vs
ZEJlKHNlbGZDYWNoZShvYmplY3QpLCBmYWxzZSk7CitzaG91bGRCZShzZWxmQ2FjaGUoeyBfX3By
b3RvX186IG9iamVjdCB9KSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW4t
YnktaWQtcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1wcm94eS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZTU2YmYyZjhiYjg4YmYzNjUzOGQyMzM5ZDI4MjBiZTQyMmVjZDJjCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtcHJveHkuanMKQEAgLTAsMCArMSw0NCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiAiaGVsbG8i
IGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgY291bnQgPSAwOwordmFyIHRh
cmdldCA9IG51bGw7Cit2YXIga2V5ID0gbnVsbDsKK3ZhciBoYW5kbGVyID0geworICAgIGhhcyh0
YXJnZXRBcmcsIGtleUFyZykgeworICAgICAgICArK2NvdW50OworICAgICAgICB0YXJnZXQgPSB0
YXJnZXRBcmc7CisgICAgICAgIGtleSA9IGtleUFyZzsKKyAgICAgICAgcmV0dXJuIGtleUFyZyBp
biB0YXJnZXRBcmc7CisgICAgfQorfTsKK3ZhciB0YXJnZXRPYmplY3QgPSB7fTsKK3ZhciBwcm94
eSA9IG5ldyBQcm94eSh0YXJnZXRPYmplY3QsIGhhbmRsZXIpOworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgIHNob3VsZEJlKGNvdW50LCBpKTsKKyAgICBzaG91bGRCZSh0ZXN0
KHByb3h5KSwgZmFsc2UpOworICAgIHNob3VsZEJlKHRhcmdldCwgdGFyZ2V0T2JqZWN0KTsKKyAg
ICBzaG91bGRCZShrZXksICJoZWxsbyIpOworfQordGFyZ2V0T2JqZWN0LmhlbGxvID0gNDI7Citm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkQmUoY291bnQsIGkgKyAx
ZTQpOworICAgIHNob3VsZEJlKHRlc3QocHJveHkpLCB0cnVlKTsKKyAgICBzaG91bGRCZSh0YXJn
ZXQsIHRhcmdldE9iamVjdCk7CisgICAgc2hvdWxkQmUoa2V5LCAiaGVsbG8iKTsKK30KK2RlbGV0
ZSB0YXJnZXRPYmplY3QuaGVsbG87Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgc2hvdWxkQmUoY291bnQsIGkgKyAyZTQpOworICAgIHNob3VsZEJlKHRlc3QocHJveHkpLCBm
YWxzZSk7CisgICAgc2hvdWxkQmUodGFyZ2V0LCB0YXJnZXRPYmplY3QpOworICAgIHNob3VsZEJl
KGtleSwgImhlbGxvIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340779</attachid>
            <date>2018-05-19 10:11:25 -0700</date>
            <delta_ts>2018-05-19 11:53:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185682-20180520021123.patch</filename>
            <type>text/plain</type>
            <size>94563</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi5lMGIyYjZiMDY1MWM5YzA2
NzQ0NzlmZGY0MTk2MjBiZjk4ZDkxYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTgtMDUtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50IG91ciBvcF9pbiBJQyBpcyBhZGhvYzogSXQgaXMgb25seSBlbWl0dGVkIGluIERGRyBhbmQg
RlRMIGxheWVycywKKyAgICAgICAgd2hlbiB3ZSBmb3VuZCB0aGF0IERGRzo6SW4ncyBwYXJhbWV0
ZXIgaXMgY29uc3RhbnQgc3RyaW5nLiBXZSBzaG91bGQKKyAgICAgICAgYWxpZ24gdGhpcyBJQyB0
byB0aGUgb3RoZXIgQnlJZCBJQ3MgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSBhZGhvYyBjb2RlCisg
ICAgICAgIGluIERGRyBhbmQgRlRMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIG91
ciAiSW4iIElDIGJ5IGFsaWduaW5nIGl0IHRvIHRoZSBvdGhlciBCeUlkIElDcy4KKyAgICAgICAg
V2Ugc3BsaXQgb3BfaW4gYnl0ZWNvZGUgdG8gb3BfaW5fYnlfaWQgYW5kIG9wX2luX2J5X3ZhbC4g
b3BfaW5fYnlfdmFsCisgICAgICAgIGlzIHRoZSBzYW1lIHRvIHRoZSBvcmlnaW5hbCBvcF9pbi4g
Rm9yIG9wX2luX2J5X2lkLCB3ZSB1c2UgSklUSW5CeUlkR2VuZXJhdG9yCisgICAgICAgIHRvIGVt
aXQgSW5CeUlkIElDIGNvZGUuIEluIGFkZGl0aW9uLCBvdXIgSklUSW5CeUlkR2VuZXJhdG9yIGFu
ZCBvcF9pbl9ieV9pZAorICAgICAgICBoYXMgYSBpbmxpbmUgYWNjZXNzIGNhY2hlIGZvciBvd24g
cHJvcGVydHkgY2FzZSwgd2hpY2ggaXMgdGhlIHNhbWUgdG8KKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvci4KKworICAgICAgICBBbmQgd2Ugc3BsaXQgREZHOjpJbiB0byBERkc6OkluQnlJZCBh
bmQgREZHOjpJbkJ5VmFsLiBJbkJ5VmFsIGlzIHRoZSBzYW1lCisgICAgICAgIHRvIHRoZSBvcmln
aW5hbCBJbiBERkcgbm9kZS4gREZHIEFJIGF0dGVtcHRzIHRvIGxvd2VyIEluQnlWYWwgdG8gSW5C
eUlkCisgICAgICAgIGlmIEFJIGZpZ3VyZWQgb3V0IHRoYXQgdGhlIHByb3BlcnR5IG5hbWUgaXMg
YSBjb25zdGFudCBzdHJpbmcuIEFuZCBpbgorICAgICAgICBJbkJ5SWQgbm9kZSwgd2UgdXNlIEpJ
VEluQnlJZEdlbmVyYXRvciBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIERG
RyBhbmQgRlRMJ3MgYWRob2MgSW4gSUMgY29kZS4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQg
cGF0Y2gsIHdlIHNob3VsZCBpbnRyb2R1Y2UgSW5CeUlkU3RhdHVzIHRvIG9wdGltaXplCisgICAg
ICAgIEluQnlJZCBpbiBERkcgYW5kIEZUTC4gV2Ugd291bGQgbGlrZSB0byBoYXZlIGEgbmV3IElu
QnlJZFN0YXR1cyBpbnN0ZWFkIG9mCisgICAgICAgIHJldXNpbmcgR2V0QnlJZFN0YXR1cyBzaW5j
ZSBHZXRCeUlkU3RhdHVzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkLCBhbmQKKyAgICAgICAgQWNj
ZXNzQ2FzZTo6VHlwZXMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZW0gKEFjY2Vzc0Nhc2U6OkluSGl0
IC8gSW5NaXNzKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdElu
QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cGF0Y2hhYmxlSnVt
cCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5S
ZWNvcmQ6OkluUmVjb3JkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YWRkSW4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4p
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW4pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6SklUKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGlu
ayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlk
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5f
YnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAg
ICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpyZXBhdGNoSW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpy
ZXNldEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6
b3BJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluKTogRGVsZXRl
ZC4KKwogMjAxOC0wNS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGUzMjM5YTE1ZTQ1MzNjODdjMjIyOTFjMjYy
NmExNjhhMTdiMzczZDEuLjNlNzcyYmM5MDY5Y2E4ODM4NTA0NjgwYzhjMDNmOTI2Y2Q1ODFjMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTExOCw2ICsxMTgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFj
ZToKICAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIFJlcGxhY2Us
IHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCkpOwogCisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJbkhpdCwgc3R1Yklu
Zm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC01NTUsMTAgKzU1OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3Vh
cmQoCiAgICAgICAgIGppdC5tb3ZlKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9vcCgmaml0KTsKLSAgICAgICAgZmFpbEFuZElnbm9y
ZSA9IGppdC5icmFuY2g4KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpFcXVhbCwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihQcm94
eU9iamVjdFR5cGUpKTsKKyAgICAgICAgZmFpbEFuZElnbm9yZSA9IGppdC5icmFuY2hJZlR5cGUo
dmFsdWVHUFIsIFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIAogICAgICAgICBqaXQuZW1pdExv
YWRTdHJ1Y3R1cmUodm0sIHZhbHVlR1BSLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUik7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFiZTlhOGEyODJlZGY0ZTc4YTQ2MzgzMGYzNTBiNzZmOThk
MGY1MGYuLjNmOWM1OWU2YjZkYzgxNTljNDhkNTE1N2ExNDUxNWFhODk3ZmI2NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAt
NTUxLDYgKzU1MSw1OSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlk
Q2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aQogI2VuZGlmCiB9CiAKK3Rl
bXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5C
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYgbWFwKQoreworICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rp
b25zQmVnaW4oKSArIGxvY2F0aW9uOworCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisKKyAgICBVTlVTRURfUEFSQU0o
aWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRhaW4gcGxhdGZv
cm0gY29uZmlndXJhdGlvbnMuCisKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOworICAgICAgICBpZiAo
c3R1YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdD
KSIpOworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisKKyAgICAgICAgU3RydWN0dXJl
KiBiYXNlU3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIHN0
dWIgPSBudWxscHRyOworCisgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKSB7Cisg
ICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgorICAgICAgICAgICAgb3V0LnByaW50
Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNl
bGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0dWIiKTsK
KyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICAgICAgb3V0LnByaW50Zigi
dW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGJh
c2VTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHViKQorICAg
ICAgICAgICAgb3V0LnByaW50KCIsICIsICpzdHViKTsKKworICAgICAgICBvdXQucHJpbnRmKCIp
Iik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob3V0KTsKKyAgICBVTlVTRURfUEFS
QU0obWFwKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrPgogdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKQpAQCAtMTAxMiw4
ICsxMDY1LDE3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6CiAgICAgICAgIHByaW50VW5hcnlP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIG9wX2luOiB7Ci0gICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlv
biwgaXQsICJpbiIpOworICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAgICAgICAg
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKKyAgICAgICAgcHJpbnRC
aW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X3ZhbCIpOwogICAgICAgICBkdW1wQXJy
YXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmgKaW5kZXggN2NkMDhjOTUyMTdkNGZjNWFiYjdjMzQ3ODY2MWY5NmY3ODY2Mzg4MC4uNWU4
OTQzZWYxM2UyNmEyZmRlYmVjZmU5YWFlNGFjZGQ1ODQxMzY0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTcxLDYgKzcxLDcgQEAg
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgewogICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KTsKICAgICB2b2lk
IHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwg
Y29uc3QgU3R1YkluZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFBy
aW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2
b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCBTdHViSW5mb01hcCYpOwogICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNo
ZXMsIERvbnREdW1wQ2FjaGVzIH07CiAgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9w
LCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4
IDU2MjhkZjViNDYyMTYzZWIyOTYzMjFmZTg1OGQwM2I2ZDlmNzZlNTUuLjE2ZjFmYjYwYzNkNjQw
YmRhYzliZmEyN2I2Yzc1M2Y2N2ZmYmRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTgwLDcgKzgwLDggQEAKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2lzX29iamVjdF9vcl9udWxsIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfY2VsbF93aXRoX3R5cGUiLCAibGVuZ3RoIiA6
IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luIiwgImxlbmd0aCIgOiA1IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luX2J5X2lkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIgOiA5IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIsICJsZW5n
dGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAppbmRleCA3MDFkMzZjZmFjNDUxYjNjODgyMzU2NjFhMTA1NzE3MjAzNTgwZGRmLi5k
YjUyMmFjMmU3MTFhNDliM2YyZDkyZGU4Y2EyOGJjZWI1MzFlMzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTg2LDYgKzE4Niw3
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBP
cGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6
CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfdHlwZW9mOgogICAgIGNh
c2Ugb3BfaXNfZW1wdHk6CiAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CkBAIC0yMjYsNyArMjI3
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2VudW1lcmF0b3Jfc3Ry
dWN0dXJlX3BuYW1lOgogICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lOgogICAg
IGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKLSAgICBjYXNlIG9wX2luOgorICAgIGNhc2Ugb3BfaW5fYnlf
dmFsOgogICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2lu
c3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9hZGQ6CkBAIC00NTQsNyArNDU1LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ug
b3BfaXNfY2VsbF93aXRoX3R5cGU6CiAgICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKLSAgICBjYXNl
IG9wX2luOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6CisgICAgY2FzZSBvcF9pbl9ieV92YWw6CiAg
ICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgY2FzZSBvcF90b19zdHJpbmc6CiAgICAgY2FzZSBv
cF90b19vYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDhmMWE0YmQ5MGUzY2FiMGI1YjAyY2ZiZjg2MTFhZGUyNTc5MzM0NDEuLmNjZTBi
NmEwMDY5ZjQyYjU4ZTE5ZDhlOTk1MmZiMWMzYjQ4NzA1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODksNyArNTg5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgY2FzZSBvcF9pbjoKKyAgICAgICAgY2FzZSBvcF9pbl9ieV92YWw6CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X3ZhbDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDogewogICAg
ICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3Bw
CmluZGV4IDkxMzBiMWUyNWQ0NGU2NjM1ODE3ZWE3OGE0ODNlZjhjYWQ2Nzk3OTAuLmYzNTFmODJi
ZWUwYTRkNzk0ZGE5MGM1Yjg2YmM2ZGJhNTljMzcxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yNzYsNiArMjc2LDI1IEBAIGJv
b2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgSlNBcnJheSogYXJyCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAK
K2Jvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIENDYWxsSGVscGVycyBq
aXQ7CisKKyAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0
Y2guYmFzZUdQUik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1ZVJlZ3Mo
KTsKKworICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlLT5pZCgpKSkpOworICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZCh0cnVlLCB2YWx1ZS5wYXls
b2FkR1BSKCkpOworCisgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxpbmUo
ImluIGFjY2VzcyIsIGppdCwgc3R1YkluZm8sIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikg
eworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoYnJhbmNoVG9TbG93UGF0aCwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKCkpOworICAgIH0pOworICAgIHJldHVybiBsaW5rZWRDb2RlSW5s
aW5lOworfQorCiB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB0YXJnZXQpCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCA5OTQ4YjNiNmY4NWU5MzYzMTRjYjE5
NzBjM2FjNDQzN2FiOGU2OGJhLi5hNGQwMzM1ZjhhYjA2NjA3ZGFhMTFiZjFiZjE2YjBlNTliN2Yy
MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5o
CkBAIC0xMTYsNiArMTE2LDcgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9v
bCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwog
ICAgIHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBK
U0FycmF5Kik7CiAgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHVi
SW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3Rh
dGljIGJvb2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBTdHJ1Y3R1
cmUqKTsKIAogICAgIC8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBzaXpl
IG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEgbmV3
IHR5cGUgb2YgSUMsIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDU4MTlhYWE5YWY0NjU3MDRkZTFi
NGFkODE2OWQ5YTM2N2NjNTZiNC4uMDQyMThkYjA0N2QwOWNlZDU1YmQzNzI3NzVhNDdjNTQxNjdm
OTljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCkBAIC04MSw2ICs4MSwxNSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
Ojppbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogYmFz
ZQogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCit2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0SW5CeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBi
YXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2FjaGVU
eXBlID0gQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOworCisgICAgdS5ieUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLnNldCgKKyAgICAgICAgKmNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0U3RydWN0dXJlKTsKKyAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKK30KKwog
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogewogICAgIHN3aXRjaCAoY2FjaGVUeXBl
KSB7CkBAIC05MCw2ICs5OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAg
ICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAgICBjYXNlIENhY2hlVHlw
ZTo6SW5CeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMDYsNiArMTE2LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5m
bzo6YWJvdXRUb0RpZSgpCiAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2Fj
aGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6
CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFy
cmF5TGVuZ3RoOgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjM2LDcgKzI0Nyw3IEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAg
ICByZXNldFB1dEJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6SW46Ci0gICAgICAgIHJlc2V0SW4oKnRoaXMpOworICAgICAgICByZXNl
dEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwpAQCAt
MjU5LDYgKzI3MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW5j
ZXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3dpdGNoIChjYWNoZVR5cGUpIHsKICAgICBj
YXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRS
ZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgogICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CkBAIC0yODIsNiArMjk0LDcgQEAgYm9vbCBT
dHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2Vs
ZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNoZVR5
cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIHJldHVybiB1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOgog
ICAgICAgICByZXR1cm4gdS5zdHViLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgK
aW5kZXggMTRmZWQ5NGVhMWRmNmNjNDg0MTcxYzc5ZjA5ODkwOWMyY2ZkM2YxMS4uZWZlNjE5YjQ0
OTUxZmI4ZjYyN2RkYjk1MWY1YWU4NTIwNjIxMjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU4LDYgKzU4LDcgQEAg
ZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewogICAgIFVuc2V0LAogICAgIEdldEJ5SWRT
ZWxmLAogICAgIFB1dEJ5SWRSZXBsYWNlLAorICAgIEluQnlJZFNlbGYsCiAgICAgU3R1YiwKICAg
ICBBcnJheUxlbmd0aAogfTsKQEAgLTcyLDYgKzczLDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm8gewogICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFz
ZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgaW5pdEFycmF5TGVu
Z3RoKCk7CiAgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiwgU3RydWN0dXJl
KiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CisgICAgdm9pZCBpbml0SW5C
eUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0KTsKIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBjb25zdCBJZGVudGlm
aWVyJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKIApAQCAtMTc0LDcgKzE3Niw3IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBTdHJ1Y3R1cmVTZXQgYnVmZmVyZWRTdHJ1
Y3R1cmVzOwogICAgIAogICAgIHN0cnVjdCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0YXJ0IG9m
IHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcywgb3IgdGhlIGxvY2F0aW9uIG9mIHBhdGNo
YWJsZSBqdW1wIGZvciAnaW4nIGFuZCAnaW5zdGFuY2VvZicgY2FjaGVzLgorICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8vIFRoaXMgaXMgZWl0
aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNoZXMuIG9yIHRoZSBs
b2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNhY2hlcy4KICAgICAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKICAgICAgICAgdWludDMyX3QgaW5saW5lU2l6
ZTsKICAgICAgICAgaW50MzJfdCBkZWx0YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb247
CkBAIC0xOTUsNyArMTk3LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb24o
KSB7IHJldHVybiBwYXRjaC5zdGFydC5sYWJlbEF0T2Zmc2V0KHBhdGNoLmRlbHRhRnJvbVN0YXJ0
VG9TbG93UGF0aFN0YXJ0KTsgfQogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gcGF0Y2hhYmxlSnVtcCgpCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6SW4gfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsK
KyAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFuY2VPZik7CiAg
ICAgICAgIHJldHVybiBwYXRjaC5zdGFydC5qdW1wQXRPZmZzZXQ8SlNJbnRlcm5hbFB0clRhZz4o
MCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDZkNjQ0OWIzMGUyNzhjM2VmYWU3MDgy
ZWU5ZTcwMDVlZmQwYjU5YjYuLmUxOTllOGYxYjQxYzEzNTUzNjZkYzQ4ODRkNTNkNmUzMzMzMTA1
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjY3LDEwICsyNjY3LDEwIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFuY2VPZkN1c3RvbShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiBiYXNlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5
VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJh
c2UpCiB7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQ
cm9maWxlKCk7Ci0gICAgZW1pdE9wY29kZShvcF9pbik7CisgICAgZW1pdE9wY29kZShvcF9pbl9i
eV92YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocHJvcGVydHktPmluZGV4KCkpOwpAQCAtMjY3OCw2ICsyNjc4LDE1IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX2luX2J5
X2lkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0cnlHZXRCeUlkLiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IGI3MjU1YWM2MjE2ZTA5ZGNlMWFkNGQ3YzY2OWVjNTQ2YTJjYjQ2NzMuLjk3ODI4Y2E1MGVmYThi
NjUyZGRmZjZlNDgyOTkzMDgxZGE1ZWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY5NCw3ICs2OTQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2Yo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3Rv
dHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdp
c3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVP
ZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Ao
b3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5CeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElu
QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHJ5R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMDdhOWM5
MDdhN2UyMTMwYTQyNDRkZmEwMDExZjdjYTUyYjA2ZThhNi4uYTVmYTUyNWQyMTYwMjFiMDBkOTU1
YWQ5ZGU2M2MxMWYzMzZhNThkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjI4MCwxMCArMjI4MCwxNiBAQCBSZWdp
c3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySQogCiBSZWdpc3RlcklEKiBJbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgaWYg
KGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX2V4cHIxKSkgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbkJ5SWQoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBiYXNlLmdldCgpKSwgYmFzZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3Ry
aW5nTm9kZSo+KG1fZXhwcjEpLT52YWx1ZSgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4ga2V5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbihnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7CisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0SW5CeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IDliZDhhNTMzYjFjZTFkNjRjOTMyMzMzOWM4MGYxNDc1ODc5ZjQ0YzkuLjlkYTVm
NDFjOGRiOWQxZjEyY2YzYTNhMzExMzQ0NzcxYjA3MDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTMyNTksMTAgKzMyNTksMzAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIEluOiB7
CisgICAgY2FzZSBJbkJ5SWQ6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUg
d2hlbiB0aGUgcHJvcGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKICAg
ICAgICAgLy8gdmFsdWUgaW5mb3JtYXRpb24uCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAg
ICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QpOworICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIEluQnlWYWw6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgcHJvcGVydHkg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgY29uc3RhbnQg
PSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNTdHJpbmco
KSkgeworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhjb25zdGFu
dCk7CisgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5
R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAgICAgaWYgKGltcGwgJiYgaW1wbC0+aXNBdG9t
aWMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
ZGV0ZXJtaW5lIHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFi
c3RyYWN0CisgICAgICAgIC8vIHZhbHVlIGluZm9ybWF0aW9uLgorICAgICAgICBjbG9iYmVyV29y
bGQoKTsKKyAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0KTsKICAgICAg
ICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAzODc0ZmNjNWIzNmRkOTQyNzVhYjI1MzI2OTU1MGMxMzIzOTRlM2Q1Li5l
MGU3YjQzMTE2YTJjMmY3OGRkNDU5Yzc3MjAzYWQ3ZjBlYzJiN2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjA3LDYgKzIwNyw4
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAg
ICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCk7CisgICAgdm9pZCBo
YW5kbGVJbkJ5SWQoCisgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIE5vZGUqIGJhc2Us
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSk7CiAg
ICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBlbWl0IGEgY2hlY2sg
Zm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAgIC8vIGNvbmRpdGlv
biBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJsZSBjaGVjayBjYW4g
YmUgZW1pdHRlZC4KQEAgLTQzMTEsNiArNDMxMywxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogICAgIH0gfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bkJ5SWQoaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQoreworICAgIFVOVVNFRF9QQVJB
TShpbnN0cnVjdGlvblNpemUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25P
cGVyYW5kKSwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgIGJh
c2UpKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCiB7
CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAgLTYzNjMsMTEgKzYzNzEsMjAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX3RvX29iamVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2luOiB7Ci0g
ICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2luKSAtIDFdLnUuYXJyYXlQcm9maWxlKTsKKyAgICAg
ICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfaW5fYnlf
dmFsKSAtIDFdLnUuYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCi0gICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChJbiwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSkpOwotICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfaW4pOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW5CeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfdmFs
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IE9QQ09ERV9MRU5H
VEgob3BfaW5fYnlfaWQpOworICAgICAgICAgICAgaGFuZGxlSW5CeUlkKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIG9wY29kZUxlbmd0aCk7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV9pZCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXgg
NWNlZTY1YjY4NDNlY2E1MDg4ZWQxYTlhOTEwOTRmMzQwNTdhYWE0NC4uZGFkYzkyZDg2N2U0YzQ0
YTM0NjJkOGQ2ZGFiNjQ1ODA3NWFjZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM2LDcgKzIzNiw4IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjCiAgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAgY2FzZSBvcF9pbjoKKyAgICBjYXNlIG9w
X2luX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3Bl
OgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJs
ZV9sZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGFkNjIzNjQ3YTc3MDQwYzBkM2I4MjZjZGMxYTM3MGMxYTIzYjliZGMuLjU1MmVkZWZhZTUyYjg5
ODk5ODA2MTg3ZWE5MWQyNzE3NWRmYzY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC02MTksNyArNjE5LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJk
VmFyYXJnczoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgotICAgIGNhc2UgSW46CisgICAgY2FzZSBJ
bkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAg
Y2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
NzM3NDE4NTY2N2UwYmRiNzg3YTgzYjcwMmNiMTg5NTliNTA2OWQwMS4uYjdlZGMwNjBmNDM2Mjkz
YWNhNDk4ODgzM2VhOTQ2MjBjNTcyY2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTYxNiw2ICs2MTYsMjMg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEluQnlWYWw6
IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBwcm9wZXJ0eSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgY29uc3Rh
bnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0gYXNTdHJpbmcoY29uc3RhbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0b21pYygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KHN0YXRpY19jYXN0
PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JbkJ5SWQoaWRlbnRpZmllck51bWJlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKICAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNG
dWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNC
aWdJbnQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA5NzRkOTcxMzY2ZmZkOGI3OTc4NmZiYjI2ZGVkM2FjMjVi
Njg3ZmRhLi40MTYyMTBhOTBjZWZiMGQ4M2Q5MGIxNTQ5YTFmZWMwMjdjZDk1ZTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTMsNyArMTkzLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yOgogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6Ci0gICAgY2FzZSBJbjoKKyAgICBj
YXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToK
ICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAwMTAxZDM3OWJjZDZmNzQ1ZTcyYTg4ZWMyMTlm
YmNmMzI5ZTM4YTliLi45YTFkYzEzNmQwMTZlZGFhMmFmMGEzNjBlZWQ3YmYzZTIwNjczYWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE0Njks
NyArMTQ2OSwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBJbjogeworICAgICAgICBjYXNlIEluQnlJZDogeworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5CeVZhbDogewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAg
Y29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA1
ZTVhN2E4NzUyNDQyNDFiNTI2YTlmMjRiNGZmNDBjZTk4ODViZjYxLi41ZmQ1MGI4YzdmMDFlZTM2
ZTFiMjczYWFjMjNhMGM4NjIyNzgzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjY1LDI2ICsyNjUsOSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9nZXRCeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRC
eUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1
dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxp
bmtCdWZmZXIpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gKm1faW5zW2ldLm1fc3R1
YkluZm87Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2lu
c1tpXS5tX2p1bXApOwotICAgICAgICBpbmZvLnBhdGNoLnN0YXJ0ID0gc3RhcnQ7Ci0KLSAgICAg
ICAgcHRyZGlmZl90IGlubGluZVNpemUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihtX2luc1tpXS5tX2RvbmUpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5saW5lU2l6ZSA+PSAwKTsKLSAgICAgICAgaW5mby5wYXRjaC5pbmxpbmVTaXplID0gaW5saW5l
U2l6ZTsKLQotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxM
b2NhdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAg
ICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1f
aW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSkpOwotCi0gICAgICAgIGluZm8ucGF0
Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJl
bCgpKSk7Ci0gICAgfQotICAgIAogICAgIGF1dG8gbGlua0NhbGxUaHVuayA9IEZ1bmN0aW9uUHRy
PE5vUHRyVGFnPih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMp
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDA1MGViN2MxNmY2ZGI5MDQ0
ODliZDJiNzg2Y2QzZmQxZjAyOTQ1OWUuLmMxN2IwMzIxMTQ4OGJmODU5YmU1NTUwNGUyZWFiMGFk
ZmE0MzQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTc2LDIzICs3Niw2IEBAIHN0cnVjdCBDYWxsTGlua1JlY29yZCB7CiAgICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX2Z1bmN0aW9uOwogfTsKIAotc3RydWN0IEluUmVjb3JkIHsK
LSAgICBJblJlY29yZCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAgIFNsb3dQYXRoR2VuZXJhdG9y
KiBzbG93UGF0aEdlbmVyYXRvciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQotICAgICAg
ICA6IG1fanVtcChqdW1wKQotICAgICAgICAsIG1fZG9uZShkb25lKQotICAgICAgICAsIG1fc2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5lcmF0b3IpCi0gICAgICAgICwgbV9zdHViSW5mbyhz
dHViSW5mbykKLSAgICB7Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fanVtcDsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwotICAgIFNs
b3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQYXRoR2VuZXJhdG9yOwotICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBtX3N0dWJJbmZvOwotfTsKLQogLy8gPT09IEpJVENvbXBpbGVyID09PQogLy8KIC8vIERG
Rzo6SklUQ29tcGlsZXIgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgSklUIGNvZGUgZnJv
bSB0aGUgZGF0YWZsb3cgZ3JhcGguCkBAIC0yMDksMTEgKzE5MiwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVu
ZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkSW4oY29uc3QgSW5SZWNvcmQmIHJlY29yZCkKKyAg
ICB2b2lkIGFkZEluQnlJZChjb25zdCBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgbV9pbnMuYXBwZW5kKHJlY29yZCk7
CisgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWRkSlND
YWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0No
ZWNrLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5k
KEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pKTsK
QEAgLTM1OSw4ICszNDIsOCBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBl
cnMgewogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZEdlbmVyYXRvcj4s
IDQ+IG1fZ2V0QnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5C
eUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwotICAgIFZlY3RvcjxJblJlY29yZCwgND4gbV9pbnM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVj
dENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RUYWls
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggNGQ5N2NkM2FiMTI3ZDMwYmJmNDZhYzczOWVkYmYxYmVhODVjMTMwZC4u
ZjZlMTBlYjNkYjMyMmFjZDBjM2FjNDU1NWI5ZDVjYjRlZGE5ODgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc0Myw2ICs3NDMsMTUgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBzZXRPcChTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgpOwogICAgICAgICBtX29wSW5mbyA9
IGZhbHNlOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvSW5CeUlkKHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBJbkJ5VmFsKTsKKyAg
ICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSW5CeUlkKTsKKyAgICAgICAgY2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2UoKSk7CisgICAgICAgIG1fb3BJbmZvID0gaWRlbnRpZmllck51bWJlcjsKKyAg
ICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KICAgICAKICAgICBKU1Zh
bHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTAxMCw2ICsxMDE5LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIEluQnlJZDoK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6
CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKQEAg
LTE5NjcsNyArMTk3Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5
VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggZmVlYzI1ZTU3YzNiYmRkYTQ5YTA5MTFjYWE4MTg4N2U3ZWM0MGIx
ZS4uNGZiYTkwZGE3NTdkODZlMTYxNmRhMzUyMjYwZjhlYmMzNzNkZmE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzY5LDcgKzM2OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N0cmluZ09iamVj
dCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAot
ICAgIG1hY3JvKEluLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhJbkJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhJbkJ5SWQsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFByb2ZpbGVUeXBlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHJvZmlsZUNvbnRyb2xGbG93LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU2V0RnVu
Y3Rpb25OYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IDRiY2IwMmM2MDg1Y2ExMDA2ODVmM2Y1OTE3ZjM4NTVmMWExY2I0MzEuLjIyODY0M2IyMDdhMzE1
ODc0NjZmMmYwNzMwMGZhMzAxNWI5ODc5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05
ODAsNyArOTgwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5VmFs
OgorICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0Jv
b2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZjE4M2FlOTQ5ZTQ0NTdlNmIzOTRiNjFkOGU0ZjQ3
ZjMyNmQ0OWU5Yy4uODJlZWQ2YTY4ZGFkOGM1M2MxZjdiNjFkMzhkNGQyYTNjODdjYjY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTMzMiw3
ICszMzIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6
CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKLSAgICBjYXNl
IEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093
blByb3BlcnR5OgogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDNmOTM0ZTNiMTFkODFjOGZiYmIyMjFiNzY3ZTAxYTM0MDQ1MmMxY2EuLmZlOGJl
Mzc0YTBmYmYwYzAxNDBkZjIzMTgwMTAwOTA0OTZiMWI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDU2LDY3ICsxMDU2LDUy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlLCBQYXlsb2FkV29yZCk7CisKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0gICAgCi0gICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1p
Y0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCptX2ppdC52bSgpKSkgewotICAgICAgICBpZiAoc3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0
b21pYygpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oQWNjZXNzVHlwZTo6SW4pOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCA9IG1faml0LnBhdGNoYWJsZUp1bXAoKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBkb25lID0gbV9qaXQubGFiZWwoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
U2luY2UgdGhpcyBibG9jayBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIHJlc3VsdCBvZiBzdHJp
bmctPnRyeUdldFZhbHVlSW1wbCgpIGlzIGF0b21pYywKLSAgICAgICAgICAgIC8vIHdlIGNhbiBj
YXN0IGl0IHRvIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHNhZmVseS4KLSAgICAgICAgICAgIGF1
dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAganVtcC5tX2p1bXAs
IHRoaXMsIG9wZXJhdGlvbkluT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0dWJJbmZvLCBiYXNlR1BSLAotICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0dWJJbmZvLT5jYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAg
ICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJh
c2VHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihyZXN1bHRHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNH
UFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmJhc2VUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpOwotI2VuZGlmCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJl
Z2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgICAg
ICBtX2ppdC5hZGRJbihJblJlY29yZChqdW1wLCBkb25lLCBzbG93UGF0aC5nZXQoKSwgc3R1Yklu
Zm8pKTsKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKIAotICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLAorICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgIHJlc3VsdFJlZ3MsIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCkpKTsKIAotICAgICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CiAKKyAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgCi0gICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIAorCiAgICAgYmFzZS51c2UoKTsKICAgICBrZXkudXNl
KCk7Ci0gICAgICAgIAorCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KAotICAgICAgICBvcGVyYXRpb25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUikpLAotICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkluQnlWYWwsIHJlc3VsdFJlZ3MsIGJhc2VHUFIsIHJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDBi
NzkxMmRjY2MyNWMzNGNlYzVlZGE0NzQyNWU5NjQ0ZjViYWY3NzcuLjQ2MTc0Yzk0YTQ5ZTNjNzhl
OGE1NWE4YjgzYmJiMDQyOGJhZTMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTczNSw3ICs3MzUsOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlJZChOb2RlKiwgQWNjZXNzVHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNvbXBpbGVJbihOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlSW5CeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKE5v
ZGUqKTsKICAgICAKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVs
bE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCk7CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTm9kZSogYnJhbmNoTm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCA5ZjEzMWQ5MTRiMWU1MDAyYjU0NjZjMTc0YTc4NzhlNmE2NzUzNGUyLi4z
ZWZiN2I3ZTQ1MDgxZTY4ZTVhZDhhMGU0YzViZGIyYTQxOGFkMzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3
NTEsOCArMzc1MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
Ci0gICAgY2FzZSBJbjoKLSAgICAgICAgY29tcGlsZUluKG5vZGUpOworICAgIGNhc2UgSW5CeUlk
OgorICAgICAgICBjb21waWxlSW5CeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSW5CeVZhbDoKKyAgICAgICAgY29tcGlsZUluQnlWYWwobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTJjYWEwMDNhZmJkNmZmYTdi
Y2RlMTgyZTQwYTI3N2ZjMzIyNjRhYS4uOGQzODY5NzdjYTgzYjI0Njg5ODQ5MTFhMzZmMmE5YTkx
NDI1ODg5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC00MzAxLDggKzQzMDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2V0RnVuY3Rpb25OYW1lKG5vZGUp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSW46Ci0gICAgICAgIGNvbXBpbGVJbihub2Rl
KTsKKyAgICBjYXNlIEluQnlJZDoKKyAgICAgICAgY29tcGlsZUluQnlJZChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEluQnlWYWw6CisgICAgICAgIGNvbXBpbGVJbkJ5VmFsKG5v
ZGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAwNjg2M2Qw
ZTIyZDY0ZTZhMWIxMzM3M2JiMTNiMGI3NDNhNWNjMmVkLi42Yjk1MTM0OGVkMjQyYjRiZDAyNjcz
NzM3ZmM1ZDRiMTc2OTk3NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yMDUsNyArMjA1LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93
U3RhdGljRXJyb3I6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKLSAgICBjYXNlIEluOgorICAgIGNh
c2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5Ogog
ICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CiAgICAgY2FzZSBNYXBIYXNoOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDEyYzkzMzg2YWZhNWZm
MzNjODNhN2E2MDc3NTAwYjJhYmEzYjkyNjcuLmU2ZGVjZmFlZjk0M2E0YWVmZWFlZmNjMmU5Zjc4
MGFiZWY4ZDc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTcwOCw4ICs3MDgsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlJZChB
Y2Nlc3NUeXBlOjpHZXREaXJlY3QpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SW46Ci0gICAgICAgICAgICBjb21waWxlSW4oKTsKKyAgICAgICAgY2FzZSBJbkJ5SWQ6CisgICAg
ICAgICAgICBjb21waWxlSW5CeUlkKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBJbkJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUluQnlWYWwoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhh
c093blByb3BlcnR5KCk7CkBAIC05NjY5LDg3ICs5NjcyLDcwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgY29tcGlsZUluKCkKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKCkK
ICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Cisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
SW5CeVZhbCksIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAgfQogCisgICAgdm9pZCBjb21waWxlSW5CeUlk
KCkKKyAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIEVkZ2UgYmFz
ZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwoYmFzZSk7
Ci0gICAgICAgIGlmIChKU1N0cmluZyogc3RyaW5nID0gbm9kZS0+Y2hpbGQyKCktPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNTdHJpbmcqPih2bSgpKSkgewotICAgICAgICAgICAgaWYgKHN0cmluZy0+
dHJ5R2V0VmFsdWVJbXBsKCkgJiYgc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKS0+aXNBdG9taWMo
KSkgewotICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBzdHIgPSBiaXR3aXNlX2Nh
c3Q8VW5pcXVlZFN0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpKTsKLSAgICAg
ICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50
KEludDY0KTsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
Y2VsbCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotCi0g
ICAgICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKLQot
ICAgICAgICAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KVtub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworCisgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBS
ZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KKyAgICAg
ICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKworICAg
ICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0
IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6
Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHVpZCwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwK
KyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAg
ICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBj
YWxscy4gV2UgZG9uJ3QgbmVlZCBhIEpTIGV4Y2VwdGlvbkhhbmRsZSBiZWNhdXNlIHdlIGRvbid0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBQcm94eSBvYmplY3RzLgotICAgICAg
ICAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMg
PSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFd
LmdwcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFt
c1swXS5ncHIoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
PmFkZFN0dWJJbmZvKEFjY2Vzc1R5cGU6OkluKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1
bHRHUFIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNHUFIg
PSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRj
aGFibGVKdW1wIGp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wLm1fanVtcC5saW5rKCZq
aXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluT3B0
aW1pemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGJhc2VHUFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Ry
KSkuY2FsbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGp1bXApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5zdGFydCA9
IHN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf
dCBpbmxpbmVTaXplID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGxpbmtC
dWZmZXIubG9jYXRpb25PZjxOb1B0clRhZz4oZG9uZSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlubGluZVNpemUgPj0gMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmlubGlu
ZVNpemUgPSBpbmxpbmVTaXplOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlv
biA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8Tm9QdHJUYWc+KHNsb3dQYXRoQ2FsbCkpOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0
aFN0YXJ0ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxOb1B0clRhZz4oc2xvd1BhdGhCZWdpbikpOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1p
emUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih1aWQpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5y
ZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBv
aW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
Ci0KLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25HZW5lcmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KIAogICAg
IHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmgKaW5kZXggYzFjMmQ0ZTk1N2RmZWFlNzEyMDM5YzQ1Y2JlN2I5NWM2MmE4MjVjMC4uNjg0ZTgx
M2RjNGE0YTgzYzY3NTEwMzBlMGJjN2I2NmI5YmYyYTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKQEAgLTUwLDkgKzUwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KE9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSkg
XAotICAgIG1hY3JvKE9wZXJhdGlvbkluT3B0aW1pemUpIFwKLSAgICBtYWNybyhPcGVyYXRpb25J
bikgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVyaWNJbikgXAorICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZCkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKKyAgICBtYWNy
byhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRT
dHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkgXApAQCAtNjcsNyArNjgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVp
bGRMaXN0KSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCi0gICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkKKyAg
ICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKQog
CiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAxOTlkODFhOGEzNWEzNGIzMTJlZjMxNTZmMmZkOGQzNDY0NzM3ZGJlLi5kOWRiMDYyOWE0Mzhj
MTI5ZDU3YmZhMzgzMTY2OWViOGFmMTU2OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC03OCwxMSArNzgsNiBAQCBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCkKICAgICAsIG1faW50ZXJwcmV0
ZXIodm0tPmludGVycHJldGVyKQogICAgICwgbV9sYWJlbHMoY29kZUJsb2NrID8gY29kZUJsb2Nr
LT5udW1iZXJPZkluc3RydWN0aW9ucygpIDogMCkKICAgICAsIG1fYnl0ZWNvZGVPZmZzZXQoc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICwgbV9nZXRCeUlkSW5kZXgo
VUlOVF9NQVgpCi0gICAgLCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4KFVJTlRfTUFYKQotICAgICwg
bV9wdXRCeUlkSW5kZXgoVUlOVF9NQVgpCi0gICAgLCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleChV
SU5UX01BWCkKLSAgICAsIG1fY2FsbExpbmtJbmZvSW5kZXgoVUlOVF9NQVgpCiAgICAgLCBtX3Bj
VG9Db2RlT3JpZ2luTWFwQnVpbGRlcigqdm0pCiAgICAgLCBtX2NhbkJlT3B0aW1pemVkKGZhbHNl
KQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsaW5nKGZhbHNlKQpAQCAtMjc3LDcgKzI3Miw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlT2Zmc2V0OwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoaW4pCisgICAgICAgIERFRklORV9TTE9XX09Q
KGluX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobGVzcykKICAgICAgICAgREVGSU5F
X1NMT1dfT1AobGVzc2VxKQogICAgICAgICBERUZJTkVfU0xPV19PUChncmVhdGVyKQpAQCAtMzQx
LDYgKzMzNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX2JlbG93KQogICAgICAgICBERUZJTkVfT1Aob3BfYmVsb3dlcSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9pbl9i
eV9pZCkKICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZF9wcm90b19sb2FkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoK
QEAgLTQ3OCw2ICs0NzQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgIG1fZ2V0QnlJZEluZGV4ID0gMDsKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsK
ICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CisgICAgbV9pbkJ5SWRJbmRleCA9IDA7CiAgICAgbV9p
bnN0YW5jZU9mSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAg
ICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKQEAgLTUyMSw2ICs1MTgsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF90cnlfZ2V0X2J5X2lkKQorICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaW5fYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfdW5zZXQ6CkBAIC02MDAsNiArNTk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2dldEJ5SWRJbmRleCA9PSBtX2dldEJ5
SWRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9
PSBtX2dldEJ5SWRzV2l0aFRoaXMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3B1dEJ5
SWRJbmRleCA9PSBtX3B1dEJ5SWRzLnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5
SWRJbmRleCA9PSBtX2luQnlJZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3Rh
bmNlT2ZJbmRleCA9PSBtX2luc3RhbmNlT2ZzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2stPm51
bWJlck9mVmFsdWVQcm9maWxlcygpKTsKQEAgLTg0Miw2ICs4NDEsNyBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHMsIHBh
dGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMs
IHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRj
aEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZl
cik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIp
OwogCiAgICAgaWYgKG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCAxNTZmMWI1ODEyOWY3ZjZjZjc2ZjEzOTVhNTNhOWE5ZDIwOGRiZmQ0
Li5iOTZhYTIyNDMzYWFiZGE1MGVhOGRhOWYzYTk5NWQ5MDRiNzk3OTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTUwMCw2ICs1MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9s
YXp5X3JlZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjdGlvbiopOwpAQCAtNjExLDYgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtODY1LDYg
Kzg2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVy
YXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVy
YXRvcj4gbV9wdXRCeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4gbV9p
bkJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5j
ZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGls
YXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29t
cGlsYXRpb25JbmZvOwpAQCAtODc4LDEyICs4ODEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwogICAg
ICAgICBMYWJlbCBtX2V4Y2VwdGlvbkhhbmRsZXI7CiAKLSAgICAgICAgdW5zaWduZWQgbV9nZXRC
eUlkSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXg7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNl
T2ZJbmRleDsKLSAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXg7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXg7CisgICAgICAgIHVuc2lnbmVkIG1fZ2V0
QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRo
aXNJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsg
VUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07
CisgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAg
ICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OworICAgICAg
ICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgCiAg
ICAgICAgIExhYmVsIG1fYXJpdHlDaGVjazsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtC
dWZmZXI+IG1fbGlua0J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOGYxN2U5ZTdhMzlkZDZhZDA4NmMw
MWEzNGUyYzE4MDg0YjkyM2YxNC4uMmY5Njk3NzM5YzBmOGU5YzExYWUxOTdmMzQ0NTRmODY4ZDFi
YTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKQEAgLTE2Niw2ICsxNjYsMjEgQEAgVl9KSVRPcGVyYXRpb25fRVNz
aUpKSSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVRJbkJ5SWRHZW5lcmF0
b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRS
ZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQoreworICAgIC8vIEZJWE1FOiBXZSBhcmUgbm90IHN1cHBv
cnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KKyAgICBVTlVTRURfUEFSQU0o
cHJvcGVydHlOYW1lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2
YWx1ZS50YWdHUFIoKSk7Cit9CisKK3ZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgZ2VuZXJhdGVGYXN0Q29tbW9uKGpp
dCwgSW5saW5lQWNjZXNzOjpzaXplRm9yUHJvcGVydHlBY2Nlc3MoKSk7Cit9CisKIEpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4LAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMDdhMDhjODVjMjNj
MjIzMDVjM2FhNDVjZjQ1MzdiZDljNzY1YjQwNC4uYjc0N2I4Njg5YWQ5Mzg0NGFiNzg1MTQ1YzA4
NDM1ZjNkNjhlOGQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQzLDYgKzE0MywxNyBAQCBjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtpbmQgbV9w
dXRLaW5kOwogfTsKIAorY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgeworcHVibGljOgorICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQorCisgICAg
SklUSW5CeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgVW5pcXVlZFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7
Cit9OworCiBjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiZjE2
NzdlMjJjNzNlMjQ2NDFjYmU4ZTBlMzllNTUwNjQwOTdiZTExLi43NmQ3MmUyOTczOWI2MDEwNTNl
ZjUyMzBhN2RkMDAwYjY2ZWZhNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTM3Nyw2NCArMzc3LDg4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBTCiAgICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEpTQ2VsbCogYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
LSAgICAKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSgqdm0pOwogCi0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBi
YXNlKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1
ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsdWUpKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9Ci0gICAgCi0gICAgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkp
OwotICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5PcHRpbWl6ZSwgYmFzZS0+Y2xhc3NJ
bmZvKCp2bSksIGlkZW50KSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKLSAgICBib29sIHJlc3VsdCA9
IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAg
IFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwotICAg
IAotICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGV4ZWMtPmNvZGVCbG9jaygpLCBh
c09iamVjdChiYXNlKS0+c3RydWN0dXJlKCkpKQotICAgICAgICByZXBhdGNoSW4oZXhlYywgYmFz
ZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9w
ZXJhdGlvbkluQnlJZCwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKLSAgICAKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwogCi0gICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFi
YXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQorICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKIAotICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkpOwotICAgIExPR19JQygoSUNF
dmVudDo6T3BlcmF0aW9uSW4sIGJhc2UtPmNsYXNzSW5mbygqdm0pLCBpZGVudCkpOwotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CisgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBp
ZGVudCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihiYXNlT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUu
aXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
SW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKworICAgIExPR19JQygoSUNFdmVudDo6
T3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50
KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIGJvb2wgZm91bmQgPSBiYXNlT2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nKGV4ZWMtPmNvZGVCbG9jaygpLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pKSkKKyAgICAgICAgcmVwYXRjaEluQnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwg
Zm91bmQsIHNsb3QsICpzdHViSW5mbyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZm91bmQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IGtleSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUga2V5KQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChl
eGVjLCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDdhMzI2NjllNGUzZGVkMjQyYmY3Y2U1MDRj
ODcwMzAxNjU2OWY0NWMuLjYwNzFlNWRhYjRkM2EyNTY3ODViNTRkMTRiNTgxZGUxYWNjZWQyNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zNzEsOSAr
MzcxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbkJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5P
cHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5C
eVZhbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3ZTVk
MTA3YWQyMjI1OWVhMjRmM2ZmNWE1YThmMWE1YjY3MTdlYjcwLi5lNjM2ZjcxMjA5MGZmNTA5OGVk
NjE0M2VhOWI4YzlhMmY4MDk3NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNzUxLDYgKzc1MSw0MiBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIHJlZ1QwKTsKKworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOworCisgICAgSklUSW5CeUlkR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeUlkcy5h
cHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKKworICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21faW5CeUlkSW5k
ZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcs
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZh
ckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYg
KCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGRiMmE0NzJlODUwYTU2NmUw
N2EwMjNjZjQzMzA0MjIyMTgxMTVkNjcuLjYwNDFiYzRlMmQ3NmMzYzU1ZTMwNzA0MmU5NWUxNGY4
MGNiN2IyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNzcxLDYgKzc3MSw0MSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBlbWl0TG9hZChiYXNlLCByZWdU
MSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7
CisKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rp
b24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGlk
ZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeUlkcy5hcHBlbmQoZ2Vu
KTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CisKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKworICAgIEpJVElu
QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBpZGVudC0+aW1wbCgpKTsK
KworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisK
IHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMTQzNzNiYmIyNDY3MThlOTQ3ZGVmNmU5MmUwMDI1
MGFjNGNmZGFlMS4uODVlYzBiMjA0ZDI3NmYyOTEzMWM5YTg4ZGY5ZjNkYzBlMTA3MjYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02MDUsOCArNjA1LDggQEAgdm9p
ZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY28KICAgICB9CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJ
RCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpA
QCAtNjMxLDYgKzYzMSwyNiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVB
Y2Nlc3NDaGFpbjsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9u
U2V0OwogICAgICAgICBpZiAod2FzRm91bmQpIHsKKyAgICAgICAgICAgIElubGluZUNhY2hlQWN0
aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOworICAgICAgICAgICAgaWYgKGFj
dGlvbiAhPSBBdHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uOwor
CisgICAgICAgICAgICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KKyAgICAgICAgICAgIGlmIChz
dHViSW5mby5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICYm
IHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGJhc2UKKyAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CisgICAgICAgICAgICAgICAgICAg
IExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCkpOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQ
cm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYoY29kZUJsb2NrLCBzdHJ1Y3R1
cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlKSB7CiAgICAgICAgICAgICAgICAgYm9v
bCB1c2VzUG9seVByb3RvOwogICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0g
UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGJhc2UsIHNsb3QsIHVzZXNQb2x5UHJvdG8pOwpAQCAtNjY0LDcgKzY4NCw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluKAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsKIAogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKLSAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICB2bSwg
Y29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5N
aXNzLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZhbGlkT2Zmc2V0LCBzdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogCiAg
ICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ss
IGlkZW50LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtNjcyLDEwICs2OTIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwot
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAg
ICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTY4NCwxMyArNzAxLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluKAogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNh
Y2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hJbigKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgd2Fz
Rm91bmQsCi0gICAgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCit2b2lkIHJlcGF0Y2hJbkJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZU9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sIHdhc0ZvdW5k
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
aWYgKHRyeUNhY2hlSW4oZXhlYywgYmFzZSwgaWRlbnQsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5m
bykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4
ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRp
b25Jbik7CisKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZXhlYywgYmFzZU9iamVjdCwgcHJvcGVy
dHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24oKSwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMjM2LDkgKzEyNTQsMTAgQEAgc3Rh
dGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgp
LCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKLXZvaWQgcmVzZXRJbihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVzZXRQYXRj
aGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnN0YW5jZU9m
KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKaW5kZXggYWEzMmMyNmUxYjIyODRjZTM1YmQ3ZWFiNzBmYzczMzJjN2I5NmZkMC4uMGYzNjZk
ZGQ4Y2ViMzYwMmNlZmIxMDExZDYwMGM3ZWY0OGQyYTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QKIHZv
aWQgYnVpbGRHZXRCeUlEUHJvdG9MaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBy
ZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRL
aW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoSW5CeUlEKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYs
IENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtEaXJlY3RGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZv
JiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAg
LTU0LDcgKzU0LDcgQEAgdm9pZCBsaW5rVmlydHVhbEZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0lu
Zm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8m
LCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIEdldEJ5SURLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW4oU3RydWN0dXJlU3R1YkluZm8mKTsKK3Zv
aWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVz
ZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDJiYzlmZWJmZWMzODU3ODI2N2MwNjBjOWY2MzhjYjExODU1ODFjZGEuLjc2NDg3MDU5Y2Q3
NjRjMGE3ZmNlNGFhN2UxMDZkN2ZmY2VmN2IyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1MDcsMTAgKzE1MDcs
MTYgQEAgX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
c19mdW5jdGlvbl9sZW5ndGgpCiAKIAotX2xsaW50X29wX2luOgorX2xsaW50X29wX2luX2J5X2lk
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbikK
LSAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaW5fbGVuZ3RoKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2luX2J5X2lkKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pbl9ieV9pZF9s
ZW5ndGgpCisKKworX2xsaW50X29wX2luX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5fYnlfdmFsKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9pbl9ieV92YWxfbGVuZ3RoKQogCiAKIF9sbGludF9vcF90cnlfZ2V0X2J5X2lkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQppbmRleCA2MjY5ODlkNTI2ZmFlYjAyYTg1YjIwZTk1ZDZkY2I5NjhhYmIwYWQwLi4z
ZWVhNTRkNjQ4NjY3OWQwYjRlMDM0ZDIzNDdlMDYwMmZmNzRiZGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
MTU1Miw2ICsxNTUyLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1
dF9ieV9pZF9sZW5ndGgpCiAKKwogbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCBzY3JhdGNoKQogICAgIHN0b3JlcSByZXN1
bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU2ZjAzYjY1Yjc1ZDAwMjUyZjA0M2VjOTkzMWZiYmE1
MDRiOTNjZGUuLjVkNzdkYjE5Yjc2MmVmNzg0MTQ2ODhlZGM3MWM4OWY5ZjdmNmRmZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC02
MjMsNyArNjIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEluTm9k
ZTo6SW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9w
Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcF9pbl9ieV92YWwsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggODRkZDNkMmE0NTE2YTE4OGYwZjk4YTAxZDUw
MTAwNGNkYzcyNTY2My4uMjUzZGI1ZTRhYWM2MTE0ZTMwNmY5ZDRmMjA5NGE0YjdjM2YxYTU3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC02NDgsMTAgKzY0OCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVu
Y3Rpb24pCiAgICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNW
YWx1ZSgpKSkpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaW5fYnlfdmFsKQogewogICAgIEJFR0lOKCk7Ci0gICAgUkVUVVJOKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9Q
X0MoMykuanNWYWx1ZSgpLCBwY1s0XS51LmFycmF5UHJvZmlsZSkpKTsKKyAgICBSRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgp
LCBPUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5hcnJheVByb2ZpbGUpKSk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5p
c09iamVjdCgpKQorICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihl
eGVjLCBiYXNlVmFsdWUpKTsKKworICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZh
bHVlKS0+aGFzUHJvcGVydHkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IGRiMWVlYTk1ZDQ4YzNlNDhhOTVmZjg2YzZjZmJjYTQ1NzliNDI1YmEuLjI3YzM5NzIz
OWYwMjZkNjU2ZmIxMmE0NzcwM2UzNDcyOTVhMDBmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC04NSw3ICs4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVT
cGVjaWFsaXphdGlvbktpbmQKICAgICByZXR1cm4gcGFkZGluZzsKIH0KIAotaW5saW5lIGJvb2wg
b3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm9wTmFtZSwg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQoraW5saW5lIGJvb2wgb3BJbkJ5
VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0z
MDYsNyArMzA2LDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW4pOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmlt
aXRpdmUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTgzOTE0YjQxZDVhMzBmYmE3Y2MyYWUzN2IzZTFiZGFhNTRiOWJlLi40MzgxMmE3
YjYyMzAwOTAxMDRlOGMxYmMzODdjZmI2ODVlYmNiOGNjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTA1
LTE5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIEpTQyBzaG91bGQgaGF2ZSBjb25zaXN0ZW50IEluQnlJZCBJQworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW4tYnktaWQtYWNjZXNz
b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAocHJvdG9HZXR0ZXIuX19wcm90b19fLmdldCBoZWxsbyk6CisgICAgICAgIChwcm90b1Nl
dHRlci5fX3Byb3RvX18uc2V0IGhlbGxvKToKKyAgICAgICAgKGkuc2hvdWxkQmUudGVzdC5nZXQg
aGVsbG8pOgorICAgICAgICAoaS5zaG91bGRCZS50ZXN0LnNldCBoZWxsbyk6CisgICAgICAgICog
c3RyZXNzL2luLWJ5LWlkLWFpLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9pbi1ieS1pZC1jdXN0b20tYWNjZXNzb3JzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAg
KHRlc3QyKToKKyAgICAgICAgKiBzdHJlc3MvaW4tYnktaWQtY3VzdG9tLXZhbHVlcy5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3MvaW4tYnktaWQtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoc2VsZkNhY2hlKToKKyAgICAgICAgKiBzdHJlc3MvaW4t
YnktaWQtcHJveHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChoYW5kbGVyLmhhcyk6CisKIDIwMTgtMDUtMTggIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVjay4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzhkZDZkN2EzYmYx
Yjg2ZDRhZTk0MzcwOWI2NDViZDY2NDdlNzcwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvaW4tYnktaWQtYWNjZXNzb3JzLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICB2YXIgbmFtZSA9ICJoZWxsbyI7CisgICAgcmV0
dXJuIG5hbWUgaW4gb2JqZWN0OworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBwcm90b0dldHRl
ciA9IHsKKyAgICBfX3Byb3RvX186IHsKKyAgICAgICAgZ2V0IGhlbGxvKCkgeworICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0KK307Cit2YXIgcHJv
dG9TZXR0ZXIgPSB7CisgICAgX19wcm90b19fOiB7CisgICAgICAgIHNldCBoZWxsbyh2YWx1ZSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0K
K307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCh7
CisgICAgICAgIGdldCBoZWxsbygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0
Iik7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7fSksIGZh
bHNlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHByb3RvR2V0dGVyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUodGVzdCh7CisgICAgICAgIHNldCBoZWxsbyh2YWx1ZSkgeworICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRC
ZSh0ZXN0KHByb3RvU2V0dGVyKSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbi1ieS1pZC1haS5qcyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWFpLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2YTExYWM3MmE1ZDI5MTU5NjFkNjZmOGVkM2E1MTNhMWMwZjVmZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1haS5qcwpAQCAtMCwwICsxLDI2IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgdmFyIG5hbWUgPSAiaGVsbG8i
OworICAgIHJldHVybiBuYW1lIGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIg
cHJvdG8gPSB7CisgICAgX19wcm90b19fOiB7IGhlbGxvOiAyIH0KK307Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCh7CisgICAgICAgIGhlbGxvOiA0
MgorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHt9KSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKHRlc3QoeworICAgICAgICBoZWxsb3dvcmxkOiA0MywKKyAgICAgICAgb2s6IDQ0Cisg
ICAgfSksIGZhbHNlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHByb3RvKSwgdHJ1ZSk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tYWNjZXNzb3JzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9tLWFjY2Vzc29ycy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTcx
ZWM4ZWI1ZDdlMjNhZjMyNDNiOGYxMWViYTMwZGZmMGRmZmJjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9tLWFjY2Vzc29ycy5qcwpAQCAtMCwwICsxLDI1
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdDEob2JqZWN0KQoreworICAgIHJldHVybiAiY3Vz
dG9tVmFsdWUiIGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3QxKTsKKworZnVuY3Rpb24gdGVz
dDIob2JqZWN0KQoreworICAgIHJldHVybiAiY3VzdG9tQWNjZXNzb3IiIGluIG9iamVjdDsKK30K
K25vSW5saW5lKHRlc3QyKTsKKwordmFyIHRhcmdldDEgPSAkdm0uY3JlYXRlQ3VzdG9tVGVzdEdl
dHRlclNldHRlcigpOwordmFyIHRhcmdldDIgPSB7IF9fcHJvdG9fXzogdGFyZ2V0MSB9OworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QxKHRhcmdldDEp
LCB0cnVlKTsKKyAgICBzaG91bGRCZSh0ZXN0MSh0YXJnZXQyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUodGVzdDIodGFyZ2V0MSksIHRydWUpOworICAgIHNob3VsZEJlKHRlc3QyKHRhcmdldDIpLCB0
cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWN1c3RvbS12YWx1
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tdmFsdWVzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4NDc4MWZjMzU4ZjNjYTZkZTUwY2NjNDhmMzE0ZmYyMTg0YzQzZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tdmFsdWVzLmpzCkBAIC0wLDAg
KzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4g
IiQxIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIHRhcmdldDEgPSBSZWdF
eHA7Cit2YXIgdGFyZ2V0MiA9IHsgX19wcm90b19fOiBSZWdFeHAgfTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0KHRhcmdldDEpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZSh0ZXN0KHRhcmdldDIpLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2luLWJ5LWlkLW9wZXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLW9w
ZXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWRkMmM0MGUzMTk5YjIwNmYwZjY2Y2I1YjJiMjVmZWRl
ZTk0NWIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtb3BlcmF0
aW9uLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICByZXR1cm4gImhlbGxvIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QoeworICAg
ICAgICBoZWxsbzogNDIKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7CisgICAg
ICAgIGhlbGxvOiB1bmRlZmluZWQsCisgICAgICAgIHdvcmxkOiA0NAorICAgIH0pLCB0cnVlKTsK
KyAgICBzaG91bGRCZSh0ZXN0KHsKKyAgICAgICAgaGVsbG93b3JsZDogNDMsCisgICAgICAgIG9r
OiA0NAorICAgIH0pLCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHNlbGZDYWNoZShvYmplY3QpCit7
CisgICAgcmV0dXJuICJoZWxsbyIgaW4gb2JqZWN0OworfQorbm9JbmxpbmUoc2VsZkNhY2hlKTsK
KwordmFyIG9iamVjdCA9IHt9Oworb2JqZWN0LmhlbGxvID0gNDI7Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHNlbGZDYWNoZShvYmplY3QpLCB0cnVlKTsKK29i
amVjdC53b3JsZCA9IDQzOworc2hvdWxkQmUoc2VsZkNhY2hlKG9iamVjdCksIHRydWUpOworb2Jq
ZWN0LndvcmxkID0gNDM7CitzaG91bGRCZShzZWxmQ2FjaGUoeyBfX3Byb3RvX186IG9iamVjdCB9
KSwgdHJ1ZSk7CitkZWxldGUgb2JqZWN0LmhlbGxvOworc2hvdWxkQmUoc2VsZkNhY2hlKG9iamVj
dCksIGZhbHNlKTsKK3Nob3VsZEJlKHNlbGZDYWNoZSh7IF9fcHJvdG9fXzogb2JqZWN0IH0pLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1wcm94eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2luLWJ5LWlkLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNTZiZjJmOGJiODhi
ZjM2NTM4ZDIzMzlkMjgyMGJlNDIyZWNkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbi1ieS1pZC1wcm94eS5qcwpAQCAtMCwwICsxLDQ0IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rp
b24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuICJoZWxsbyIgaW4gb2JqZWN0OworfQorbm9J
bmxpbmUodGVzdCk7CisKK3ZhciBjb3VudCA9IDA7Cit2YXIgdGFyZ2V0ID0gbnVsbDsKK3ZhciBr
ZXkgPSBudWxsOwordmFyIGhhbmRsZXIgPSB7CisgICAgaGFzKHRhcmdldEFyZywga2V5QXJnKSB7
CisgICAgICAgICsrY291bnQ7CisgICAgICAgIHRhcmdldCA9IHRhcmdldEFyZzsKKyAgICAgICAg
a2V5ID0ga2V5QXJnOworICAgICAgICByZXR1cm4ga2V5QXJnIGluIHRhcmdldEFyZzsKKyAgICB9
Cit9OwordmFyIHRhcmdldE9iamVjdCA9IHt9OwordmFyIHByb3h5ID0gbmV3IFByb3h5KHRhcmdl
dE9iamVjdCwgaGFuZGxlcik7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
c2hvdWxkQmUoY291bnQsIGkpOworICAgIHNob3VsZEJlKHRlc3QocHJveHkpLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUodGFyZ2V0LCB0YXJnZXRPYmplY3QpOworICAgIHNob3VsZEJlKGtleSwgImhl
bGxvIik7Cit9Cit0YXJnZXRPYmplY3QuaGVsbG8gPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICBzaG91bGRCZShjb3VudCwgaSArIDFlNCk7CisgICAgc2hvdWxkQmUo
dGVzdChwcm94eSksIHRydWUpOworICAgIHNob3VsZEJlKHRhcmdldCwgdGFyZ2V0T2JqZWN0KTsK
KyAgICBzaG91bGRCZShrZXksICJoZWxsbyIpOworfQorZGVsZXRlIHRhcmdldE9iamVjdC5oZWxs
bzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZShjb3VudCwg
aSArIDJlNCk7CisgICAgc2hvdWxkQmUodGVzdChwcm94eSksIGZhbHNlKTsKKyAgICBzaG91bGRC
ZSh0YXJnZXQsIHRhcmdldE9iamVjdCk7CisgICAgc2hvdWxkQmUoa2V5LCAiaGVsbG8iKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340783</attachid>
            <date>2018-05-19 11:54:02 -0700</date>
            <delta_ts>2018-05-19 12:59:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185682-20180520035400.patch</filename>
            <type>text/plain</type>
            <size>93594</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWU4NGFhN2MwMmJmNDEwZmJkZTZiOTU2OGE1ZmUzNzczNDU0ZjMyLi43YmNkZTY4ZmExMjFmNjFm
OWI0NTg2Y2ZiM2MxY2JiNTI0MjAxZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMTgtMDUtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSlNDIHNob3VsZCBoYXZlIGNvbnNpc3RlbnQgSW5CeUlk
IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU2
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50IG91ciBvcF9pbiBJQyBpcyBhZGhvYzogSXQgaXMgb25seSBlbWl0dGVkIGluIERGRyBhbmQg
RlRMIGxheWVycywKKyAgICAgICAgd2hlbiB3ZSBmb3VuZCB0aGF0IERGRzo6SW4ncyBwYXJhbWV0
ZXIgaXMgY29uc3RhbnQgc3RyaW5nLiBXZSBzaG91bGQKKyAgICAgICAgYWxpZ24gdGhpcyBJQyB0
byB0aGUgb3RoZXIgQnlJZCBJQ3MgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSBhZGhvYyBjb2RlCisg
ICAgICAgIGluIERGRyBhbmQgRlRMLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIG91
ciAiSW4iIElDIGJ5IGFsaWduaW5nIGl0IHRvIHRoZSBvdGhlciBCeUlkIElDcy4KKyAgICAgICAg
V2Ugc3BsaXQgb3BfaW4gYnl0ZWNvZGUgdG8gb3BfaW5fYnlfaWQgYW5kIG9wX2luX2J5X3ZhbC4g
b3BfaW5fYnlfdmFsCisgICAgICAgIGlzIHRoZSBzYW1lIHRvIHRoZSBvcmlnaW5hbCBvcF9pbi4g
Rm9yIG9wX2luX2J5X2lkLCB3ZSB1c2UgSklUSW5CeUlkR2VuZXJhdG9yCisgICAgICAgIHRvIGVt
aXQgSW5CeUlkIElDIGNvZGUuIEluIGFkZGl0aW9uLCBvdXIgSklUSW5CeUlkR2VuZXJhdG9yIGFu
ZCBvcF9pbl9ieV9pZAorICAgICAgICBoYXMgYSBpbmxpbmUgYWNjZXNzIGNhY2hlIGZvciBvd24g
cHJvcGVydHkgY2FzZSwgd2hpY2ggaXMgdGhlIHNhbWUgdG8KKyAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvci4KKworICAgICAgICBBbmQgd2Ugc3BsaXQgREZHOjpJbiB0byBERkc6OkluQnlJZCBh
bmQgREZHOjpJbkJ5VmFsLiBJbkJ5VmFsIGlzIHRoZSBzYW1lCisgICAgICAgIHRvIHRoZSBvcmln
aW5hbCBJbiBERkcgbm9kZS4gREZHIEFJIGF0dGVtcHRzIHRvIGxvd2VyIEluQnlWYWwgdG8gSW5C
eUlkCisgICAgICAgIGlmIEFJIGZpZ3VyZWQgb3V0IHRoYXQgdGhlIHByb3BlcnR5IG5hbWUgaXMg
YSBjb25zdGFudCBzdHJpbmcuIEFuZCBpbgorICAgICAgICBJbkJ5SWQgbm9kZSwgd2UgdXNlIEpJ
VEluQnlJZEdlbmVyYXRvciBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIERG
RyBhbmQgRlRMJ3MgYWRob2MgSW4gSUMgY29kZS4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQg
cGF0Y2gsIHdlIHNob3VsZCBpbnRyb2R1Y2UgSW5CeUlkU3RhdHVzIHRvIG9wdGltaXplCisgICAg
ICAgIEluQnlJZCBpbiBERkcgYW5kIEZUTC4gV2Ugd291bGQgbGlrZSB0byBoYXZlIGEgbmV3IElu
QnlJZFN0YXR1cyBpbnN0ZWFkIG9mCisgICAgICAgIHJldXNpbmcgR2V0QnlJZFN0YXR1cyBzaW5j
ZSBHZXRCeUlkU3RhdHVzIGJlY29tZXMgdG9vIGNvbXBsaWNhdGVkLCBhbmQKKyAgICAgICAgQWNj
ZXNzQ2FzZTo6VHlwZXMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZW0gKEFjY2Vzc0Nhc2U6OkluSGl0
IC8gSW5NaXNzKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdElu
QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cGF0Y2hhYmxlSnVt
cCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAq
IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29u
c3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2Vz
R0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlJZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5SZWNvcmQ6OkluUmVjb3JkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpKSVRD
b21waWxlcjo6YWRkSW4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpoYXNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcnJh
eU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW4pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW4pOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
SklUKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklU
SW5CeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpyZXBhdGNoSW4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpyZXNldEluKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQ
YXRoczo6b3BJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluKTog
RGVsZXRlZC4KKwogMjAxOC0wNS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGUzMjM5YTE1ZTQ1MzNjODdjMjIy
OTFjMjYyNmExNjhhMTdiMzczZDEuLjNlNzcyYmM5MDY5Y2E4ODM4NTA0NjgwYzhjMDNmOTI2Y2Q1
ODFjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKQEAgLTExOCw2ICsxMTgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlk
UmVwbGFjZToKICAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIFJl
cGxhY2UsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5SWRTZWxmLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpOwogCisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNl
bGY6CisgICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJbkhpdCwg
c3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSk7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC01NTUsMTAgKzU1OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQoCiAgICAgICAgIGppdC5tb3ZlKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAg
CiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9vcCgmaml0KTsKLSAgICAgICAgZmFpbEFu
ZElnbm9yZSA9IGppdC5icmFuY2g4KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpFcXVhbCwK
LSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihQcm94eU9iamVjdFR5cGUpKTsKKyAgICAgICAgZmFpbEFuZElnbm9yZSA9IGppdC5icmFuY2hJ
ZlR5cGUodmFsdWVHUFIsIFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIAogICAgICAgICBqaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHZhbHVlR1BSLCBzY3JhdGNoMkdQUiwgc2NyYXRjaEdQUik7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFiZTlhOGEyODJlZGY0ZTc4YTQ2MzgzMGYzNTBi
NzZmOThkMGY1MGYuLjNmOWM1OWU2YjZkYzgxNTljNDhkNTE1N2ExNDUxNWFhODk3ZmI2NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cApAQCAtNTUxLDYgKzU1MSw1OSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQ
dXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aQogI2VuZGlmCiB9
CiAKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBTdHViSW5mb01hcCYgbWFwKQoreworICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5z
dHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOworCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBpZGVudGlmaWVyKGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisKKyAgICBVTlVTRURf
UEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRhaW4g
cGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCisKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7
CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOworICAgICAg
ICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0
IEJ5IEdDKSIpOworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisKKyAgICAgICAgU3Ry
dWN0dXJlKiBiYXNlU3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nl
c3MqIHN0dWIgPSBudWxscHRyOworCisgICAgICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBl
KSB7CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgorICAgICAgICAgICAgb3V0
LnByaW50Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUu
YnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0
dWIiKTsKKyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICAgICAgb3V0LnBy
aW50ZigidW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVj
dCIsIGJhc2VTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHVi
KQorICAgICAgICAgICAgb3V0LnByaW50KCIsICIsICpzdHViKTsKKworICAgICAgICBvdXQucHJp
bnRmKCIpIik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob3V0KTsKKyAgICBVTlVT
RURfUEFSQU0obWFwKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrPgogdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0
YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKQpAQCAt
MTAxMiw4ICsxMDY1LDE3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6CiAgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX2Z1bmN0aW9uIik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIG9wX2luOiB7Ci0gICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbiIpOworICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAg
ICAgICAgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKKyAgICAgICAg
cHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X3ZhbCIpOwogICAgICAgICBk
dW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmgKaW5kZXggN2NkMDhjOTUyMTdkNGZjNWFiYjdjMzQ3ODY2MWY5NmY3ODY2Mzg4
MC4uNWU4OTQzZWYxM2UyNmEyZmRlYmVjZmU5YWFlNGFjZGQ1ODQxMzY0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTcxLDYgKzcx
LDcgQEAgY2xhc3MgQnl0ZWNvZGVEdW1wZXIgewogICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KTsKICAg
ICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsK
KyAgICB2b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwogICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1
bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07CiAgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNo
YXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmKTsKICAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiBv
dXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3Ap
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CmluZGV4IDU2MjhkZjViNDYyMTYzZWIyOTYzMjFmZTg1OGQwM2I2ZDlmNzZlNTUuLjE2ZjFmYjYw
YzNkNjQwYmRhYzliZmEyN2I2Yzc1M2Y2N2ZmYmRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTgwLDcgKzgwLDggQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2lzX29iamVjdF9vcl9udWxsIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDog
MyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfY2VsbF93aXRoX3R5cGUiLCAibGVu
Z3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luIiwgImxlbmd0aCIgOiA1
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbl9ieV92YWwiLCAibGVuZ3RoIiA6IDUg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luX2J5X2lkIiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIg
OiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWQiLCAibGVuZ3RoIiA6
IDkgIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZCIs
ICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAppbmRleCA3MDFkMzZjZmFjNDUxYjNjODgyMzU2NjFhMTA1NzE3MjAzNTgw
ZGRmLi5kYjUyMmFjMmU3MTFhNDliM2YyZDkyZGU4Y2EyOGJjZWI1MzFlMzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTg2LDYg
KzE4Niw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9nZXRfYnlfaWRf
dW5zZXQ6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OgogICAgIGNhc2Ugb3BfZ2V0X2Fy
cmF5X2xlbmd0aDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfdHlwZW9mOgog
ICAgIGNhc2Ugb3BfaXNfZW1wdHk6CiAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CkBAIC0yMjYs
NyArMjI3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2VudW1lcmF0
b3Jfc3RydWN0dXJlX3BuYW1lOgogICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1l
OgogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKLSAgICBjYXNlIG9wX2luOgorICAgIGNhc2Ugb3Bf
aW5fYnlfdmFsOgogICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNl
IG9wX2luc3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9hZGQ6CkBAIC00NTQsNyArNDU1LDggQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlE
IG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAg
IGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6CiAgICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKLSAg
ICBjYXNlIG9wX2luOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6CisgICAgY2FzZSBvcF9pbl9ieV92
YWw6CiAgICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgY2FzZSBvcF90b19zdHJpbmc6CiAgICAg
Y2FzZSBvcF90b19vYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDhmMWE0YmQ5MGUzY2FiMGI1YjAyY2ZiZjg2MTFhZGUyNTc5MzM0NDEu
LmNjZTBiNmEwMDY5ZjQyYjU4ZTE5ZDhlOTk1MmZiMWMzYjQ4NzA1NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODksNyArNTg5LDcgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FzZSBvcF9pbjoKKyAgICAgICAgY2FzZSBvcF9pbl9ieV92YWw6CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDog
ewogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAxXS51
Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCmluZGV4IDkxMzBiMWUyNWQ0NGU2NjM1ODE3ZWE3OGE0ODNlZjhjYWQ2Nzk3OTAuLmYz
NTFmODJiZWUwYTRkNzk0ZGE5MGM1Yjg2YmM2ZGJhNTljMzcxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yNzYsNiArMjc2LDI1
IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgSlNBcnJheSogYXJyCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7
CiB9CiAKK2Jvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIENDYWxsSGVs
cGVycyBqaXQ7CisKKyAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1
ZVJlZ3MoKTsKKworICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVCcmFu
Y2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
c3RydWN0dXJlLT5pZCgpKSkpOworICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZCh0cnVlLCB2YWx1
ZS5wYXlsb2FkR1BSKCkpOworCisgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJ
bmxpbmUoImluIGFjY2VzcyIsIGppdCwgc3R1YkluZm8sIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoYnJhbmNoVG9TbG93UGF0aCwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOworICAgIH0pOworICAgIHJldHVybiBsaW5rZWRD
b2RlSW5saW5lOworfQorCiB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCA5OTQ4YjNiNmY4NWU5MzYz
MTRjYjE5NzBjM2FjNDQzN2FiOGU2OGJhLi5hNGQwMzM1ZjhhYjA2NjA3ZGFhMTFiZjFiZjE2YjBl
NTliN2YyMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oCkBAIC0xMTYsNiArMTE2LDcgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0
aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJh
eSopOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1Yklu
Zm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1
cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7Cisg
ICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBT
dHJ1Y3R1cmUqKTsKIAogICAgIC8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRo
ZSBzaXplIG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5n
IGEgbmV3IHR5cGUgb2YgSUMsIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDU4MTlhYWE5YWY0NjU3
MDRkZTFiNGFkODE2OWQ5YTM2N2NjNTZiNC4uMDQyMThkYjA0N2QwOWNlZDU1YmQzNzI3NzVhNDdj
NTQxNjdmOTljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC04MSw2ICs4MSwxNSBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZSogYmFzZQogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCit2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0SW5CeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
Y2FjaGVUeXBlID0gQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOworCisgICAgdS5ieUlkU2VsZi5iYXNl
T2JqZWN0U3RydWN0dXJlLnNldCgKKyAgICAgICAgKmNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsK
K30KKwogdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogewogICAgIHN3aXRjaCAoY2Fj
aGVUeXBlKSB7CkBAIC05MCw2ICs5OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVm
KCkKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5
SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKKyAgICBjYXNlIENh
Y2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDYsNiArMTE2LDcgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWJvdXRUb0RpZSgpCiAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgogICAgIGNh
c2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJl
cGxhY2U6CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5
cGU6OkFycmF5TGVuZ3RoOgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjM2LDcgKzI0Nyw3
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQog
ICAgICAgICByZXNldFB1dEJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6SW46Ci0gICAgICAgIHJlc2V0SW4oKnRoaXMpOworICAgICAg
ICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMp
OwpAQCAtMjU5LDYgKzI3MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1Jl
ZmVyZW5jZXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3dpdGNoIChjYWNoZVR5cGUpIHsK
ICAgICBjYXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1
dEJ5SWRSZXBsYWNlOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgogICAgICAgICBp
ZiAoSGVhcDo6aXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CkBAIC0yODIsNiArMjk0LDcgQEAg
Ym9vbCBTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRC
eUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBD
YWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIHJldHVybiB1LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpT
dHViOgogICAgICAgICByZXR1cm4gdS5zdHViLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9y
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKaW5kZXggMTRmZWQ5NGVhMWRmNmNjNDg0MTcxYzc5ZjA5ODkwOWMyY2ZkM2YxMS4uZWZl
NjE5YjQ0OTUxZmI4ZjYyN2RkYjk1MWY1YWU4NTIwNjIxMjQ2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU4LDYgKzU4
LDcgQEAgZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewogICAgIFVuc2V0LAogICAgIEdl
dEJ5SWRTZWxmLAogICAgIFB1dEJ5SWRSZXBsYWNlLAorICAgIEluQnlJZFNlbGYsCiAgICAgU3R1
YiwKICAgICBBcnJheUxlbmd0aAogfTsKQEAgLTcyLDYgKzczLDcgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVy
ZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgaW5pdEFy
cmF5TGVuZ3RoKCk7CiAgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CisgICAgdm9pZCBp
bml0SW5CeUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUs
IFByb3BlcnR5T2Zmc2V0KTsKIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKIApAQCAtMTc0LDcgKzE3
Niw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBTdHJ1Y3R1cmVTZXQgYnVmZmVy
ZWRTdHJ1Y3R1cmVzOwogICAgIAogICAgIHN0cnVjdCB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0
YXJ0IG9mIHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcywgb3IgdGhlIGxvY2F0aW9uIG9m
IHBhdGNoYWJsZSBqdW1wIGZvciAnaW4nIGFuZCAnaW5zdGFuY2VvZicgY2FjaGVzLgorICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8vIFRoaXMg
aXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNoZXMuIG9y
IHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNhY2hlcy4K
ICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKICAgICAgICAgdWludDMyX3QgaW5s
aW5lU2l6ZTsKICAgICAgICAgaW50MzJfdCBkZWx0YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9j
YXRpb247CkBAIC0xOTUsNyArMTk3LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9j
YXRpb24oKSB7IHJldHVybiBwYXRjaC5zdGFydC5sYWJlbEF0T2Zmc2V0KHBhdGNoLmRlbHRhRnJv
bVN0YXJ0VG9TbG93UGF0aFN0YXJ0KTsgfQogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gcGF0Y2hhYmxlSnVtcCgpCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKGFjY2Vzc1R5
cGUgPT0gQWNjZXNzVHlwZTo6SW4gfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5j
ZU9mKTsKKyAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFuY2VP
Zik7CiAgICAgICAgIHJldHVybiBwYXRjaC5zdGFydC5qdW1wQXRPZmZzZXQ8SlNJbnRlcm5hbFB0
clRhZz4oMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDZkNjQ0OWIzMGUyNzhjM2Vm
YWU3MDgyZWU5ZTcwMDVlZmQwYjU5YjYuLmUxOTllOGYxYjQxYzEzNTUzNjZkYzQ4ODRkNTNkNmUz
MzMzMTA1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjY3LDEwICsyNjY3LDEwIEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFuY2VPZkN1c3RvbShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiBiYXNlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJbkJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIGJhc2UpCiB7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3
QXJyYXlQcm9maWxlKCk7Ci0gICAgZW1pdE9wY29kZShvcF9pbik7CisgICAgZW1pdE9wY29kZShv
cF9pbl9ieV92YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwpAQCAtMjY3OCw2ICsyNjc4LDE1IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9w
X2luX2J5X2lkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHBy
b3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0cnlHZXRCeUlkLiIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGI3MjU1YWM2MjE2ZTA5ZGNlMWFkNGQ3YzY2OWVjNTQ2YTJjYjQ2NzMuLjk3ODI4Y2E1
MGVmYThiNjUyZGRmZjZlNDgyOTkzMDgxZGE1ZWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY5NCw3
ICs2OTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3Rh
bmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFz
ZVByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9y
LCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFR5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVu
YXJ5T3Aob3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElu
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2Up
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5CeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEluQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHJ5R2V0QnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
MDdhOWM5MDdhN2UyMTMwYTQyNDRkZmEwMDExZjdjYTUyYjA2ZThhNi4uYTVmYTUyNWQyMTYwMjFi
MDBkOTU1YWQ5ZGU2M2MxMWYzMzZhNThkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjI4MCwxMCArMjI4MCwxNiBA
QCBSZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogCiBSZWdpc3RlcklEKiBJbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Cisg
ICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX2V4cHIxKSkgeworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbkJ5SWQoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBiYXNlLmdldCgpKSwgYmFzZS5nZXQoKSwgc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KG1fZXhwcjEpLT52YWx1ZSgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4ga2V5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhw
cjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIp
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbihnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0SW5CeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFzZS5nZXQoKSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IDliZDhhNTMzYjFjZTFkNjRjOTMyMzMzOWM4MGYxNDc1ODc5ZjQ0Yzku
LjlkYTVmNDFjOGRiOWQxZjEyY2YzYTNhMzExMzQ0NzcxYjA3MDEwMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTMyNTksMTAgKzMyNTksMzAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNl
IEluOiB7CisgICAgY2FzZSBJbkJ5SWQ6IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRl
cm1pbmUgd2hlbiB0aGUgcHJvcGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJh
Y3QKICAgICAgICAgLy8gdmFsdWUgaW5mb3JtYXRpb24uCiAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OworICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QpOworICAgICAgICBz
ZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIEluQnlWYWw6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgcHJv
cGVydHkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgY29u
c3RhbnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNT
dHJpbmcoKSkgeworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhj
b25zdGFudCk7CisgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmlu
Zy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAgICAgaWYgKGltcGwgJiYgaW1wbC0+
aXNBdG9taWMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBjYW4gZGV0ZXJtaW5lIHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2Vk
IG9uIGFic3RyYWN0CisgICAgICAgIC8vIHZhbHVlIGluZm9ybWF0aW9uLgorICAgICAgICBjbG9i
YmVyV29ybGQoKTsKKyAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0KTsK
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCAzODc0ZmNjNWIzNmRkOTQyNzVhYjI1MzI2OTU1MGMxMzIzOTRl
M2Q1Li4xMDc3NjQ5MjhiMzE2Mjc1ZTQ0NWI3YTRmMTE4NDI0MmE3MWE0MmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM2Mywx
MSArNjM2MywyMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdG9fb2JqZWN0KTsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2Ugb3BfaW46IHsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfaW4pIC0g
MV0udS5hcnJheVByb2ZpbGUpOworICAgICAgICBjYXNlIG9wX2luX2J5X3ZhbDogeworICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rp
b25bT1BDT0RFX0xFTkdUSChvcF9pbl9ieV92YWwpIC0gMV0udS5hcnJheVByb2ZpbGUpOwogICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluLCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCkpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbik7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBv
cF9pbl9ieV9pZDogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV9pZCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXgg
NWNlZTY1YjY4NDNlY2E1MDg4ZWQxYTlhOTEwOTRmMzQwNTdhYWE0NC4uZGFkYzkyZDg2N2U0YzQ0
YTM0NjJkOGQ2ZGFiNjQ1ODA3NWFjZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM2LDcgKzIzNiw4IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjCiAgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAgY2FzZSBvcF9pbjoKKyAgICBjYXNlIG9w
X2luX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3Bl
OgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJs
ZV9sZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGFkNjIzNjQ3YTc3MDQwYzBkM2I4MjZjZGMxYTM3MGMxYTIzYjliZGMuLjU1MmVkZWZhZTUyYjg5
ODk5ODA2MTg3ZWE5MWQyNzE3NWRmYzY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC02MTksNyArNjE5LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJk
VmFyYXJnczoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgotICAgIGNhc2UgSW46CisgICAgY2FzZSBJ
bkJ5VmFsOgorICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CiAgICAg
Y2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
NzM3NDE4NTY2N2UwYmRiNzg3YTgzYjcwMmNiMTg5NTliNTA2OWQwMS4uYjdlZGMwNjBmNDM2Mjkz
YWNhNDk4ODgzM2VhOTQ2MjBjNTcyY2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTYxNiw2ICs2MTYsMjMg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEluQnlWYWw6
IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBwcm9wZXJ0eSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgY29uc3Rh
bnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0gYXNTdHJpbmcoY29uc3RhbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW1wbCAmJiBpbXBsLT5pc0F0b21pYygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KHN0YXRpY19jYXN0
PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JbkJ5SWQoaWRlbnRpZmllck51bWJlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKICAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNG
dWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNC
aWdJbnQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA5NzRkOTcxMzY2ZmZkOGI3OTc4NmZiYjI2ZGVkM2FjMjVi
Njg3ZmRhLi40MTYyMTBhOTBjZWZiMGQ4M2Q5MGIxNTQ5YTFmZWMwMjdjZDk1ZTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTMsNyArMTkzLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yOgogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6Ci0gICAgY2FzZSBJbjoKKyAgICBj
YXNlIEluQnlWYWw6CisgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToK
ICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAwMTAxZDM3OWJjZDZmNzQ1ZTcyYTg4ZWMyMTlm
YmNmMzI5ZTM4YTliLi45YTFkYzEzNmQwMTZlZGFhMmFmMGEzNjBlZWQ3YmYzZTIwNjczYWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE0Njks
NyArMTQ2OSwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBJbjogeworICAgICAgICBjYXNlIEluQnlJZDogeworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSW5CeVZhbDogewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAg
Y29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA1
ZTVhN2E4NzUyNDQyNDFiNTI2YTlmMjRiNGZmNDBjZTk4ODViZjYxLi41ZmQ1MGI4YzdmMDFlZTM2
ZTFiMjczYWFjMjNhMGM4NjIyNzgzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjY1LDI2ICsyNjUsOSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9nZXRCeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRC
eUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1
dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxp
bmtCdWZmZXIpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvID0gKm1faW5zW2ldLm1fc3R1
YkluZm87Ci0KLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2lu
c1tpXS5tX2p1bXApOwotICAgICAgICBpbmZvLnBhdGNoLnN0YXJ0ID0gc3RhcnQ7Ci0KLSAgICAg
ICAgcHRyZGlmZl90IGlubGluZVNpemUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihtX2luc1tpXS5tX2RvbmUpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5saW5lU2l6ZSA+PSAwKTsKLSAgICAgICAgaW5mby5wYXRjaC5pbmxpbmVTaXplID0gaW5saW5l
U2l6ZTsKLQotICAgICAgICBpbmZvLnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxM
b2NhdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAg
ICAgICAgICBzdGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1f
aW5zW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmNhbGwoKSkpOwotCi0gICAgICAgIGluZm8ucGF0
Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoU3RhcnQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKAotICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihtX2luc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJl
bCgpKSk7Ci0gICAgfQotICAgIAogICAgIGF1dG8gbGlua0NhbGxUaHVuayA9IEZ1bmN0aW9uUHRy
PE5vUHRyVGFnPih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMp
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDA1MGViN2MxNmY2ZGI5MDQ0
ODliZDJiNzg2Y2QzZmQxZjAyOTQ1OWUuLmMxN2IwMzIxMTQ4OGJmODU5YmU1NTUwNGUyZWFiMGFk
ZmE0MzQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTc2LDIzICs3Niw2IEBAIHN0cnVjdCBDYWxsTGlua1JlY29yZCB7CiAgICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX2Z1bmN0aW9uOwogfTsKIAotc3RydWN0IEluUmVjb3JkIHsK
LSAgICBJblJlY29yZCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCi0gICAgICAgIFNsb3dQYXRoR2VuZXJhdG9y
KiBzbG93UGF0aEdlbmVyYXRvciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQotICAgICAg
ICA6IG1fanVtcChqdW1wKQotICAgICAgICAsIG1fZG9uZShkb25lKQotICAgICAgICAsIG1fc2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhHZW5lcmF0b3IpCi0gICAgICAgICwgbV9zdHViSW5mbyhz
dHViSW5mbykKLSAgICB7Ci0gICAgfQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fanVtcDsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwotICAgIFNs
b3dQYXRoR2VuZXJhdG9yKiBtX3Nsb3dQYXRoR2VuZXJhdG9yOwotICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBtX3N0dWJJbmZvOwotfTsKLQogLy8gPT09IEpJVENvbXBpbGVyID09PQogLy8KIC8vIERG
Rzo6SklUQ29tcGlsZXIgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgSklUIGNvZGUgZnJv
bSB0aGUgZGF0YWZsb3cgZ3JhcGguCkBAIC0yMDksMTEgKzE5MiwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVu
ZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkSW4oY29uc3QgSW5SZWNvcmQmIHJlY29yZCkKKyAg
ICB2b2lkIGFkZEluQnlJZChjb25zdCBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgbV9pbnMuYXBwZW5kKHJlY29yZCk7
CisgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWRkSlND
YWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0No
ZWNrLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5k
KEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pKTsK
QEAgLTM1OSw4ICszNDIsOCBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBl
cnMgewogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZEdlbmVyYXRvcj4s
IDQ+IG1fZ2V0QnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5C
eUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwotICAgIFZlY3RvcjxJblJlY29yZCwgND4gbV9pbnM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVj
dENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RUYWls
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggNGQ5N2NkM2FiMTI3ZDMwYmJmNDZhYzczOWVkYmYxYmVhODVjMTMwZC4u
ZjZlMTBlYjNkYjMyMmFjZDBjM2FjNDU1NWI5ZDVjYjRlZGE5ODgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc0Myw2ICs3NDMsMTUgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBzZXRPcChTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgpOwogICAgICAgICBtX29wSW5mbyA9
IGZhbHNlOwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvSW5CeUlkKHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBJbkJ5VmFsKTsKKyAg
ICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSW5CeUlkKTsKKyAgICAgICAgY2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2UoKSk7CisgICAgICAgIG1fb3BJbmZvID0gaWRlbnRpZmllck51bWJlcjsKKyAg
ICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KICAgICAKICAgICBKU1Zh
bHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTAxMCw2ICsxMDE5LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyU2V0
dGVyQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIEluQnlJZDoK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6
CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKQEAg
LTE5NjcsNyArMTk3Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBj
YXNlIEdldFZlY3Rvckxlbmd0aDoKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5
VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggZmVlYzI1ZTU3YzNiYmRkYTQ5YTA5MTFjYWE4MTg4N2U3ZWM0MGIx
ZS4uNGZiYTkwZGE3NTdkODZlMTYxNmRhMzUyMjYwZjhlYmMzNzNkZmE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzY5LDcgKzM2OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N0cmluZ09iamVj
dCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAot
ICAgIG1hY3JvKEluLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhJbkJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhJbkJ5SWQsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFByb2ZpbGVUeXBlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHJvZmlsZUNvbnRyb2xGbG93LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU2V0RnVu
Y3Rpb25OYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IDRiY2IwMmM2MDg1Y2ExMDA2ODVmM2Y1OTE3ZjM4NTVmMWExY2I0MzEuLjIyODY0M2IyMDdhMzE1
ODc0NjZmMmYwNzMwMGZhMzAxNWI5ODc5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05
ODAsNyArOTgwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbjoKKyAgICAgICAgY2FzZSBJbkJ5VmFs
OgorICAgICAgICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0Jv
b2xlYW4pOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZjE4M2FlOTQ5ZTQ0NTdlNmIzOTRiNjFkOGU0ZjQ3
ZjMyNmQ0OWU5Yy4uODJlZWQ2YTY4ZGFkOGM1M2MxZjdiNjFkMzhkNGQyYTNjODdjYjY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTMzMiw3
ICszMzIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6
CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKLSAgICBjYXNl
IEluOgorICAgIGNhc2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093
blByb3BlcnR5OgogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDNmOTM0ZTNiMTFkODFjOGZiYmIyMjFiNzY3ZTAxYTM0MDQ1MmMxY2EuLmZlOGJl
Mzc0YTBmYmYwYzAxNDBkZjIzMTgwMTAwOTA0OTZiMWI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDU2LDY3ICsxMDU2LDUy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlLCBQYXlsb2FkV29yZCk7CisKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0gICAgCi0gICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1p
Y0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KCptX2ppdC52bSgpKSkgewotICAgICAgICBpZiAoc3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0
b21pYygpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkU3R1YkluZm8oQWNjZXNzVHlwZTo6SW4pOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAganVt
cCA9IG1faml0LnBhdGNoYWJsZUp1bXAoKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBkb25lID0gbV9qaXQubGFiZWwoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
U2luY2UgdGhpcyBibG9jayBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIHJlc3VsdCBvZiBzdHJp
bmctPnRyeUdldFZhbHVlSW1wbCgpIGlzIGF0b21pYywKLSAgICAgICAgICAgIC8vIHdlIGNhbiBj
YXN0IGl0IHRvIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHNhZmVseS4KLSAgICAgICAgICAgIGF1
dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAganVtcC5tX2p1bXAs
IHRoaXMsIG9wZXJhdGlvbkluT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0dWJJbmZvLCBiYXNlR1BSLAotICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0dWJJbmZvLT5jYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAg
ICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJh
c2VHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nh
c3Q8aW50OF90PihyZXN1bHRHUFIpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNH
UFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudmFsdWVUYWdHUFIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNo
LmJhc2VUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNUYWdHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpOwotI2VuZGlmCi0gICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJl
Z2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKKyAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgICAg
ICBtX2ppdC5hZGRJbihJblJlY29yZChqdW1wLCBkb25lLCBzbG93UGF0aC5nZXQoKSwgc3R1Yklu
Zm8pKTsKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKIAotICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLAorICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgIHJlc3VsdFJlZ3MsIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCkpKTsKIAotICAgICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CiAKKyAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgbm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgCi0gICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIAorCiAgICAgYmFzZS51c2UoKTsKICAgICBrZXkudXNl
KCk7Ci0gICAgICAgIAorCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KAotICAgICAgICBvcGVyYXRpb25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlc3VsdEdQUikpLAotICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkluQnlWYWwsIHJlc3VsdFJlZ3MsIGJhc2VHUFIsIHJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDBi
NzkxMmRjY2MyNWMzNGNlYzVlZGE0NzQyNWU5NjQ0ZjViYWY3NzcuLjQ2MTc0Yzk0YTQ5ZTNjNzhl
OGE1NWE4YjgzYmJiMDQyOGJhZTMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTczNSw3ICs3MzUsOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlJZChOb2RlKiwgQWNjZXNzVHlwZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNvbXBpbGVJbihOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlSW5CeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKE5v
ZGUqKTsKICAgICAKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVs
bE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCk7CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTm9kZSogYnJhbmNoTm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCA5ZjEzMWQ5MTRiMWU1MDAyYjU0NjZjMTc0YTc4NzhlNmE2NzUzNGUyLi4z
ZWZiN2I3ZTQ1MDgxZTY4ZTVhZDhhMGU0YzViZGIyYTQxOGFkMzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3
NTEsOCArMzc1MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
Ci0gICAgY2FzZSBJbjoKLSAgICAgICAgY29tcGlsZUluKG5vZGUpOworICAgIGNhc2UgSW5CeUlk
OgorICAgICAgICBjb21waWxlSW5CeUlkKG5vZGUpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSW5CeVZhbDoKKyAgICAgICAgY29tcGlsZUluQnlWYWwobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTJjYWEwMDNhZmJkNmZmYTdi
Y2RlMTgyZTQwYTI3N2ZjMzIyNjRhYS4uOGQzODY5NzdjYTgzYjI0Njg5ODQ5MTFhMzZmMmE5YTkx
NDI1ODg5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC00MzAxLDggKzQzMDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2V0RnVuY3Rpb25OYW1lKG5vZGUp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSW46Ci0gICAgICAgIGNvbXBpbGVJbihub2Rl
KTsKKyAgICBjYXNlIEluQnlJZDoKKyAgICAgICAgY29tcGlsZUluQnlJZChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEluQnlWYWw6CisgICAgICAgIGNvbXBpbGVJbkJ5VmFsKG5v
ZGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAwNjg2M2Qw
ZTIyZDY0ZTZhMWIxMzM3M2JiMTNiMGI3NDNhNWNjMmVkLi42Yjk1MTM0OGVkMjQyYjRiZDAyNjcz
NzM3ZmM1ZDRiMTc2OTk3NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yMDUsNyArMjA1LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93
U3RhdGljRXJyb3I6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKLSAgICBjYXNlIEluOgorICAgIGNh
c2UgSW5CeVZhbDoKKyAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5Ogog
ICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CiAgICAgY2FzZSBNYXBIYXNoOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDEyYzkzMzg2YWZhNWZm
MzNjODNhN2E2MDc3NTAwYjJhYmEzYjkyNjcuLmU2ZGVjZmFlZjk0M2E0YWVmZWFlZmNjMmU5Zjc4
MGFiZWY4ZDc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTcwOCw4ICs3MDgsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlJZChB
Y2Nlc3NUeXBlOjpHZXREaXJlY3QpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SW46Ci0gICAgICAgICAgICBjb21waWxlSW4oKTsKKyAgICAgICAgY2FzZSBJbkJ5SWQ6CisgICAg
ICAgICAgICBjb21waWxlSW5CeUlkKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBJbkJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUluQnlWYWwoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhh
c093blByb3BlcnR5KCk7CkBAIC05NjY5LDg3ICs5NjcyLDcwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgY29tcGlsZUluKCkKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKCkK
ICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7Cisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
SW5CeVZhbCksIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAgfQogCisgICAgdm9pZCBjb21waWxlSW5CeUlk
KCkKKyAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIEVkZ2UgYmFz
ZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwoYmFzZSk7
Ci0gICAgICAgIGlmIChKU1N0cmluZyogc3RyaW5nID0gbm9kZS0+Y2hpbGQyKCktPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNTdHJpbmcqPih2bSgpKSkgewotICAgICAgICAgICAgaWYgKHN0cmluZy0+
dHJ5R2V0VmFsdWVJbXBsKCkgJiYgc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKS0+aXNBdG9taWMo
KSkgewotICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBzdHIgPSBiaXR3aXNlX2Nh
c3Q8VW5pcXVlZFN0cmluZ0ltcGwqPihzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpKTsKLSAgICAg
ICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50
KEludDY0KTsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
Y2VsbCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotCi0g
ICAgICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKLQot
ICAgICAgICAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KVtub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworCisgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBS
ZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KKyAgICAg
ICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKworICAg
ICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0
IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6
Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHVpZCwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwK
KyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAg
ICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBj
YWxscy4gV2UgZG9uJ3QgbmVlZCBhIEpTIGV4Y2VwdGlvbkhhbmRsZSBiZWNhdXNlIHdlIGRvbid0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBQcm94eSBvYmplY3RzLgotICAgICAg
ICAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMg
PSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFd
LmdwcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFt
c1swXS5ncHIoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
PmFkZFN0dWJJbmZvKEFjY2Vzc1R5cGU6OkluKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1
bHRHUFIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnRoaXNHUFIg
PSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpQYXRj
aGFibGVKdW1wIGp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wLm1fanVtcC5saW5rKCZq
aXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluT3B0
aW1pemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGJhc2VHUFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Ry
KSkuY2FsbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGp1bXApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5zdGFydCA9
IHN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf
dCBpbmxpbmVTaXplID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGxpbmtC
dWZmZXIubG9jYXRpb25PZjxOb1B0clRhZz4oZG9uZSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlubGluZVNpemUgPj0gMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmlubGlu
ZVNpemUgPSBpbmxpbmVTaXplOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlv
biA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8Tm9QdHJUYWc+KHNsb3dQYXRoQ2FsbCkpOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0
aFN0YXJ0ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIu
bG9jYXRpb25PZjxOb1B0clRhZz4oc2xvd1BhdGhCZWdpbikpOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1p
emUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih1aWQpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5y
ZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBv
aW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
Ci0KLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25HZW5lcmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KIAogICAg
IHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmgKaW5kZXggYzFjMmQ0ZTk1N2RmZWFlNzEyMDM5YzQ1Y2JlN2I5NWM2MmE4MjVjMC4uNjg0ZTgx
M2RjNGE0YTgzYzY3NTEwMzBlMGJjN2I2NmI5YmYyYTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKQEAgLTUwLDkgKzUwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KE9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSkg
XAotICAgIG1hY3JvKE9wZXJhdGlvbkluT3B0aW1pemUpIFwKLSAgICBtYWNybyhPcGVyYXRpb25J
bikgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVyaWNJbikgXAorICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZCkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKKyAgICBtYWNy
byhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRT
dHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkgXApAQCAtNjcsNyArNjgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVp
bGRMaXN0KSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCi0gICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkKKyAg
ICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKQog
CiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAxOTlkODFhOGEzNWEzNGIzMTJlZjMxNTZmMmZkOGQzNDY0NzM3ZGJlLi5kOWRiMDYyOWE0Mzhj
MTI5ZDU3YmZhMzgzMTY2OWViOGFmMTU2OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC03OCwxMSArNzgsNiBAQCBKSVQ6OkpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCkKICAgICAsIG1faW50ZXJwcmV0
ZXIodm0tPmludGVycHJldGVyKQogICAgICwgbV9sYWJlbHMoY29kZUJsb2NrID8gY29kZUJsb2Nr
LT5udW1iZXJPZkluc3RydWN0aW9ucygpIDogMCkKICAgICAsIG1fYnl0ZWNvZGVPZmZzZXQoc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICwgbV9nZXRCeUlkSW5kZXgo
VUlOVF9NQVgpCi0gICAgLCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4KFVJTlRfTUFYKQotICAgICwg
bV9wdXRCeUlkSW5kZXgoVUlOVF9NQVgpCi0gICAgLCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleChV
SU5UX01BWCkKLSAgICAsIG1fY2FsbExpbmtJbmZvSW5kZXgoVUlOVF9NQVgpCiAgICAgLCBtX3Bj
VG9Db2RlT3JpZ2luTWFwQnVpbGRlcigqdm0pCiAgICAgLCBtX2NhbkJlT3B0aW1pemVkKGZhbHNl
KQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsaW5nKGZhbHNlKQpAQCAtMjc3LDcgKzI3Miw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlT2Zmc2V0OwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoaW4pCisgICAgICAgIERFRklORV9TTE9XX09Q
KGluX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobGVzcykKICAgICAgICAgREVGSU5F
X1NMT1dfT1AobGVzc2VxKQogICAgICAgICBERUZJTkVfU0xPV19PUChncmVhdGVyKQpAQCAtMzQx
LDYgKzMzNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX2JlbG93KQogICAgICAgICBERUZJTkVfT1Aob3BfYmVsb3dlcSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9pbl9i
eV9pZCkKICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZF9wcm90b19sb2FkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoK
QEAgLTQ3OCw2ICs0NzQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgIG1fZ2V0QnlJZEluZGV4ID0gMDsKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsK
ICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CisgICAgbV9pbkJ5SWRJbmRleCA9IDA7CiAgICAgbV9p
bnN0YW5jZU9mSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAg
ICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKQEAgLTUyMSw2ICs1MTgsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF90cnlfZ2V0X2J5X2lkKQorICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaW5fYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfdW5zZXQ6CkBAIC02MDAsNiArNTk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2dldEJ5SWRJbmRleCA9PSBtX2dldEJ5
SWRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9
PSBtX2dldEJ5SWRzV2l0aFRoaXMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3B1dEJ5
SWRJbmRleCA9PSBtX3B1dEJ5SWRzLnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5
SWRJbmRleCA9PSBtX2luQnlJZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3Rh
bmNlT2ZJbmRleCA9PSBtX2luc3RhbmNlT2ZzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2stPm51
bWJlck9mVmFsdWVQcm9maWxlcygpKTsKQEAgLTg0Miw2ICs4NDEsNyBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHMsIHBh
dGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMs
IHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRj
aEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZl
cik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIp
OwogCiAgICAgaWYgKG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCAxNTZmMWI1ODEyOWY3ZjZjZjc2ZjEzOTVhNTNhOWE5ZDIwOGRiZmQ0
Li5iOTZhYTIyNDMzYWFiZGE1MGVhOGRhOWYzYTk5NWQ5MDRiNzk3OTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTUwMCw2ICs1MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9s
YXp5X3JlZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjdGlvbiopOwpAQCAtNjExLDYgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtODY1LDYg
Kzg2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVy
YXRvcj4gbV9nZXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVy
YXRvcj4gbV9wdXRCeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4gbV9p
bkJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5j
ZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGls
YXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29t
cGlsYXRpb25JbmZvOwpAQCAtODc4LDEyICs4ODEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwogICAg
ICAgICBMYWJlbCBtX2V4Y2VwdGlvbkhhbmRsZXI7CiAKLSAgICAgICAgdW5zaWduZWQgbV9nZXRC
eUlkSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXg7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4OwotICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNl
T2ZJbmRleDsKLSAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXg7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXg7CisgICAgICAgIHVuc2lnbmVkIG1fZ2V0
QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRo
aXNJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsg
VUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07
CisgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAg
ICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OworICAgICAg
ICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgCiAg
ICAgICAgIExhYmVsIG1fYXJpdHlDaGVjazsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmtC
dWZmZXI+IG1fbGlua0J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOGYxN2U5ZTdhMzlkZDZhZDA4NmMw
MWEzNGUyYzE4MDg0YjkyM2YxNC4uMmY5Njk3NzM5YzBmOGU5YzExYWUxOTdmMzQ0NTRmODY4ZDFi
YTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKQEAgLTE2Niw2ICsxNjYsMjEgQEAgVl9KSVRPcGVyYXRpb25fRVNz
aUpKSSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVRJbkJ5SWRHZW5lcmF0
b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRS
ZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQoreworICAgIC8vIEZJWE1FOiBXZSBhcmUgbm90IHN1cHBv
cnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KKyAgICBVTlVTRURfUEFSQU0o
cHJvcGVydHlOYW1lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2
YWx1ZS50YWdHUFIoKSk7Cit9CisKK3ZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgZ2VuZXJhdGVGYXN0Q29tbW9uKGpp
dCwgSW5saW5lQWNjZXNzOjpzaXplRm9yUHJvcGVydHlBY2Nlc3MoKSk7Cit9CisKIEpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4LAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMDdhMDhjODVjMjNj
MjIzMDVjM2FhNDVjZjQ1MzdiZDljNzY1YjQwNC4uYjc0N2I4Njg5YWQ5Mzg0NGFiNzg1MTQ1YzA4
NDM1ZjNkNjhlOGQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQzLDYgKzE0MywxNyBAQCBjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtpbmQgbV9w
dXRLaW5kOwogfTsKIAorY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgeworcHVibGljOgorICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQorCisgICAg
SklUSW5CeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgVW5pcXVlZFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7
Cit9OworCiBjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBiZjE2
NzdlMjJjNzNlMjQ2NDFjYmU4ZTBlMzllNTUwNjQwOTdiZTExLi43NmQ3MmUyOTczOWI2MDEwNTNl
ZjUyMzBhN2RkMDAwYjY2ZWZhNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTM3Nyw2NCArMzc3LDg4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBTCiAgICAgfSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEpTQ2VsbCogYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
LSAgICAKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSgqdm0pOwogCi0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBi
YXNlKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1
ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsdWUpKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9Ci0gICAgCi0gICAgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKIAotICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkp
OwotICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5PcHRpbWl6ZSwgYmFzZS0+Y2xhc3NJ
bmZvKCp2bSksIGlkZW50KSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKLSAgICBib29sIHJlc3VsdCA9
IGFzT2JqZWN0KGJhc2UpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAg
IFJFTEVBU0VfQVNTRVJUKGFjY2Vzc1R5cGUgPT0gc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwotICAg
IAotICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGV4ZWMtPmNvZGVCbG9jaygpLCBh
c09iamVjdChiYXNlKS0+c3RydWN0dXJlKCkpKQotICAgICAgICByZXBhdGNoSW4oZXhlYywgYmFz
ZSwgaWRlbnQsIHJlc3VsdCwgc2xvdCwgKnN0dWJJbmZvKTsKLSAgICAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9w
ZXJhdGlvbkluQnlJZCwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBrZXkpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKLSAgICAKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwogCi0gICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFi
YXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQorICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKIAotICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBrZXkpOwotICAgIExPR19JQygoSUNF
dmVudDo6T3BlcmF0aW9uSW4sIGJhc2UtPmNsYXNzSW5mbygqdm0pLCBpZGVudCkpOwotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdChiYXNlKS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSk7CisgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBp
ZGVudCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihiYXNlT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUu
aXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
SW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKworICAgIExPR19JQygoSUNFdmVudDo6
T3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50
KSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIGJvb2wgZm91bmQgPSBiYXNlT2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nKGV4ZWMtPmNvZGVCbG9jaygpLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pKSkKKyAgICAgICAgcmVwYXRjaEluQnlJRChleGVjLCBiYXNlT2JqZWN0LCBpZGVudCwg
Zm91bmQsIHNsb3QsICpzdHViSW5mbyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZm91bmQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IGtleSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUga2V5KQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChl
eGVjLCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDdhMzI2NjllNGUzZGVkMjQyYmY3Y2U1MDRj
ODcwMzAxNjU2OWY0NWMuLjYwNzFlNWRhYjRkM2EyNTY3ODViNTRkMTRiNTgxZGUxYWNjZWQyNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zNzEsOSAr
MzcxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbkJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5P
cHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1ZWRT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCosIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5C
eVZhbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3ZTVk
MTA3YWQyMjI1OWVhMjRmM2ZmNWE1YThmMWE1YjY3MTdlYjcwLi5lNjM2ZjcxMjA5MGZmNTA5OGVk
NjE0M2VhOWI4YzlhMmY4MDk3NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNzUxLDYgKzc1MSw0MiBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIHJlZ1QwKTsKKworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOworCisgICAgSklUSW5CeUlkR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeUlkcy5h
cHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKKworICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21faW5CeUlkSW5k
ZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcs
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZh
ckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYg
KCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGRiMmE0NzJlODUwYTU2NmUw
N2EwMjNjZjQzMzA0MjIyMTgxMTVkNjcuLjYwNDFiYzRlMmQ3NmMzYzU1ZTMwNzA0MmU5NWUxNGY4
MGNiN2IyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNzcxLDYgKzc3MSw0MSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisKKyAgICBlbWl0TG9hZChiYXNlLCByZWdU
MSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7
CisKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rp
b24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGlk
ZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeUlkcy5hcHBlbmQoZ2Vu
KTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CisKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKworICAgIEpJVElu
QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBpZGVudC0+aW1wbCgpKTsK
KworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisK
IHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMTQzNzNiYmIyNDY3MThlOTQ3ZGVmNmU5MmUwMDI1
MGFjNGNmZGFlMS4uODVlYzBiMjA0ZDI3NmYyOTEzMWM5YTg4ZGY5ZjNkYzBlMTA3MjYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02MDUsOCArNjA1LDggQEAgdm9p
ZCByZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY28KICAgICB9CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJ
RCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpA
QCAtNjMxLDYgKzYzMSwyNiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVB
Y2Nlc3NDaGFpbjsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9u
U2V0OwogICAgICAgICBpZiAod2FzRm91bmQpIHsKKyAgICAgICAgICAgIElubGluZUNhY2hlQWN0
aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOworICAgICAgICAgICAgaWYgKGFj
dGlvbiAhPSBBdHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uOwor
CisgICAgICAgICAgICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KKyAgICAgICAgICAgIGlmIChz
dHViSW5mby5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICYm
IHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGJhc2UKKyAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CisgICAgICAgICAgICAgICAgICAg
IExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCkpOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQ
cm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYoY29kZUJsb2NrLCBzdHJ1Y3R1
cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlKSB7CiAgICAgICAgICAgICAgICAgYm9v
bCB1c2VzUG9seVByb3RvOwogICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0g
UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGJhc2UsIHNsb3QsIHVzZXNQb2x5UHJvdG8pOwpAQCAtNjY0LDcgKzY4NCw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluKAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsKIAogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKLSAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICB2bSwg
Y29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5N
aXNzLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZhbGlkT2Zmc2V0LCBzdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogCiAg
ICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ss
IGlkZW50LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtNjcyLDEwICs2OTIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbigKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwot
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAg
ICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTY4NCwxMyArNzAxLDE0IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluKAogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNh
Y2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hJbigKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgd2Fz
Rm91bmQsCi0gICAgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCit2b2lkIHJlcGF0Y2hJbkJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZU9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sIHdhc0ZvdW5k
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
aWYgKHRyeUNhY2hlSW4oZXhlYywgYmFzZSwgaWRlbnQsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5m
bykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGV4
ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRp
b25Jbik7CisKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZXhlYywgYmFzZU9iamVjdCwgcHJvcGVy
dHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24oKSwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMjM2LDkgKzEyNTQsMTAgQEAgc3Rh
dGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgp
LCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKLXZvaWQgcmVzZXRJbihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVzZXRQYXRj
aGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbigpLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgcmVzZXRJbnN0YW5jZU9m
KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKaW5kZXggYWEzMmMyNmUxYjIyODRjZTM1YmQ3ZWFiNzBmYzczMzJjN2I5NmZkMC4uMGYzNjZk
ZGQ4Y2ViMzYwMmNlZmIxMDExZDYwMGM3ZWY0OGQyYTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBidWlsZEdldEJ5SURMaXN0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QKIHZv
aWQgYnVpbGRHZXRCeUlEUHJvdG9MaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBy
ZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRL
aW5kKTsKIHZvaWQgYnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoSW5CeUlEKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYs
IENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtEaXJlY3RGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZv
JiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAg
LTU0LDcgKzU0LDcgQEAgdm9pZCBsaW5rVmlydHVhbEZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0lu
Zm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8m
LCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIEdldEJ5SURLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW4oU3RydWN0dXJlU3R1YkluZm8mKTsKK3Zv
aWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVz
ZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDJiYzlmZWJmZWMzODU3ODI2N2MwNjBjOWY2MzhjYjExODU1ODFjZGEuLjc2NDg3MDU5Y2Q3
NjRjMGE3ZmNlNGFhN2UxMDZkN2ZmY2VmN2IyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1MDcsMTAgKzE1MDcs
MTYgQEAgX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
c19mdW5jdGlvbl9sZW5ndGgpCiAKIAotX2xsaW50X29wX2luOgorX2xsaW50X29wX2luX2J5X2lk
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbikK
LSAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaW5fbGVuZ3RoKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2luX2J5X2lkKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pbl9ieV9pZF9s
ZW5ndGgpCisKKworX2xsaW50X29wX2luX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5fYnlfdmFsKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9pbl9ieV92YWxfbGVuZ3RoKQogCiAKIF9sbGludF9vcF90cnlfZ2V0X2J5X2lkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQppbmRleCA2MjY5ODlkNTI2ZmFlYjAyYTg1YjIwZTk1ZDZkY2I5NjhhYmIwYWQwLi4z
ZWVhNTRkNjQ4NjY3OWQwYjRlMDM0ZDIzNDdlMDYwMmZmNzRiZGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
MTU1Miw2ICsxNTUyLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1
dF9ieV9pZF9sZW5ndGgpCiAKKwogbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCBzY3JhdGNoKQogICAgIHN0b3JlcSByZXN1
bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU2ZjAzYjY1Yjc1ZDAwMjUyZjA0M2VjOTkzMWZiYmE1
MDRiOTNjZGUuLjVkNzdkYjE5Yjc2MmVmNzg0MTQ2ODhlZGM3MWM4OWY5ZjdmNmRmZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC02
MjMsNyArNjIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEluTm9k
ZTo6SW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9w
Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcF9pbl9ieV92YWwsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggODRkZDNkMmE0NTE2YTE4OGYwZjk4YTAxZDUw
MTAwNGNkYzcyNTY2My4uMjUzZGI1ZTRhYWM2MTE0ZTMwNmY5ZDRmMjA5NGE0YjdjM2YxYTU3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC02NDgsMTAgKzY0OCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVu
Y3Rpb24pCiAgICAgUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKE9QX0MoMikuanNW
YWx1ZSgpKSkpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaW5fYnlfdmFsKQogewogICAgIEJFR0lOKCk7Ci0gICAgUkVUVVJOKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9Q
X0MoMykuanNWYWx1ZSgpLCBwY1s0XS51LmFycmF5UHJvZmlsZSkpKTsKKyAgICBSRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgp
LCBPUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5hcnJheVByb2ZpbGUpKSk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCkKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5p
c09iamVjdCgpKQorICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihl
eGVjLCBiYXNlVmFsdWUpKTsKKworICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZh
bHVlKS0+aGFzUHJvcGVydHkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IGRiMWVlYTk1ZDQ4YzNlNDhhOTVmZjg2YzZjZmJjYTQ1NzliNDI1YmEuLjI3YzM5NzIz
OWYwMjZkNjU2ZmIxMmE0NzcwM2UzNDcyOTVhMDBmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC04NSw3ICs4NSw3IEBAIEFMV0FZ
U19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVT
cGVjaWFsaXphdGlvbktpbmQKICAgICByZXR1cm4gcGFkZGluZzsKIH0KIAotaW5saW5lIGJvb2wg
b3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm9wTmFtZSwg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxscHRyKQoraW5saW5lIGJvb2wgb3BJbkJ5
VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0z
MDYsNyArMzA2LDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW4pOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zdHJjYXQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmlt
aXRpdmUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTgzOTE0YjQxZDVhMzBmYmE3Y2MyYWUzN2IzZTFiZGFhNTRiOWJlLi40MzgxMmE3
YjYyMzAwOTAxMDRlOGMxYmMzODdjZmI2ODVlYmNiOGNjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTA1
LTE5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIEpTQyBzaG91bGQgaGF2ZSBjb25zaXN0ZW50IEluQnlJZCBJQworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW4tYnktaWQtYWNjZXNz
b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAocHJvdG9HZXR0ZXIuX19wcm90b19fLmdldCBoZWxsbyk6CisgICAgICAgIChwcm90b1Nl
dHRlci5fX3Byb3RvX18uc2V0IGhlbGxvKToKKyAgICAgICAgKGkuc2hvdWxkQmUudGVzdC5nZXQg
aGVsbG8pOgorICAgICAgICAoaS5zaG91bGRCZS50ZXN0LnNldCBoZWxsbyk6CisgICAgICAgICog
c3RyZXNzL2luLWJ5LWlkLWFpLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9pbi1ieS1pZC1jdXN0b20tYWNjZXNzb3JzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAg
KHRlc3QyKToKKyAgICAgICAgKiBzdHJlc3MvaW4tYnktaWQtY3VzdG9tLXZhbHVlcy5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3MvaW4tYnktaWQtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoc2VsZkNhY2hlKToKKyAgICAgICAgKiBzdHJlc3MvaW4t
YnktaWQtcHJveHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChoYW5kbGVyLmhhcyk6CisKIDIwMTgtMDUtMTggIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVjay4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2luLWJ5LWlkLWFjY2Vzc29ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzhkZDZkN2EzYmYx
Yjg2ZDRhZTk0MzcwOWI2NDViZDY2NDdlNzcwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvaW4tYnktaWQtYWNjZXNzb3JzLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICB2YXIgbmFtZSA9ICJoZWxsbyI7CisgICAgcmV0
dXJuIG5hbWUgaW4gb2JqZWN0OworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBwcm90b0dldHRl
ciA9IHsKKyAgICBfX3Byb3RvX186IHsKKyAgICAgICAgZ2V0IGhlbGxvKCkgeworICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0KK307Cit2YXIgcHJv
dG9TZXR0ZXIgPSB7CisgICAgX19wcm90b19fOiB7CisgICAgICAgIHNldCBoZWxsbyh2YWx1ZSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0K
K307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCh7
CisgICAgICAgIGdldCBoZWxsbygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0
Iik7CisgICAgICAgIH0KKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7fSksIGZh
bHNlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHByb3RvR2V0dGVyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUodGVzdCh7CisgICAgICAgIHNldCBoZWxsbyh2YWx1ZSkgeworICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJvdXQiKTsKKyAgICAgICAgfQorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRC
ZSh0ZXN0KHByb3RvU2V0dGVyKSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbi1ieS1pZC1haS5qcyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWFpLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2YTExYWM3MmE1ZDI5MTU5NjFkNjZmOGVkM2E1MTNhMWMwZjVmZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1haS5qcwpAQCAtMCwwICsxLDI2IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgdmFyIG5hbWUgPSAiaGVsbG8i
OworICAgIHJldHVybiBuYW1lIGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIg
cHJvdG8gPSB7CisgICAgX19wcm90b19fOiB7IGhlbGxvOiAyIH0KK307Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdCh7CisgICAgICAgIGhlbGxvOiA0
MgorICAgIH0pLCB0cnVlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHt9KSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKHRlc3QoeworICAgICAgICBoZWxsb3dvcmxkOiA0MywKKyAgICAgICAgb2s6IDQ0Cisg
ICAgfSksIGZhbHNlKTsKKyAgICBzaG91bGRCZSh0ZXN0KHByb3RvKSwgdHJ1ZSk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tYWNjZXNzb3JzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9tLWFjY2Vzc29ycy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTcx
ZWM4ZWI1ZDdlMjNhZjMyNDNiOGYxMWViYTMwZGZmMGRmZmJjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtY3VzdG9tLWFjY2Vzc29ycy5qcwpAQCAtMCwwICsxLDI1
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdDEob2JqZWN0KQoreworICAgIHJldHVybiAiY3Vz
dG9tVmFsdWUiIGluIG9iamVjdDsKK30KK25vSW5saW5lKHRlc3QxKTsKKworZnVuY3Rpb24gdGVz
dDIob2JqZWN0KQoreworICAgIHJldHVybiAiY3VzdG9tQWNjZXNzb3IiIGluIG9iamVjdDsKK30K
K25vSW5saW5lKHRlc3QyKTsKKwordmFyIHRhcmdldDEgPSAkdm0uY3JlYXRlQ3VzdG9tVGVzdEdl
dHRlclNldHRlcigpOwordmFyIHRhcmdldDIgPSB7IF9fcHJvdG9fXzogdGFyZ2V0MSB9OworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QxKHRhcmdldDEp
LCB0cnVlKTsKKyAgICBzaG91bGRCZSh0ZXN0MSh0YXJnZXQyKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUodGVzdDIodGFyZ2V0MSksIHRydWUpOworICAgIHNob3VsZEJlKHRlc3QyKHRhcmdldDIpLCB0
cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLWN1c3RvbS12YWx1
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tdmFsdWVzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY4NDc4MWZjMzU4ZjNjYTZkZTUwY2NjNDhmMzE0ZmYyMTg0YzQzZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1jdXN0b20tdmFsdWVzLmpzCkBAIC0wLDAg
KzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4g
IiQxIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIHRhcmdldDEgPSBSZWdF
eHA7Cit2YXIgdGFyZ2V0MiA9IHsgX19wcm90b19fOiBSZWdFeHAgfTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0KHRhcmdldDEpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZSh0ZXN0KHRhcmdldDIpLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2luLWJ5LWlkLW9wZXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2luLWJ5LWlkLW9w
ZXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWRkMmM0MGUzMTk5YjIwNmYwZjY2Y2I1YjJiMjVmZWRl
ZTk0NWIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW4tYnktaWQtb3BlcmF0
aW9uLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICByZXR1cm4gImhlbGxvIiBpbiBvYmplY3Q7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QoeworICAg
ICAgICBoZWxsbzogNDIKKyAgICB9KSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodGVzdCh7CisgICAg
ICAgIGhlbGxvOiB1bmRlZmluZWQsCisgICAgICAgIHdvcmxkOiA0NAorICAgIH0pLCB0cnVlKTsK
KyAgICBzaG91bGRCZSh0ZXN0KHsKKyAgICAgICAgaGVsbG93b3JsZDogNDMsCisgICAgICAgIG9r
OiA0NAorICAgIH0pLCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHNlbGZDYWNoZShvYmplY3QpCit7
CisgICAgcmV0dXJuICJoZWxsbyIgaW4gb2JqZWN0OworfQorbm9JbmxpbmUoc2VsZkNhY2hlKTsK
KwordmFyIG9iamVjdCA9IHt9Oworb2JqZWN0LmhlbGxvID0gNDI7Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHNlbGZDYWNoZShvYmplY3QpLCB0cnVlKTsKK29i
amVjdC53b3JsZCA9IDQzOworc2hvdWxkQmUoc2VsZkNhY2hlKG9iamVjdCksIHRydWUpOworb2Jq
ZWN0LndvcmxkID0gNDM7CitzaG91bGRCZShzZWxmQ2FjaGUoeyBfX3Byb3RvX186IG9iamVjdCB9
KSwgdHJ1ZSk7CitkZWxldGUgb2JqZWN0LmhlbGxvOworc2hvdWxkQmUoc2VsZkNhY2hlKG9iamVj
dCksIGZhbHNlKTsKK3Nob3VsZEJlKHNlbGZDYWNoZSh7IF9fcHJvdG9fXzogb2JqZWN0IH0pLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbi1ieS1pZC1wcm94eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2luLWJ5LWlkLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNTZiZjJmOGJiODhi
ZjM2NTM4ZDIzMzlkMjgyMGJlNDIyZWNkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbi1ieS1pZC1wcm94eS5qcwpAQCAtMCwwICsxLDQ0IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rp
b24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuICJoZWxsbyIgaW4gb2JqZWN0OworfQorbm9J
bmxpbmUodGVzdCk7CisKK3ZhciBjb3VudCA9IDA7Cit2YXIgdGFyZ2V0ID0gbnVsbDsKK3ZhciBr
ZXkgPSBudWxsOwordmFyIGhhbmRsZXIgPSB7CisgICAgaGFzKHRhcmdldEFyZywga2V5QXJnKSB7
CisgICAgICAgICsrY291bnQ7CisgICAgICAgIHRhcmdldCA9IHRhcmdldEFyZzsKKyAgICAgICAg
a2V5ID0ga2V5QXJnOworICAgICAgICByZXR1cm4ga2V5QXJnIGluIHRhcmdldEFyZzsKKyAgICB9
Cit9OwordmFyIHRhcmdldE9iamVjdCA9IHt9OwordmFyIHByb3h5ID0gbmV3IFByb3h5KHRhcmdl
dE9iamVjdCwgaGFuZGxlcik7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
c2hvdWxkQmUoY291bnQsIGkpOworICAgIHNob3VsZEJlKHRlc3QocHJveHkpLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUodGFyZ2V0LCB0YXJnZXRPYmplY3QpOworICAgIHNob3VsZEJlKGtleSwgImhl
bGxvIik7Cit9Cit0YXJnZXRPYmplY3QuaGVsbG8gPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICBzaG91bGRCZShjb3VudCwgaSArIDFlNCk7CisgICAgc2hvdWxkQmUo
dGVzdChwcm94eSksIHRydWUpOworICAgIHNob3VsZEJlKHRhcmdldCwgdGFyZ2V0T2JqZWN0KTsK
KyAgICBzaG91bGRCZShrZXksICJoZWxsbyIpOworfQorZGVsZXRlIHRhcmdldE9iamVjdC5oZWxs
bzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZShjb3VudCwg
aSArIDJlNCk7CisgICAgc2hvdWxkQmUodGVzdChwcm94eSksIGZhbHNlKTsKKyAgICBzaG91bGRC
ZSh0YXJnZXQsIHRhcmdldE9iamVjdCk7CisgICAgc2hvdWxkQmUoa2V5LCAiaGVsbG8iKTsKK30K
</data>
<flag name="review"
          id="359019"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>