<?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>143736</bug_id>
          
          <creation_ts>2015-04-14 15:57:49 -0700</creation_ts>
          <short_desc>DFG should not use or preserve Phantoms during transformations</short_desc>
          <delta_ts>2015-04-28 12:29:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143734</dependson>
    
    <dependson>143735</dependson>
    
    <dependson>143843</dependson>
          <blocked>143733</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085301</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-14 15:57:49 -0700</bug_when>
    <thetext>After https://bugs.webkit.org/show_bug.cgi?id=143734 and https://bugs.webkit.org/show_bug.cgi?id=143735 are done, there will be no need to insert Phantoms as part of bytecode parsing or when removing/transforming code.  So, the code to insert Phantoms should be removed and Node::convertToPhantom() should just become Node::remove().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088028</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 15:07:53 -0700</bug_when>
    <thetext>I&apos;ve hit a snag: backwards propagation needs to know when values are used by bytecode in strange ways.  It currently looks like it might rely on Phantom to tell it that the bits of some value are all observed.

Ugh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088034</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 15:20:57 -0700</bug_when>
    <thetext>I think that we need to just embrace the fact that the DFG IR prior to FixupPhase *does* currently accurately represent all bytecode uses.  This may be hard to maintain, but it *is* useful.

The part that we believe to be unsound is maintaining that same information in DFG IR *after* we have completed FixupPhase and are doing other transformations.

If we embrace this, then we would be able to also bring back DCE. This time it would be a pre-FixupPhase DCE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088075</commentid>
    <comment_count>3</comment_count>
      <attachid>251508</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 16:04:08 -0700</bug_when>
    <thetext>Created attachment 251508
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088093</commentid>
    <comment_count>4</comment_count>
      <attachid>251513</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 16:28:14 -0700</bug_when>
    <thetext>Created attachment 251513
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088116</commentid>
    <comment_count>5</comment_count>
      <attachid>251518</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 17:58:12 -0700</bug_when>
    <thetext>Created attachment 251518
almost</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089128</commentid>
    <comment_count>6</comment_count>
      <attachid>251767</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 12:21:45 -0700</bug_when>
    <thetext>Created attachment 251767
starting to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089142</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 12:50:53 -0700</bug_when>
    <thetext>*** Bug 126239 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089276</commentid>
    <comment_count>8</comment_count>
      <attachid>251787</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 16:59:12 -0700</bug_when>
    <thetext>Created attachment 251787
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089329</commentid>
    <comment_count>9</comment_count>
      <attachid>251804</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 18:20:42 -0700</bug_when>
    <thetext>Created attachment 251804
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089358</commentid>
    <comment_count>10</comment_count>
      <attachid>251810</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 20:14:12 -0700</bug_when>
    <thetext>Created attachment 251810
trying another rebase

I&apos;m beginning to think that maybe it&apos;s not my patch&apos;s fault that EWS can&apos;t apply the patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089364</commentid>
    <comment_count>11</comment_count>
      <attachid>251815</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 20:28:47 -0700</bug_when>
    <thetext>Created attachment 251815
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089366</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-27 20:31:17 -0700</bug_when>
    <thetext>Attachment 251815 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:64:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:64:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 2 in 32 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>1089638</commentid>
    <comment_count>13</comment_count>
      <attachid>251815</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-28 11:20:46 -0700</bug_when>
    <thetext>Comment on attachment 251815
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:33
&gt; +        - Phantoms before FixupPhase. I kind of like these. It means that before FixupPhase, we can do
&gt; +          backwards analyses and rely on the fact that the users of a node in DFG IR are a superset of
&gt; +          the users of the original local&apos;s live range in bytecode. This is essential for supporting our
&gt; +          BackwardsPropagationPhase, which is an important optimization for things like asm.js.

I think it&apos;s strange to use &quot;phantom&quot; to mean these two different things: (1) something inserted during bytecode parsing to mark bytecode uses according to the text of the bytecode; (2) something inserted after optimization to mark what is live along OSR exit paths according to a liveness analysis of the bytecode.

Two names that might distinguish these meanings are &quot;UsedInBytecode&quot; and &quot;LiveInBytecode&quot;. Or &quot;BytecodeOperand&quot; and &quot;LiveInBytecode&quot;. It should be harmless to leave behind &quot;BytecodeOperand&quot; nodes in the graph -- although perhaps we would still remove them for the sake of brevity when dumping IR. It is strange that, today, if you forget to remove a &quot;BytecodeOperand&quot; annotation, you might have a performance problem, even if there is no corresponding &quot;LiveInBytecode&quot; annotation.

&gt; Source/JavaScriptCore/dfg/DFGCleanUpPhase.h:37
&gt; +bool performCleanUp(Graph&amp;);

The names &quot;fixup phase&quot; and &quot;cleanup phase&quot; are super broad, and not meaningful to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089671</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-28 12:25:34 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 251815 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251815&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:33
&gt; &gt; +        - Phantoms before FixupPhase. I kind of like these. It means that before FixupPhase, we can do
&gt; &gt; +          backwards analyses and rely on the fact that the users of a node in DFG IR are a superset of
&gt; &gt; +          the users of the original local&apos;s live range in bytecode. This is essential for supporting our
&gt; &gt; +          BackwardsPropagationPhase, which is an important optimization for things like asm.js.
&gt; 
&gt; I think it&apos;s strange to use &quot;phantom&quot; to mean these two different things:
&gt; (1) something inserted during bytecode parsing to mark bytecode uses
&gt; according to the text of the bytecode; (2) something inserted after
&gt; optimization to mark what is live along OSR exit paths according to a
&gt; liveness analysis of the bytecode.

It&apos;s true that there are some small differences between the Phantoms used in parsing and those in the backend. Comparing the two is tricky, since the IR will change substantially between parsing and the backend. But imagine those programs where we don&apos;t actually change the IR during FixupPhase or any of the optimizations - maybe because the program already has minimal redundancy and doesn&apos;t use any operations, like double math, that require FixupPhase to insert conversion nodes. For such programs I would expect PhantomInsertionPhase to simply add back those Phantoms that were removed during FixupPhase, with maybe two exceptions:

- Phantom is defined as being a liveness marker and so it doesn&apos;t need to be inserted if there is another Phantom after it for the same node. &quot;Phantom(@x); ...; Phantom(@x)&quot; only requires the latter Phantom and the former can be removed. ByteCodeParser doesn&apos;t do such an optimization, but PhantomInsertionPhase does.

- Phantom is only necessary if the IR doesn&apos;t already have an appropriate use of that node. Both ByteCodeParser and PhantomInsertionPhase do this optimization, but PhantomInsertionPhase does it much more aggressively. ByteCodeParser does just because we only insert Phantoms if we know that we won&apos;t emit any other use. PhantomInsertionPhase actually searches for other uses of the node between the Phantom insertion point and the last exit. Despite the different approach, the results are strikingly similar for real code - and the implication for users of Phantoms are the same.

It may be that we use the Phantom-in-parsing differently than we use the Phantom-in-codegen. But they give us similar, if not identical, guarantees about liveness and uses.

It&apos;s worthwhile to look for better names for things. Here&apos;s the bug for that. We should discuss it more on that bug. https://bugs.webkit.org/show_bug.cgi?id=137307

&gt; 
&gt; Two names that might distinguish these meanings are &quot;UsedInBytecode&quot; and
&gt; &quot;LiveInBytecode&quot;. Or &quot;BytecodeOperand&quot; and &quot;LiveInBytecode&quot;. It should be
&gt; harmless to leave behind &quot;BytecodeOperand&quot; nodes in the graph -- although
&gt; perhaps we would still remove them for the sake of brevity when dumping IR.

Reducing the number of nodes we add is useful for reducing compile times. Are you suggesting adding a BytecodeOperand node everywhere that the bytecode used an operand?

Phantom-from-parser currently means, &quot;I used this node in bytecode here, and I can&apos;t tell you how I used it, so if you care then assume the worst&quot;. This is a subtle meaning. We can probably come up with a name for this, but &quot;BytecodeOperand&quot; doesn&apos;t convey this to me.

&gt; It is strange that, today, if you forget to remove a &quot;BytecodeOperand&quot;
&gt; annotation, you might have a performance problem, even if there is no
&gt; corresponding &quot;LiveInBytecode&quot; annotation.

I don&apos;t follow. If by BytecodeOperand you mean Phantom-from-parser, then we don&apos;t have a phase to selectively remove them. I don&apos;t remember having a performance problem because I accidentally inserted too many Phantoms in ByteCodeParser.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCleanUpPhase.h:37
&gt; &gt; +bool performCleanUp(Graph&amp;);
&gt; 
&gt; The names &quot;fixup phase&quot; and &quot;cleanup phase&quot; are super broad, and not
&gt; meaningful to me.

True.  Filed: https://bugs.webkit.org/show_bug.cgi?id=144345.  Feel free to rubber stamp. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089673</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-28 12:29:03 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183497</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251508</attachid>
            <date>2015-04-23 16:04:08 -0700</date>
            <delta_ts>2015-04-23 16:28:14 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>50947</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCShy
ZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5j
eUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBBZGphY2VuY3lMaXN0KEZpeGVkLCBjaGlsZDEoKS5zYW5pdGl6ZWQoKSwgY2hp
bGQyKCkuc2FuaXRpemVkKCksIGNoaWxkMygpLnNhbml0aXplZCgpKTsKICAgICB9CiAgICAgCisg
ICAgQWRqYWNlbmN5TGlzdCBqdXN0Q2hlY2tzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFkamFj
ZW5jeUxpc3QgcmVzdWx0ID0gKnRoaXM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuY2hp
bGQoaSkud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgcmVzdWx0LnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQzKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToK
ICAgICAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdl
bmVyYXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKQEAgLTM1NCw3ICszNTMsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhQ
aGFudG9tRGlyZWN0QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdp
biwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKQEAg
LTM2Miw3ICszNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFu
ZERlZmF1bHRGbGFncyhQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50
b20sIG5vZGUtPm9yaWdpbiwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEdldEZyb21Bcmd1
bWVudHM6IHsKQEAgLTQ4Niw3ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBQdXRTdGFjaywgbm9kZS0+b3JpZ2lu
LCBPcEluZm8oZGF0YSksIEVkZ2UodmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3Zl
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKQEAgLTUzNyw3ICs1MzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9jYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNw
cAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEJhc2ljQmxv
Y2s6OnJlcGxhY2VUZXJtaW5hbChOb2RlKiBuCiAgICAgICAgIGFwcGVuZChub2RlKTsKICAgICBl
bHNlIHsKICAgICAgICAgbV9ub2Rlcy5pbnNlcnQocmVzdWx0LmluZGV4ICsgMSwgbm9kZSk7Ci0g
ICAgICAgIHJlc3VsdC5ub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIHJlc3VsdC5u
b2RlLT5yZW1vdmUoKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHRlcm1pbmFsKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE4
MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw4IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRl
ZDxCYXNpY0Jsb2MKICAgICAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkp
OwotICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5k
IHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBh
ZnRlciB0aGUgdGVybWluYWwuCisgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29u
dGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBv
bmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBh
bmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGNhc2Ug
Q2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4K
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2Fs
OgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDExICszMTcsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8ga2VwdCBhbGl2ZS4KICAgICAgICAgCiAgICAgICAgIC8vIFJlbW92ZSB0aGUg
dGVybWluYWwgb2YgZmlyc3RCbG9jayBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0IGFueW1vcmUuIFdl
bGwsIHdlIGRvbid0Ci0gICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFjdHVhbGx5IHR1
cm4gaXQgaW50byBhIFBoYW50b20uCisgICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFj
dHVhbGx5IHR1cm4gaXQgaW50byBhIGNoZWNrLgogICAgICAgICBOb2RlKiB0ZXJtaW5hbCA9IGZp
cnN0QmxvY2stPnRlcm1pbmFsKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+aXNUZXJtaW5h
bCgpKTsKICAgICAgICAgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4gPSB0ZXJtaW5hbC0+
b3JpZ2luOwotICAgICAgICB0ZXJtaW5hbC0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICB0
ZXJtaW5hbC0+cmVtb3ZlKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+cmVmQ291bnQoKSA9
PSAxKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29uZWRCbG9j
a3Muc2l6ZSgpOyBpLS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0Nyw4ICsyNDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8v
IHJlZHVuZGFudCBhbmQgaW5lZmZpY2llbnQsIHNpbmNlIHJlYWxseSBpdCBqdXN0IG1lYW5zIHRo
YXQgd2Ugd2FudCB0bwogICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlIGxhc3QgTW92SGludGVk
IHZhbHVlIG9mIHRoYXQgbG9jYWwgYWxpdmUuCiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKG1fYXZhaWxhYmxlRm9yT1NSLmF0Rm9yPG9w
ZXJhbmRLaW5kPihpZHgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9t
KCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCShmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA6MTgz
MjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZH
UGhhc2UuaCIKKyNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgorI2lu
Y2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgUGhhbnRvbVJl
bW92YWxQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgUGhhbnRvbVJlbW92YWxQ
aGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJwaGFudG9tIHJlbW92
YWwiKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBydW4oKQorICAgIHsKKyAgICAgICAg
Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAg
ICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIEFsbCBQaGlzIG5lZWQgdG8gYWxyZWFkeSBiZSBtYXJrZWQg
YXMgcmVsZXZhbnQgdG8gT1NSLgorICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+cGhpc1tpXS0+Zmxh
Z3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBTZXRMb2NhbDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOiAvLyBGSVhNRTog
VGhlIEdldExvY2FsIGNhc2UgaXMgb25seSBuZWNlc3NhcnkgdW50aWwgd2UgZG8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjcwNy4KKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNsZWFyRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NSKCk7CisgICAgICAgIAor
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJj
ZUluZGV4ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKKyAgICAg
ICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbTog
eworICAgICAgICAgICAgICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2VJbmRleCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3ROb2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4IC0gMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBuZWVk
IHRvIHNwZWNpYWxpemUgZm9yIFBoYW50b20uIGxhc3ROb2RlIGNvdWxkIGJlIGFueSBub2RlCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGlzbid0IHN1YmplY3QgdG8gRENFLiBCdXQg
d2Uga2VlcCBpdCBzaW1wbGUgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChs
YXN0Tm9kZS0+b3AoKSAhPSBQaGFudG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bGFzdE5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IG5vZGUtPm9yaWdpbi5mb3JFeGl0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRq
YWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVk
Z2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghZWRnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBjaGVjay4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChlZGdlLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBBZGphY2VuY3lMaXN0OjpTaXplOyAr
K2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+
Y2hpbGRyZW4uY2hpbGQoaikubm9kZSgpID09IGVkZ2Uubm9kZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
Zm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVu
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRv
ci5mcmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hp
bGQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53
aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6IHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldElu
ZGV4KyspID0gbm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrLT5yZXNpemUo
dGFyZ2V0SW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gY2hhbmdl
ZDsKKyAgICB9Cit9OworICAgIAorYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmIGdy
YXBoKQoreworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBS
ZW1vdmFsIFBoYXNlIik7CisgICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21SZW1vdmFsUGhhc2U+
KGdyYXBoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5V
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCShyZXZpc2lvbiAxODMyMDUpCShmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOjE4MzIwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorI2RlZmluZSBE
RkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBDbGVhbnMgdXAg
dW5uZWNlc3NhcnkgUGhhbnRvbXMgYW5kIFBoYW50b24gY2hpbGRyZW4uIFRoaXMgcmVkdWNlcyBs
aXZlIHJhbmdlcywgYnV0IGFsc28sIGl0CisvLyBlbGltaW5hdGVzIG1hbnkgUGhhbnRvbXMgZW50
aXJlbHkuIFRoaXMgaW52YWxpZGF0ZXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisvLworLy8gVGhpcyBz
aG91bGQgd29yayBvdmVyIGFsbCBJUiBmb3JtczsgaG93ZXZlciwgaW4gU1NBIGZvcm0gaXQncyBi
ZXR0ZXIgdG8gcnVuCisvLyBQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlIHNpbmNlIGl0J3Mg
bW9yZSBwb3dlcmZ1bC4KKworYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmKTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
KyNlbmRpZiAvLyBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOwogICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIENh
dGNoIHRoZSBmYWN0IHRoYXQgd2UgbWF5IGZpbHRlciBvbiBjZWxsLgotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzLDggKzEzMyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4
SW5CbG9jayk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3Jp
Z2luLCBub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Db25zdGFudFN0b3JhZ2VQb2ludGVyKHZpZXct
PnZlY3RvcigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0
Nyw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJ
bkJsb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFu
dG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjcs
NyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoYWxsR29vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTE3OSw3ICsxNzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheWlmeTogewog
ICAgICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQobV9n
cmFwaCwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGlt
aW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTE4OCw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLm9ubHlTdHJ1Y3R1cmUoKSAhPSBub2Rl
LT50cmFuc2l0aW9uKCktPm5leHQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAg
ICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3
ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9
IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAg
ICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIwNCw3ICsyMDMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5OiB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0Vt
cHR5KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAg
ICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CkBAIC0yMTQsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHJpZ2h0ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgp
OwogICAgICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYm
IHJpZ2h0LmlzSW50MzIoKQogICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50
MzJfdD4obGVmdC5hc0ludDMyKCkpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJpZ2h0LmFzSW50
MzIoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwor
ICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAg
ZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTUxNiwxMCArNTE1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFkamFj
ZW5jeUxpc3QgY2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCB2YWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRyZW4pOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBvcmlnaW4sIGNoaWxkcmVuKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTY0MCwxMCAr
NjM3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpIHsKLSAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpCisgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5vZGUtPm9y
aWdpbiwgbm9kZS0+Y2hpbGQxKCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZENoZWNrcygK
QEAgLTY4Myw3ICs2NzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBKU0NvbnN0YW50
OgogICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgICAgIGNhc2UgSW50
NTJDb25zdGFudDoKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBu
b2RlLCAiQmFkIFVwc2lsb24gcGhpKCkgcG9pbnRlciIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
MiArNTQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6
IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgICAgIGZpeHVwQmxvY2so
YmxvY2spOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGlzIGxpa2UgY2xlYW5W
YXJpYWJsZXMsIGJ1dCBoYXMgYSBtdWNoIHNpbXBsZXIgYXBwcm9hY2ggdG8gR2V0TG9jYWwuCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhhbnRvbSAmJiBub2Rl
LT5vcCgpICE9IENoZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBudWxscHRyOwog
ICAgICAgICAgICAgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1f
Z3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKICAgICAgICAgICAgICAgICBmaXh1cEJs
b2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwotICAgICAgICAgICAgY2xlYW5WYXJpYWJs
ZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8v
IEp1c3QgZG8gYSBiYXNpYyBNdXN0R2VuZXJhdGUvUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KQEAg
LTE1MywyNyArMTUxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmly
c3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxk
SWR4XTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2UuaXNQcm92
ZWQoKSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghZWRnZSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3Jp
Z2luLCBlZGdlKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2spOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZHJlbi5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZWZDb3VudCgxKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UuaXNQcm92ZWQoKSB8fCBlZGdlLndpbGxOb3RI
YXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92
ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVmQ291bnQoMSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IH0KICAgICAgICAgfQpAQCAtMTgxLDI5ICsxNzEs
NiBAQCBwcml2YXRlOgogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFyaWFibGVzVmVjdG9yVHlwZT4KLSAg
ICB2b2lkIGNsZWFuVmFyaWFibGVzKFZhcmlhYmxlc1ZlY3RvclR5cGUmIHZhcmlhYmxlcykKLSAg
ICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhcmlhYmxlcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSB2YXJpYWJsZXNbaV07Ci0gICAgICAgICAgICBpZiAo
IW5vZGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSAhPSBQaGFudG9tICYmIG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hvdWxkR2Vu
ZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IEdldExvY2FsKSB7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNoaWxk
MSgpLm5vZGUoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBQaGkgfHwgbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGVzW2ldID0gbm9kZTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdmFyaWFibGVzW2ldID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBJbnNlcnRp
b25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEw
ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9y
IChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytt
X2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdCht
X2luZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgICAgICBmaXh1cE5vZGUobV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIH0KLSAgICAgICAg
YWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRl
KGJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0yNjIsMTIgKzI2MCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gQnV0IHdlIGhhdmUgdG8gbWFrZSBzdXJl
IHRoYXQgZXZlcnl0aGluZyBpcyBwaGFudG9tJ2QgdW50aWwgYWZ0ZXIgdGhlCi0gICAgICAgICAg
ICAgICAgLy8gRG91YmxlQXNJbnQzMiBub2RlLCB3aGljaCBvY2N1cnMgYWZ0ZXIgdGhlIERpdi9N
b2Qgbm9kZSB0aGF0IHRoZSBjb252ZXJzaW9ucwotICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUg
aW5zZXJlZCBvbi4KLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZS0+
Y2hpbGQyKCkubm9kZSgpKTsKLQogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
ZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZy
b20KICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAg
ICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAt
ODM5LDcgKzgzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNl
KSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudCgKQEAgLTk5MCw3ICs5ODIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6IHsK
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAg
ICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEwMDQsNiArOTk1LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAg
ICAgICAgIC8vIFBoYW50b21zIGFyZSBtZWFuaW5nbGVzcyBwYXN0IEZpeHVwLiBXZSByZWNyZWF0
ZSB0aGVtIG9uLWRlbWFuZCBpbiB0aGUgYmFja2VuZC4KKyAgICAgICAgICAgIHJlbW92ZSgpOwor
ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBGaWF0SW50NTI6IHsKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkpOwogICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvSWRlbnRpdHkoKTsKQEAgLTEwNjcsNyArMTA2Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSXNTdHJpbmc6CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFu
dG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIFN0cmluZ1VzZSkpOwogICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAg
ICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+KG5vZGUpOwpAQCAtMTA3Nyw3ICsx
MDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAog
ICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgT2JqZWN0VXNl
KSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jv
b2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE9iamVj
dFVzZT4obm9kZSk7CkBAIC0xMjg4LDcgKzEyODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gZGVjaXNpb24gcHJvY2VzcyBtdWNoIGVhc2llci4KICAgICAgICAgICAgIG9ic2VydmVVc2VL
aW5kT25Ob2RlPFN0cmluZ1VzZT4oZWRnZS5ub2RlKCkpOwogICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShl
ZGdlLm5vZGUoKSwgU3RyaW5nVXNlKSk7CiAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoS25v
d25TdHJpbmdVc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQyNywxMiArMTQyMyw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgLy8gV2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAgICAvLyAqb3JpZ2luYWwqIGlucHV0
cyB0byB0aGUgYWRkaXRpb24gYXJlIGxpdmUgdXAgdG8gaGVyZS4KLSAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQpLCBF
ZGdlKG9yaWdpbmFsUmlnaHQpKTsKLSAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VSb3Bl
KG5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTU2LDcgKzE1NDYsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJy
YXk6OlN0cmluZykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwg
RWRnZShhcnJheSwgU3RyaW5nVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlNb2Rl
Lm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgCkBAIC0xNzY3LDcgKzE3NTcsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5l
d05vZGUsIEtub3duSW50MzJVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZSk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4SW50T3JCb29sZWFuRWRnZShFZGdlJiBlZGdlKQpA
QCAtMTc4OSw3ICsxNzc4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5v
ZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2Rl
LCBJbnQzMlVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBmaXhEb3VibGVPckJvb2xlYW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0xODEx
LDcgKzE3OTksNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2Rl
LCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIERvdWJs
ZVJlcFVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAg
CiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQpAQCAtMTk5MSwx
MSArMTk3OCw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAg
Zm9yIChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsg
KyttX2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5h
dChtX2luZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7
CiAgICAgICAgICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSk7CiAg
ICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2Rl
LCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQotICAgICAgICBhZGRQ
aGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxv
Y2spOwogICAgIH0KICAgICAKQEAgLTIwMDksNyArMTk5NCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBNb3ZIaW50Ogot
ICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIGNhc2Ug
TXVzdEdlbmVyYXRlOgogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFw
aCwgbV9jdXJyZW50Tm9kZSwgZml4RWRnZVJlcHJlc2VudGF0aW9uKTsKQEAgLTIwNzEsOCArMjA1
NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFJl
cXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0KICAgICAgICAgICAgIGlmIChlZGdlLT5pc051
bWJlckNvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0J5
dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgbm9kZS0+b3JpZ2luLApAQCAtMjA5NSw4ICsy
MDc3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgp
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRS
ZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+aXNN
YWNoaW5lSW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+b3JpZ2luLApAQCAtMjEyMyw4ICsy
MTAzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVzdWx0
KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkg
ewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjQnl0ZWNvZGVEb3VibGUsIFZh
bHVlUmVwLCBub2RlLT5vcmlnaW4sCkBAIC0yMTQwLDMyICsyMTE4LDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIH0gfQogICAgIH0KICAgICAKLSAgICB2b2lkIGFkZFJlcXVpcmVkUGhhbnRvbShOb2Rl
KiBub2RlKQotICAgIHsKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFwcGVuZChub2RlKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKQotICAgIHsKLSAgICAg
ICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhhbnRvbXMu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJlZFBoYW50
b21zW2ldOwotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG1fY3VycmVudE5vZGUt
Pm9yaWdpbiwKLSAgICAgICAgICAgICAgICBub2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAgICB9
Ci0gICAgCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4SW5C
bG9jazsKICAgICBOb2RlKiBtX2N1cnJlbnROb2RlOwogICAgIEluc2VydGlvblNldCBtX2luc2Vy
dGlvblNldDsKICAgICBib29sIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQ7Ci0gICAgVmVjdG9yPE5v
ZGUqLCAzPiBtX3JlcXVpcmVkUGhhbnRvbXM7CiB9OwogICAgIAogYm9vbCBwZXJmb3JtRml4dXAo
R3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2Vy
dGlvblNldC5oCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDIxIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGluc2VydENvbnN0YW50Rm9yVXNlKGluZGV4LCBvcmlnaW4s
IGpzVW5kZWZpbmVkKCksIHVzZUtpbmQpOwogICAgIH0KICAgICAKKyAgICBOb2RlKiBpbnNlcnRD
aGVjayhzaXplX3QgaW5kZXgsIE5vZGVPcmlnaW4gb3JpZ2luLCBBZGphY2VuY3lMaXN0IGNoaWxk
cmVuKQorICAgIHsKKyAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5qdXN0Q2hlY2tzKCk7Cisg
ICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoaW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3Jp
Z2luLCBjaGlsZHJlbik7CisgICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVf
dCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlm
IChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGlu
ZGV4LCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbiwgZWRnZSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiAg
ICAgewogICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheUJvdW5kczoKLSAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAg
bm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTUgQEAg
Ym9vbCBOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgmIAogICAgIH0KIH0KIAordm9p
ZCBOb2RlOjpyZW1vdmUoKQoreworICAgIEFTU0VSVCghKGZsYWdzKCkgJiBOb2RlSGFzVmFyQXJn
cykpOworICAgIAorICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uanVzdENoZWNrcygpOworICAgIAor
ICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsKK30KKwogdm9pZCBOb2RlOjpjb252ZXJ0
VG9JZGVudGl0eSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2hpbGQxKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTUgKzQw
Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9mbGFncyA9IGRlZmF1bHRGbGFncyhvcCk7
CiAgICAgfQogCi0gICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tKCkKLSAgICB7Ci0gICAgICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNvbnZl
cnRUb0NoZWNrKCkKLSAgICB7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsK
LSAgICB9CisgICAgdm9pZCByZW1vdmUoKTsKIAogICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1
Y3R1cmUoU3RydWN0dXJlU2V0KiBzZXQpCiAgICAgewpAQCAtNDI1LDcgKzQxNyw3IEBAIHN0cnVj
dCBOb2RlIHsKICAgICAKICAgICB2b2lkIHJlcGxhY2VXaXRoKE5vZGUqIG90aGVyKQogICAgIHsK
LSAgICAgICAgY29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZW1vdmUoKTsKICAgICAgICAg
c2V0UmVwbGFjZW1lbnQob3RoZXIpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTgzMjA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsMTAgKzI3NCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlQWN0
aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIG1hY3JvKENyZWF0ZURpcmVjdEFy
Z3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oUGhhbnRvbURpcmVjdEFyZ3VtZW50
cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUGhhbnRvbURpcmVjdEFyZ3VtZW50cywgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENyZWF0ZVNjb3BlZEFy
Z3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
LCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQaGFudG9tQ2xvbmVkQXJndW1lbnRzLCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhQaGFudG9tQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MSw3ICs1NjEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAgICAgICAgICAgIGNhc2Ug
U3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazogewogICAgICAgICAgICAgICAgICAgICBpZiAobV9z
aW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlz
aW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92
YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklU
KQotCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIK
LSNpbmNsdWRlICJERkdQaGFzZS5oIgotI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmgiCi0jaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1j
bGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBQ
aGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwg
InBoYW50b20gcmVtb3ZhbCIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBib29sIHJ1bigpCi0g
ICAgewotICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJs
b2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQWxsIFBoaXMgbmVlZCB0byBhbHJl
YWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCi0gICAgICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
bG9jay0+cGhpcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJsb2Nr
LT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgotICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9j
YWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBvbmx5IG5lY2Vzc2FyeSB1bnRpbCB3
ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzA3LgotICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9PU1Io
KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9j
aykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
dW5zaWduZWQgc291cmNlSW5kZXggPSAwOwotICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5k
ZXggPSAwOwotICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkg
ewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZGV4ID4gMSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXggLSAyKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3IgUGhhbnRvbS4gbGFzdE5vZGUgY291bGQg
YmUgYW55IG5vZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVj
dCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBoYW50b20KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZv
ckV4aXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBudWxscHRyOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNr
LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZh
bnRUb09TUikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IEFkamFjZW5j
eUxpc3Q6OlNpemU7ICsraikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5ub2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0t
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDaGVjazogewot
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlz
dDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2Rl
LT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92
ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIE11c3RHZW5lcmF0ZTogewotICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBibG9j
ay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZvcm1QaGFudG9tUmVt
b3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRv
bVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0K
LSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgJKHJldmlzaW9uIDE4MzIwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKLSNk
ZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsKLQotLy8gQ2xl
YW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJl
ZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRlcyBtYW55IFBoYW50
b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lzLgotLy8KLS8v
IFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3Jt
IGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5j
ZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBo
Jik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NSw3ICs0OTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIEtpbGxT
dGFjaywgbm9kZS0+b3JpZ2luLCBPcEluZm8obm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2Fs
Lm9mZnNldCgpKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNv
bnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICszMDAsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4ucmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVt
b3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiUmVwbGFjaW5nIG5vZGUgIiwgbm9kZSwgIiB3aXRoICIsIHZhbHVl
Rm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldFJlcGxhY2VtZW50KHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSk7CkBAIC0zMDksNyArMzA5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgCkBAIC0zMTcsMTIgKzMxNywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkg
PSB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSktPmRlZmF1bHRFZGdl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDogewotICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGlkZUJhcnJp
ZXIoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChub2RlLT5pc1N0b3JlQmFycmll
cigpKTsKLSAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKICAgICB9CiAKICAgICB2b2lkIGhhbmRsZU5vZGUoSGFzaFNldDxOb2RlKj4mIGRv
bnROZWVkQmFycmllcnMsIE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kVGVybWluYWwgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBibG9jay0+c2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBibG9jay0+YXQoaik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPm9wKCkgPT0g
UGhhbnRvbSB8fCBub2RlLT5vcCgpID09IFBoYW50b21Mb2NhbCB8fCBub2RlLT5vcCgpID09IEZs
dXNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+b3Ao
KSA9PSBQaGFudG9tIHx8IG5vZGUtPm9wKCkgPT0gUGhhbnRvbUxvY2FsIHx8IG5vZGUtPm9wKCkg
PT0gRmx1c2ggfHwgbm9kZS0+b3AoKSA9PSBDaGVjayk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CkBAIC00NjEs
NiArNDYxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgogICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3RlZCBub2RlIHR5cGUg
aW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBo
Lm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0MCw2ICs1NDMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBH
ZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICEiYmFkIG5vZGUgdHlwZSBmb3IgU1NBIik7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNiBAQCBwcml2YXRlOgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGNhbmRpZGF0ZU5vZGVJbmRleCArIDE7IG5v
ZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2UgQ2hl
Y2s6CiAgICAgICAgICAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICAgICAgICAgIGNhc2UgTW92
SGludDoKQEAgLTIxMiw3ICsyMTEsNiBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IG5vZGVJbmRleCA9IGNhbmRpZGF0ZU5vZGVJbmRleCArIDE7IG5vZGVJbmRleCA8PSBsYXN0VXNl
ckluZGV4OyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChub2RlSW5kZXgpOwogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAg
Y2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251513</attachid>
            <date>2015-04-23 16:28:14 -0700</date>
            <delta_ts>2015-04-23 17:58:12 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>75547</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCShy
ZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5j
eUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBBZGphY2VuY3lMaXN0KEZpeGVkLCBjaGlsZDEoKS5zYW5pdGl6ZWQoKSwgY2hp
bGQyKCkuc2FuaXRpemVkKCksIGNoaWxkMygpLnNhbml0aXplZCgpKTsKICAgICB9CiAgICAgCisg
ICAgQWRqYWNlbmN5TGlzdCBqdXN0Q2hlY2tzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFkamFj
ZW5jeUxpc3QgcmVzdWx0ID0gKnRoaXM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuY2hp
bGQoaSkud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgcmVzdWx0LnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQzKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToK
ICAgICAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdl
bmVyYXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKQEAgLTM1NCw3ICszNTMsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhQ
aGFudG9tRGlyZWN0QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdp
biwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKQEAg
LTM2Miw3ICszNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFu
ZERlZmF1bHRGbGFncyhQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50
b20sIG5vZGUtPm9yaWdpbiwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEdldEZyb21Bcmd1
bWVudHM6IHsKQEAgLTQ4Niw3ICs0ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBQdXRTdGFjaywgbm9kZS0+b3JpZ2lu
LCBPcEluZm8oZGF0YSksIEVkZ2UodmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3Zl
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKQEAgLTUzNyw3ICs1MzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9jYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNw
cAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEJhc2ljQmxv
Y2s6OnJlcGxhY2VUZXJtaW5hbChOb2RlKiBuCiAgICAgICAgIGFwcGVuZChub2RlKTsKICAgICBl
bHNlIHsKICAgICAgICAgbV9ub2Rlcy5pbnNlcnQocmVzdWx0LmluZGV4ICsgMSwgbm9kZSk7Ci0g
ICAgICAgIHJlc3VsdC5ub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIHJlc3VsdC5u
b2RlLT5yZW1vdmUoKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHRlcm1pbmFsKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE4
MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw4IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRl
ZDxCYXNpY0Jsb2MKICAgICAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkp
OwotICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5k
IHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBh
ZnRlciB0aGUgdGVybWluYWwuCisgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29u
dGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBv
bmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBh
bmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGNhc2Ug
Q2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4K
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2Fs
OgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDExICszMTcsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8ga2VwdCBhbGl2ZS4KICAgICAgICAgCiAgICAgICAgIC8vIFJlbW92ZSB0aGUg
dGVybWluYWwgb2YgZmlyc3RCbG9jayBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0IGFueW1vcmUuIFdl
bGwsIHdlIGRvbid0Ci0gICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFjdHVhbGx5IHR1
cm4gaXQgaW50byBhIFBoYW50b20uCisgICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFj
dHVhbGx5IHR1cm4gaXQgaW50byBhIGNoZWNrLgogICAgICAgICBOb2RlKiB0ZXJtaW5hbCA9IGZp
cnN0QmxvY2stPnRlcm1pbmFsKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+aXNUZXJtaW5h
bCgpKTsKICAgICAgICAgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4gPSB0ZXJtaW5hbC0+
b3JpZ2luOwotICAgICAgICB0ZXJtaW5hbC0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICB0
ZXJtaW5hbC0+cmVtb3ZlKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+cmVmQ291bnQoKSA9
PSAxKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29uZWRCbG9j
a3Muc2l6ZSgpOyBpLS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgQ1BTUmV0aHJlYWRpbmdQaGFzZSA6IHB1
YmxpYyBQaGFzZQogcHVibGljOgogICAgIENQU1JldGhyZWFkaW5nUGhhc2UoR3JhcGgmIGdyYXBo
KQogICAgICAgICA6IFBoYXNlKGdyYXBoLCAiQ1BTIHJldGhyZWFkaW5nIikKLSAgICAgICAgLCBt
X2F2YWlsYWJsZUZvck9TUihPcGVyYW5kc0xpa2UsIGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTEyNiwxNCArMTI1LDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5z
aXplRm9yPG9wZXJhbmRLaW5kPigpCiAgICAgICAgICAgICA9PSBtX2Jsb2NrLT52YXJpYWJsZXNB
dFRhaWwuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKSk7Ci0gICAgICAgIEFTU0VSVCgKLSAgICAgICAg
ICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplRm9yPG9wZXJhbmRLaW5kPigpCi0gICAg
ICAgICAgICA9PSBtX2F2YWlsYWJsZUZvck9TUi5zaXplRm9yPG9wZXJhbmRLaW5kPigpKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVh
ZC5zaXplRm9yPG9wZXJhbmRLaW5kPigpOyBpLS07KSB7CiAgICAgICAgICAgICBtX2Jsb2NrLT52
YXJpYWJsZXNBdEhlYWQuYXRGb3I8b3BlcmFuZEtpbmQ+KGkpID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hdEZvcjxvcGVyYW5kS2luZD4oaSkgPSBudWxs
cHRyOwotICAgICAgICAgICAgbV9hdmFpbGFibGVGb3JPU1IuYXRGb3I8b3BlcmFuZEtpbmQ+KGkp
ID0gRWRnZSgpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMjQ3LDggKzI0Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gcmVkdW5kYW50IGFuZCBpbmVmZmljaWVudCwgc2lu
Y2UgcmVhbGx5IGl0IGp1c3QgbWVhbnMgdGhhdCB3ZSB3YW50IHRvCiAgICAgICAgICAgICAgICAg
Ly8ga2VlcCB0aGUgbGFzdCBNb3ZIaW50ZWQgdmFsdWUgb2YgdGhhdCBsb2NhbCBhbGl2ZS4KICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEo
bV9hdmFpbGFibGVGb3JPU1IuYXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTM1OSwxNCArMzUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYW5vbmlj
YWxpemVTZXQobm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFibGVG
b3JPU1Iub3BlcmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpID0gbm9kZS0+Y2hpbGQxKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNl
IFpvbWJpZUhpbnQ6Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFibGVGb3JPU1Iub3BlcmFuZChu
b2RlLT51bmxpbmtlZExvY2FsKCkpID0gRWRnZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTUxNyw3ICs1MDMsNiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+IG1fYXJndW1lbnRQaGlTdGFjazsKICAgICBWZWN0b3I8
UGhpU3RhY2tFbnRyeSwgMTI4PiBtX2xvY2FsUGhpU3RhY2s7CiAgICAgVmVjdG9yPE5vZGUqLCAx
Mjg+IG1fZmx1c2hlZExvY2FsT3BXb3JrbGlzdDsKLSAgICBPcGVyYW5kczxFZGdlPiBtX2F2YWls
YWJsZUZvck9TUjsKIH07CiAKIGJvb2wgcGVyZm9ybUNQU1JldGhyZWFkaW5nKEdyYXBoJiBncmFw
aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE4MzIwNSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIKKworI2lmIEVO
QUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNl
cnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVt
cC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgeworCitjbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGljIFBoYXNlIHsKK3B1
YmxpYzoKKyAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQ
aGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBi
b29sIHJ1bigpCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQWxsIFBoaXMg
bmVlZCB0byBhbHJlYWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCisgICAgICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGJsb2NrLT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2Nr
LT5hdChpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgICAg
IGNhc2UgR2V0TG9jYWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBvbmx5IG5lY2Vz
c2FyeSB1bnRpbCB3ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2NzA3LgorICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFu
dFRvT1NSKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlUmVsZXZhbnRU
b09TUik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9ncmFwaC5tZXJnZVJl
bGV2YW50VG9PU1IoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAg
ICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICAgICAgdW5zaWdu
ZWQgdGFyZ2V0SW5kZXggPSAwOworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxv
Y2stPnNpemUoKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291
cmNlSW5kZXgrKyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBQaGFudG9tOiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxh
c3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZGV4ID4g
MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9jay0+YXQoc291cmNl
SW5kZXggLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3IgUGhhbnRvbS4gbGFz
dE5vZGUgY291bGQgYmUgYW55IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQg
aXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBoYW50b20KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gbm9k
ZS0+b3JpZ2luLmZvckV4aXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUg
PSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVD
aGVjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRo
ZSB0eXBlIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmZsYWdzKCkg
JiBOb2RlUmVsZXZhbnRUb09TUikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5ub2RlKCkgPT0gZWRn
ZS5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJl
bW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVjazogeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
QWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdl
IGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIE11c3RHZW5lcmF0
ZTogeworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KK307CisgICAgCitib29sIHBlcmZv
cm1QaGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVu
UGhhc2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIKKyNpbmNsdWRlICJERkdDbGVhblVwUGhhc2Uu
aCIKIAogI2lmIEVOQUJMRShERkdfSklUKQogCkBAIC0zNywxMCArMzcsMTAgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDog
cHVibGljIFBoYXNlIHsKK2NsYXNzIENsZWFuVXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJs
aWM6Ci0gICAgUGhhbnRvbVJlbW92YWxQaGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhh
c2UoZ3JhcGgsICJwaGFudG9tIHJlbW92YWwiKQorICAgIENsZWFuVXBQaGFzZShHcmFwaCYgZ3Jh
cGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJjbGVhbiB1cCIpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTQ4LDEzMCArNDgsNDAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFu
Z2VkID0gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAg
IGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIC8vIEFsbCBQaGlzIG5lZWQgdG8gYWxyZWFkeSBiZSBtYXJrZWQgYXMgcmVsZXZh
bnQgdG8gT1NSLgotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+cGhpc1tpXS0+ZmxhZ3MoKSAmIE5v
ZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTZXRM
b2NhbDoKLSAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOiAvLyBGSVhNRTogVGhlIEdldExv
Y2FsIGNhc2UgaXMgb25seSBuZWNlc3NhcnkgdW50aWwgd2UgZG8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjcwNy4KLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNs
ZWFyRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NSKCk7Ci0gICAgICAgIAotICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5k
ZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhi
bG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgc291
cmNlSW5kZXggPSAwOwogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOwogICAg
ICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQaGFudG9t
OiB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZGV4ID4gMSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdE5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXggLSAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5l
ZWQgdG8gc3BlY2lhbGl6ZSBmb3IgUGhhbnRvbS4gbGFzdE5vZGUgY291bGQgYmUgYW55IG5vZGUK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1
dCB3ZSBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGxhc3ROb2RlLT5vcCgpICE9IFBoYW50b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCBsYXN0Tm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
ZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7
ICsraikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2Rl
LT5jaGlsZHJlbi5jaGlsZChqKS5ub2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFmb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDaGVjazogewotICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5j
aGlsZChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdl
LndpbGxIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2Rl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBjYXNlIE11c3RHZW5lcmF0ZTogewotICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wg
a2lsbCA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IENoZWNrKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbiA9IG5v
ZGUtPmNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAg
ICAgICAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgICAgICAgICBjYXNlIE11c3RHZW5lcmF0
ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGtpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0
SW5kZXgrKykgPSBub2RlOworICAgICAgICAgICAgICAgIGlmICgha2lsbCkKKyAgICAgICAgICAg
ICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0gbm9kZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFyZ2V0SW5kZXgpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CiB9OwogICAgIAotYm9vbCBwZXJm
b3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBoKQorYm9vbCBwZXJmb3JtQ2xlYW5VcChHcmFw
aCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFu
dG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbVJlbW92YWxQ
aGFzZT4oZ3JhcGgpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ2xl
YW4gVXAgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8Q2xlYW5VcFBoYXNlPihncmFwaCk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkocmV2aXNpb24gMTgzMjA1KQkoZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuaDoxODMyMDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKyNkZWZpbmUgREZH
UGhhbnRvbVJlbW92YWxQaGFzZV9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworLy8gQ2xlYW5zIHVwIHVu
bmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJlZHVjZXMgbGl2
ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAorLy8gZWxpbWluYXRlcyBtYW55IFBoYW50b21zIGVudGly
ZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lzLgorLy8KKy8vIFRoaXMgc2hv
dWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3JtIGl0J3MgYmV0
dGVyIHRvIHJ1bgorLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5jZSBpdCdzIG1v
cmUgcG93ZXJmdWwuCisKK2Jvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJik7CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisj
ZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDggKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgREZHUGhhbnRvbVJl
bW92YWxQaGFzZV9oCi0jZGVmaW5lIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorI2lmbmRlZiBE
RkdDbGVhblVwUGhhc2VfaAorI2RlZmluZSBERkdDbGVhblVwUGhhc2VfaAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKQEAgLTMyLDE2ICszMiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKIGNsYXNzIEdyYXBoOwogCi0vLyBDbGVhbnMgdXAgdW5uZWNlc3NhcnkgUGhhbnRv
bXMgYW5kIFBoYW50b24gY2hpbGRyZW4uIFRoaXMgcmVkdWNlcyBsaXZlIHJhbmdlcywgYnV0IGFs
c28sIGl0Ci0vLyBlbGltaW5hdGVzIG1hbnkgUGhhbnRvbXMgZW50aXJlbHkuIFRoaXMgaW52YWxp
ZGF0ZXMgbGl2ZW5lc3MgYW5hbHlzaXMuCi0vLwotLy8gVGhpcyBzaG91bGQgd29yayBvdmVyIGFs
bCBJUiBmb3JtczsgaG93ZXZlciwgaW4gU1NBIGZvcm0gaXQncyBiZXR0ZXIgdG8gcnVuCi0vLyBQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlIHNpbmNlIGl0J3MgbW9yZSBwb3dlcmZ1bC4KKy8v
IENsZWFucyB1cCB1bm5lZWRlZCBub2RlcywgbGlrZSBlbXB0eSBDaGVja3MsIFBoYW50b21zLCBh
bmQgTXVzdEdlbmVyYXRlJ3MuCiAKLWJvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJik7
Citib29sIHBlcmZvcm1DbGVhblVwKEdyYXBoJik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJl
bW92YWxQaGFzZV9oCisjZW5kaWYgLy8gREZHQ2xlYW5VcFBoYXNlX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOwog
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7
IC8vIENhdGNoIHRoZSBmYWN0IHRoYXQgd2UgbWF5IGZpbHRlciBvbiBjZWxsLgotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzLDgg
KzEzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRl
KGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9k
ZS0+b3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVu
KTsKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Db25zdGFudFN0b3JhZ2VQb2ludGVy
KHZpZXctPnZlY3RvcigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTE0Nyw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVl
KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVy
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUo
aW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBA
IC0xNjcsNyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoYWxsR29vZCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTE3OSw3ICsxNzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheWlm
eTogewogICAgICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNr
ZWQobV9ncmFwaCwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1Bo
YW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAg
ICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTE4OCw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLm9ubHlTdHJ1Y3R1cmUoKSAh
PSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGlt
aW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTE5Niw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsK
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIwNCw3ICsy
MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5OiB7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYg
U3BlY0VtcHR5KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkBAIC0yMTQsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52
YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQz
MigpICYmIHJpZ2h0LmlzSW50MzIoKQogICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obGVmdC5hc0ludDMyKCkpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJpZ2h0
LmFzSW50MzIoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRv
bSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAg
ICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTUxNiwxMCArNTE1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IEFkamFjZW5jeUxpc3QgY2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCB2YWx1ZSk7Ci0gICAg
ICAgICAgICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRyZW4pOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBvcmlnaW4sIGNoaWxkcmVuKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTY0
MCwxMCArNjM3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpIHsKLSAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwp
CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5v
ZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZENo
ZWNrcygKQEAgLTY4Myw3ICs2NzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBKU0Nv
bnN0YW50OgogICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgICAgIGNh
c2UgSW50NTJDb25zdGFudDoKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9t
KCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBub2RlLCAiQmFkIFVwc2lsb24gcGhpKCkgcG9pbnRlciIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwxMiArNTQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgICAgIGZpeHVw
QmxvY2soYmxvY2spOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGlzIGxpa2Ug
Y2xlYW5WYXJpYWJsZXMsIGJ1dCBoYXMgYSBtdWNoIHNpbXBsZXIgYXBwcm9hY2ggdG8gR2V0TG9j
YWwuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2ldOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhhbnRvbSAm
JiBub2RlLT5vcCgpICE9IENoZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBudWxs
cHRyOwogICAgICAgICAgICAgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRl
eCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKICAgICAgICAgICAgICAgICBm
aXh1cEJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwotICAgICAgICAgICAgY2xlYW5W
YXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBNdXN0R2VuZXJhdGUvUGhhbnRvbS9DaGVjayBjbGVhbi11
cC4KQEAgLTE1MywyNyArMTUxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
W2NoaWxkSWR4XTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uu
aXNQcm92ZWQoKSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZWRnZSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9k
ZS0+b3JpZ2luLCBlZGdlKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2spOwogICAgICAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZHJlbi5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZWZDb3Vu
dCgxKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKLSAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UuaXNQcm92ZWQoKSB8fCBlZGdlLndp
bGxOb3RIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVu
LnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+c2V0UmVmQ291bnQoMSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IH0KICAgICAgICAgfQpAQCAtMTgxLDI5
ICsxNzEsNiBAQCBwcml2YXRlOgogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2Nr
KTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFyaWFibGVzVmVjdG9yVHlw
ZT4KLSAgICB2b2lkIGNsZWFuVmFyaWFibGVzKFZhcmlhYmxlc1ZlY3RvclR5cGUmIHZhcmlhYmxl
cykKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhcmlhYmxlcy5zaXplKCk7IGkt
LTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSB2YXJpYWJsZXNbaV07Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSAhPSBQaGFudG9tICYmIG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hv
dWxkR2VuZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IEdldExvY2FsKSB7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUt
PmNoaWxkMSgpLm5vZGUoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBQaGkgfHwgbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzW2ldID0gbm9kZTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyaWFibGVzW2ldID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBJ
bnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU2V0TG9j
YWw6CiAgICAgY2FzZSBNb3ZIaW50OgogICAgIGNhc2UgWm9tYmllSGludDoKLSAgICBjYXNlIFBo
YW50b206CiAgICAgY2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNh
c2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsOCBAQCBwcml2YXRlOgog
ICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAw
OyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKICAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQobV9pbmRleEluQmxvY2spOwotICAg
ICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgZml4dXBOb2Rl
KG1fY3VycmVudE5vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGFkZFBoYW50b21zSWZOZWNlc3Nh
cnkoKTsKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogICAg
IApAQCAtMjYyLDEyICsyNjAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeERvdWJs
ZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeERvdWJs
ZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMg
cGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQotICAgICAgICAgICAgICAgIC8vIERvdWJsZUFzSW50
MzIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYvTW9kIG5vZGUgdGhhdCB0aGUgY29u
dmVyc2lvbnMKLSAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGluc2VyZWQgb24uCi0gICAgICAg
ICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7Ci0K
ICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHJlZidpbmcgb24gdGhlIGNo
aWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9tCiAgICAgICAgICAgICAgICAg
Ly8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAgICAgIE5vZGUqIG5ld0Rpdmlz
aW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTgzOSw3ICs4MzEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9u
ZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAg
IEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkpOwogICAgICAgICAgICAgICAg
IG9ic2VydmVVc2VLaW5kT25Ob2RlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwog
ICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQoCkBAIC05OTAsNyArOTgy
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOiB7CiAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CkBAIC0xMDA0LDYgKzk5NSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAvLyBQaGFudG9tcyBh
cmUgbWVhbmluZ2xlc3MgcGFzdCBGaXh1cC4gV2UgcmVjcmVhdGUgdGhlbSBvbi1kZW1hbmQgaW4g
dGhlIGJhY2tlbmQuCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgRmlhdEludDUyOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChl
bmFibGVJbnQ1MigpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CkBA
IC0xMDY3LDcgKzEwNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzU3RyaW5nOgogICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewog
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2Rl
LT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRP
bk5vZGU8U3RyaW5nVXNlPihub2RlKTsKQEAgLTEwNzcsNyArMTA3Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
RWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE9iamVjdFVzZSkpOwogICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAg
ICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPYmplY3RVc2U+KG5vZGUpOwpAQCAtMTI4
OCw3ICsxMjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHByb2Nlc3Mg
bXVjaCBlYXNpZXIuCiAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+
KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5v
cmlnaW4sCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywg
bm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIFN0cmluZ1Vz
ZSkpOwogICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEtub3duU3RyaW5nVXNlKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE0MjcsMTIgKzE0MjMsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmlnaHQuc2V0Tm9kZSh0b1N0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IC8vIFdlJ3JlIGRvaW5nIGNoZWNrcyB1cCB0aGVyZSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCB0aGUKLSAgICAgICAgLy8gKm9yaWdpbmFsKiBpbnB1dHMgdG8gdGhlIGFkZGl0aW9uIGFy
ZSBsaXZlIHVwIHRvIGhlcmUuCi0gICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdp
biwKLSAgICAgICAgICAgIEVkZ2Uob3JpZ2luYWxMZWZ0KSwgRWRnZShvcmlnaW5hbFJpZ2h0KSk7
Ci0gICAgICAgIAogICAgICAgICBjb252ZXJ0VG9NYWtlUm9wZShub2RlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTU1Niw3ICsxNTQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpTdHJpbmcpIHsKICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBvcmlnaW4sIEVkZ2UoYXJyYXksIFN0cmluZ1Vz
ZSkpOworICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG9y
aWdpbiwgRWRnZShhcnJheSwgU3RyaW5nVXNlKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0
dXJlKG1fZ3JhcGgsIG9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIApAQCAtMTc2Nyw3ICsxNzU3
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2lu
ZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2RlLCBLbm93bkludDMyVXNl
KTsKLSAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUpOwogICAgIH0KICAgICAKICAgICB2
b2lkIGZpeEludE9yQm9vbGVhbkVkZ2UoRWRnZSYgZWRnZSkKQEAgLTE3ODksNyArMTc3OCw2IEBA
IHByaXZhdGU6CiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlKG5vZGUsIHVzZUtpbmQpOwog
ICAgICAgICAKICAgICAgICAgZWRnZSA9IEVkZ2UobmV3Tm9kZSwgSW50MzJVc2UpOwotICAgICAg
ICBhZGRSZXF1aXJlZFBoYW50b20obm9kZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4RG91
YmxlT3JCb29sZWFuRWRnZShFZGdlJiBlZGdlKQpAQCAtMTgxMSw3ICsxNzk5LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAg
IAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2RlLCBEb3VibGVSZXBVc2UpOwotICAgICAgICBh
ZGRSZXF1aXJlZFBoYW50b20obm9kZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdHJ1bmNhdGVD
b25zdGFudFRvSW50MzIoRWRnZSYgZWRnZSkKQEAgLTE5OTEsMTEgKzE5NzgsOSBAQCBwcml2YXRl
OgogICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sg
PSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsK
ICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQobV9pbmRleEluQmxvY2spOwot
ICAgICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgdHJ5VG9S
ZWxheFJlcHJlc2VudGF0aW9uKG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgREZHX05PREVf
RE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNp
b25zRm9yRWRnZSk7CiAgICAgICAgIH0KLSAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgp
OwogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCkBA
IC0yMDA5LDcgKzE5OTQsNiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgY2FzZSBQaGFudG9t
OgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICAg
ICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3VycmVudE5vZGUsIGZp
eEVkZ2VSZXByZXNlbnRhdGlvbik7CkBAIC0yMDcxLDggKzIwNTUsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5u
b2RlKCkpOwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURvdWJsZSwgRG91Ymxl
Q29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIwOTUsOCArMjA3Nyw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uu
bm9kZSgpKTsKLQogICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTWFjaGluZUludENvbnN0YW50KCkp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAog
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIEludDUy
Q29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMjMsOCArMjEwMyw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1
MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2lu
LApAQCAtMjE0MCwzMiArMjExOCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9IH0KICAgICB9CiAg
ICAgCi0gICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKLSAgICB7Ci0gICAg
ICAgIG1fcmVxdWlyZWRQaGFudG9tcy5hcHBlbmQobm9kZSk7Ci0gICAgfQotCi0gICAgdm9pZCBh
ZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3JlcXVpcmVkUGhh
bnRvbXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21zLnNpemUoKTsgaS0tOykgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fcmVxdWlyZWRQaGFudG9tc1tpXTsKLSAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBQaGFudG9tLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCi0gICAgICAgICAg
ICAgICAgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IG1fcmVxdWlyZWRQaGFudG9tcy5yZXNpemUoMCk7Ci0gICAgfQotICAgIAogICAgIEJhc2ljQmxv
Y2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAgICAgTm9kZSogbV9j
dXJyZW50Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9vbCBt
X3Byb2ZpdGFiaWxpdHlDaGFuZ2VkOwotICAgIFZlY3RvcjxOb2RlKiwgMz4gbV9yZXF1aXJlZFBo
YW50b21zOwogfTsKICAgICAKIGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxODMyMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTkzLDI2ICs1OTMsNiBAQCB2b2lkIEdyYXBoOjpyZXNldFJlYWNoYWJpbGl0eSgpCiAgICAg
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiB9CiAKLXZvaWQgR3JhcGg6Om1lcmdlUmVsZXZhbnRU
b09TUigpCi17Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2Nrc0luTmF0dXJhbE9y
ZGVyKCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YXNlIFB1dEhpbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3Mo
Tm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVm
Q291bnRDYWxjdWxhdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHJldmlzaW9uIDE4MzIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkod29ya2luZyBjb3B5KQpAQCAtNDU3LDggKzQ1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
dGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAgIHZvaWQgcmVzZXRSZWFjaGFiaWxpdHkoKTsKICAg
ICAKLSAgICB2b2lkIG1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgIAogICAgIHZvaWQgY29tcHV0
ZVJlZkNvdW50cygpOwogICAgIAogICAgIHVuc2lnbmVkIHZhckFyZ051bUNoaWxkcmVuKE5vZGUq
IG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0
LmgJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gaW5zZXJ0Q29uc3RhbnRGb3JVc2UoaW5kZXgsIG9yaWdpbiwganNVbmRl
ZmluZWQoKSwgdXNlS2luZCk7CiAgICAgfQogICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNp
emVfdCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4pCisg
ICAgeworICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAgICAg
aWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gaW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIGNo
aWxkcmVuKTsKKyAgICB9CisgICAgCisgICAgTm9kZSogaW5zZXJ0Q2hlY2soc2l6ZV90IGluZGV4
LCBOb2RlT3JpZ2luIG9yaWdpbiwgRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKGVkZ2Uu
d2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoaW5kZXgsIFNw
ZWNOb25lLCBDaGVjaywgb3JpZ2luLCBlZGdlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAg
ICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFycmF5Qm91bmRzOgotICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyAr
MjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZS4gQnV0IGZvciBub3cgd2UganVzdCBh
c3NlcnQgdGhhdCdzIHRoZSBjYXNlLgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUs
ICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgICAgIAotICAgICAgICBu
b2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBQaGFudG9tLCBvcmlnaW5hbE9yaWdp
biwgbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKFNw
ZWNOb25lLCBDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAg
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTUgQEAgYm9vbCBO
b2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgmIAogICAgIH0KIH0KIAordm9pZCBOb2Rl
OjpyZW1vdmUoKQoreworICAgIEFTU0VSVCghKGZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwor
ICAgIAorICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uanVzdENoZWNrcygpOworICAgIAorICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsKK30KKwogdm9pZCBOb2RlOjpjb252ZXJ0VG9JZGVu
dGl0eSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2hpbGQxKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTUgKzQwNyw3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9mbGFncyA9IGRlZmF1bHRGbGFncyhvcCk7CiAgICAg
fQogCi0gICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tKCkKLSAgICB7Ci0gICAgICAgIHNldE9wQW5k
RGVmYXVsdEZsYWdzKFBoYW50b20pOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNvbnZlcnRUb0No
ZWNrKCkKLSAgICB7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsKLSAgICB9
CisgICAgdm9pZCByZW1vdmUoKTsKIAogICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUo
U3RydWN0dXJlU2V0KiBzZXQpCiAgICAgewpAQCAtNDI1LDcgKzQxNyw3IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAKICAgICB2b2lkIHJlcGxhY2VXaXRoKE5vZGUqIG90aGVyKQogICAgIHsKLSAgICAg
ICAgY29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZW1vdmUoKTsKICAgICAgICAgc2V0UmVw
bGFjZW1lbnQob3RoZXIpOwogICAgIH0KIApAQCAtMTUzNSwyMSArMTUyNyw2IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogICAgIAotICAgIGJvb2wg
d2lsbEhhdmVDb2RlR2VuT3JPU1IoKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChvcCgpKSB7Ci0g
ICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgY2Fz
ZSBab21iaWVIaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgUGhh
bnRvbToKLSAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6Ci0gICAgICAgICAgICByZXR1cm4gY2hp
bGQxKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2UgfHwgY2hpbGQyKCkudXNlS2lu
ZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2UgfHwgY2hpbGQzKCkudXNlS2luZFVuY2hlY2tlZCgp
ICE9IFVudHlwZWRVc2U7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hv
dWxkR2VuZXJhdGUoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBib29sIGlzU2VtYW50
aWNhbGx5U2tpcHBhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IENvdW50RXhl
Y3V0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShy
ZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFn
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCiAjZGVmaW5lIE5vZGVBcml0aEZsYWdzTWFzayAgICAgICAgICAgICAg
IChOb2RlQmVoYXZpb3JNYXNrIHwgTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKQogCi0jZGVmaW5l
IE5vZGVSZWxldmFudFRvT1NSICAgICAgICAgICAgICAgMHgxMDAwMAorI2RlZmluZSBOb2RlSXNG
bHVzaGVkICAgICAgICAgICAgICAgICAgIDB4MTAwMDAgLy8gQ29tcHV0ZWQgYnkgQ1BTUmV0aHJl
YWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlvdSB3aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRz
LXJlYWNoYWJsZSBmcm9tIGEgRmx1c2guCiAKLSNkZWZpbmUgTm9kZUlzRmx1c2hlZCAgICAgICAg
ICAgICAgICAgICAweDIwMDAwIC8vIENvbXB1dGVkIGJ5IENQU1JldGhyZWFkaW5nUGhhc2UsIHdp
bGwgdGVsbCB5b3Ugd2hpY2ggbG9jYWwgbm9kZXMgYXJlIGJhY2t3YXJkcy1yZWFjaGFibGUgZnJv
bSBhIEZsdXNoLgotCi0jZGVmaW5lIE5vZGVNaXNjRmxhZzEgICAgICAgICAgICAgICAgICAgMHg0
MDAwMAotI2RlZmluZSBOb2RlTWlzY0ZsYWcyICAgICAgICAgICAgICAgICAgIDB4ODAwMDAKKyNk
ZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAweDIwMDAwCisjZGVmaW5lIE5v
ZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHg0MDAwMAorI2RlZmluZSBOb2RlTWlzY0Zs
YWczICAgICAgICAgICAgICAgICAgIDB4ODAwMDAKIAogdHlwZWRlZiB1aW50MzJfdCBOb2RlRmxh
Z3M7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlz
aW9uIDE4MzIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjc0LDEwICsyNzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZUFjdGl2YXRpb24sIE5vZGVSZXN1bHRKUykgXAog
ICAgIFwKICAgICBtYWNybyhDcmVhdGVEaXJlY3RBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAot
ICAgIG1hY3JvKFBoYW50b21EaXJlY3RBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKFBoYW50b21EaXJlY3RBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFj
cm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUGhh
bnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1
dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NjEsNyArNTYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFN0b3Jl
QmFycmllcjoKICAgICAgICAgICAgICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIApAQCAtNzY2LDcgKzc2Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0
U3RydWN0dXJlOgogICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAgICAg
ICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2FzZSBDaGVj
azoKICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVy
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJ
VCkKLQotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0Lmgi
Ci0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5oIgotI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKLSNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQot
c3RhdGljIGNvbnN0IE5vZGVGbGFncyBOb2RlTmVlZHNQaGFudG9tID0gTm9kZU1pc2NGbGFnMTsK
LXN0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9kZU5lZWRzTXVzdEdlbmVyYXRlID0gTm9kZU1pc2NG
bGFnMjsKLQotY2xhc3MgUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7Ci1wdWJsaWM6Ci0gICAgUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZShHcmFwaCYgZ3Jh
cGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJwaGFudG9tIGNhbm9uaWNhbGl6YXRpb24iKQot
ICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBydW4oKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fZ3JhcGgubV9mb3JtID09IFNTQSk7Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLmNsZWFy
RmxhZ3NPbkFsbE5vZGVzKE5vZGVOZWVkc1BoYW50b20gfCBOb2RlTmVlZHNNdXN0R2VuZXJhdGUg
fCBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgIG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NS
KCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxv
Y2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHVuc2lnbmVkIHNvdXJjZUluZGV4ID0gMDsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldElu
ZGV4ID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkp
IHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4Kysp
OwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IE11c3RHZW5lcmF0ZSB8fCBub2Rl
LT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBDaGVjaykgewotICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5j
aGlsZChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IE11c3RHZW5lcmF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdl
LT5tZXJnZUZsYWdzKE5vZGVOZWVkc011c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9kZS0+b3Ao
KSA9PSBQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQaGFudG9t
IG9uIGEgbm9kZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGtl
ZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhpcyBub2Rl
IGluc3RlYWQgb2YganVzdCBoYXZpbmcgYSBDaGVjay4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZGdlLT5tZXJnZUZsYWdzKE5vZGVOZWVkc1BoYW50b20pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVj
aygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRoZSB0
eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9h
bGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0gICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxv
Y2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2Rl
SW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewotICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVOZWVkc011c3RHZW5lcmF0ZSkgewotICAg
ICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBNdXN0R2VuZXJhdGUsIG5vZGUtPm9y
aWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChu
b2RlLT5mbGFncygpICYgTm9kZU5lZWRzUGhhbnRvbSkgewotICAgICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdl
KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotfTsKLSAgICAKLWJvb2wgcGVyZm9ybVBoYW50b21DYW5vbmljYWxp
emF0aW9uKEdyYXBoJiBncmFwaCkKLXsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bigiREZHIFBoYW50b20gQ2Fub25pY2FsaXphdGlvbiBQaGFzZSIpOwotICAgIHJldHVybiBydW5Q
aGFzZTxQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlPihncmFwaCk7Ci19Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuaAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2VfaAotI2Rl
ZmluZSBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gKLQotI2lmIEVOQUJMRShERkdf
SklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBoOwot
Ci0vLyBSZXBsYWNlcyBhbGwgcHJlLWV4aXN0aW5nIFBoYW50b21zIHdpdGggQ2hlY2tzIG9yIHJl
bW92ZXMgdGhlbSBpZiB0aGUgQ2hlY2sgaXMgdW5uZWNlc3NhcnkuIElmCi0vLyB0aGUgUGhhbnRv
bSB3YXMgbmVjZXNzYXJ5IChpdCB1c2VzIGEgbm9kZSB0aGF0IGlzIHJlbGV2YW50IHRvIE9TUikg
dGhlbiB0aGUgUGhhbnRvbSBpcyBob2lzdGVkCi0vLyB0byBqdXN0IGJlbG93IHRoZSBub2RlLgot
Ly8KLS8vIFRoaXMgcGhhc2UgaXMgb25seSB2YWxpZCBpbiBTU0EsIGJlY2F1c2UgaXQncyBvbmx5
IGluIFNTQSB0aGF0IFBoYW50b21zIGFyZSBpZ25vcmVkIGZvciB0aGUKLS8vIHB1cnBvc2Ugb2Yg
bGl2ZW5lc3MtYXQtc29tZS1wb2ludCBhbmQgYXJlIG9ubHkgdXNlZCBmb3IgYWJzb2x1dGUgbGl2
ZW5lc3MuCi0vLwotLy8gVGhpcyBwaGFzZSBtYWtlcyBhIGxvdCBvZiB0aGluZ3MgZWFzaWVyLCBs
aWtlIENGRyBzaW1wbGlmaWNhdGlvbjogeW91IGRvbid0IGhhdmUgdG8gaW5zZXJ0IGFueQotLy8g
cGhhbnRvbXMgd2hlbiBqZXR0aXNvbmluZyBhIENGRyBlZGdlLgotCi1ib29sIHBlcmZvcm1QaGFu
dG9tQ2Fub25pY2FsaXphdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdQaGFu
dG9tUmVtb3ZhbFBoYXNlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCi0jaW5jbHVkZSAiREZHUGhh
c2UuaCIKLSNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgotI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUGhhbnRvbVJlbW92
YWxQaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci1wdWJsaWM6Ci0gICAgUGhhbnRvbVJlbW92YWxQaGFz
ZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJwaGFudG9tIHJlbW92YWwi
KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBydW4oKQotICAgIHsKLSAgICAgICAgYm9v
bCBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAg
ICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIEFsbCBQaGlzIG5lZWQgdG8gYWxyZWFkeSBiZSBtYXJrZWQgYXMg
cmVsZXZhbnQgdG8gT1NSLgotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+cGhpc1tpXS0+ZmxhZ3Mo
KSAmIE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewotICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBTZXRMb2NhbDoKLSAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOiAvLyBGSVhNRTogVGhl
IEdldExvY2FsIGNhc2UgaXMgb25seSBuZWNlc3NhcnkgdW50aWwgd2UgZG8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjcwNy4KLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmNsZWFyRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NSKCk7Ci0gICAgICAgIAotICAg
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJs
b2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZUlu
ZGV4ID0gMDsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKLSAgICAgICAg
ICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKLSAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOwotICAgICAgICAgICAgICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbTogewot
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzb3VyY2VJbmRleCA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3ROb2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4IC0gMik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBuZWVkIHRv
IHNwZWNpYWxpemUgZm9yIFBoYW50b20uIGxhc3ROb2RlIGNvdWxkIGJlIGFueSBub2RlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGlzbid0IHN1YmplY3QgdG8gRENFLiBCdXQgd2Ug
a2VlcCBpdCBzaW1wbGUgZm9yIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0
Tm9kZS0+b3AoKSAhPSBQaGFudG9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGFz
dE5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IG5vZGUtPm9yaWdpbi5mb3JFeGl0KQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNl
bmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2Ug
PSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
ZWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBjaGVjay4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlZGdlLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2op
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+Y2hp
bGRyZW4uY2hpbGQoaikubm9kZSgpID09IGVkZ2Uubm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91
bmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKLSAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQo
aSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxs
SGF2ZUNoZWNrKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4
KyspID0gbm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFy
Z2V0SW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gY2hhbmdlZDsK
LSAgICB9Ci19OwotICAgIAotYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBo
KQotewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBSZW1v
dmFsIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21SZW1vdmFsUGhhc2U+KGdy
YXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5oCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0jZGVmaW5lIERGR1BoYW50b21S
ZW1vdmFsUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIENsZWFucyB1cCB1bm5lY2Vzc2Fy
eSBQaGFudG9tcyBhbmQgUGhhbnRvbiBjaGlsZHJlbi4gVGhpcyByZWR1Y2VzIGxpdmUgcmFuZ2Vz
LCBidXQgYWxzbywgaXQKLS8vIGVsaW1pbmF0ZXMgbWFueSBQaGFudG9tcyBlbnRpcmVseS4gVGhp
cyBpbnZhbGlkYXRlcyBsaXZlbmVzcyBhbmFseXNpcy4KLS8vCi0vLyBUaGlzIHNob3VsZCB3b3Jr
IG92ZXIgYWxsIElSIGZvcm1zOyBob3dldmVyLCBpbiBTU0EgZm9ybSBpdCdzIGJldHRlciB0byBy
dW4KLS8vIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ugc2luY2UgaXQncyBtb3JlIHBvd2Vy
ZnVsLgotCi1ib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYpOwotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8v
IERGR1BoYW50b21SZW1vdmFsUGhhc2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCShyZXZpc2lvbiAxODMyMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NQU1JldGhyZWFkaW5n
UGhhc2UuaCIKICNpbmNsdWRlICJERkdDU0VQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0NsZWFuVXBQ
aGFzZS5oIgogI2luY2x1ZGUgIkRGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgiCiAjaW5jbHVkZSAi
REZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0RDRVBoYXNlLmgi
CkBAIC01MSw5ICs1Miw3IEBACiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQ
aGFzZS5oIgogI2luY2x1ZGUgIkRGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5oIgotI2luY2x1ZGUgIkRGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5o
IgpAQCAtMzE4LDcgKzMxNyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKGRmZyk7CiAKICAgICAg
ICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAgICAgICAgcGVyZm9ybVBoYW50
b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7CiAgICAgICAgIHBl
cmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAgICAgICBwZXJmb3JtRENFKGRmZyk7CiAgICAg
ICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRmZyk7CkBAIC0zNDQsNyArMzQzLDcgQEAgUGxh
bjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICAgICAgcmV0dXJu
IEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwZXJmb3JtUGhhbnRvbVJl
bW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgYml0LgorICAgICAgICBwZXJm
b3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBiaXQuCiAgICAgICAg
IHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhkZmcpOwogICAgICAgICBwZXJmb3JtTG9vcFBy
ZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcp
OwpAQCAtMzU5LDcgKzM1OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKICAgICAgICAgcGVy
Zm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKGRmZyk7Ci0gICAg
ICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOyAvLyBSZWR1Y2UgdGhlIGdy
YXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7IC8vIFJlZHVjZSB0
aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBj
aGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAgICBpZiAoT3B0
aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSkgewpAQCAtMzgxLDcgKzM4MCw3
IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgLy8g
dGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1wbGUgU1NBIGZpeC11cC4KICAgICAgICAgcGVy
Zm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2Fs
aXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJm
b3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1HbG9iYWxDU0Uo
ZGZnKTsKICAgICAgICAgCkBAIC0zOTAsNyArMzg5LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRo
IFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBkZmcubV9maXhwb2ludFN0YXRlID0gRml4cG9p
bnRDb252ZXJnZWQ7CiAgICAgICAgIAogICAgICAgICBwZXJmb3JtU3RvcmVCYXJyaWVyRWxpc2lv
bihkZmcpOwotICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oZGZnKTsKKyAg
ICAgICAgcGVyZm9ybUNsZWFuVXAoZGZnKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlz
aXMoZGZnKTsKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBpZiAoT3B0aW9uczo6
dmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3MoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAx
ODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAg
ICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgS2lsbFN0YWNrLCBub2RlLT5v
cmlnaW4sIE9wSW5mbyhub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwub2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4
MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNldCgp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JPcGVyYW5kLm9w
ZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2Fs
KCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
QEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZhbHVlRm9yT3Bl
cmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFNldEFy
Z3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJF
bGlzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2RlKiBub2Rl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwotICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAg
IH0KIAogICAgIHZvaWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRCYXJyaWVy
cywgTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgZm91bmRUZXJtaW5hbCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGJsb2NrLT5zaXplKCk7ICsraikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGJsb2NrLT5hdChqKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5v
ZGUtPm9wKCkgPT0gUGhhbnRvbUxvY2FsIHx8IG5vZGUtPm9wKCkgPT0gRmx1c2gpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20g
fHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tTG9jYWwgfHwgbm9kZS0+b3AoKSA9PSBGbHVzaCB8fCBu
b2RlLT5vcCgpID09IENoZWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9U
b0NoaWxkcmVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKQEAgLTQ2MSw2ICs0NjEsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgor
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhwb2ludFN0
YXRlICE9IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNTQwLDYgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsVW5saW5r
ZWQ6CiAgICAgICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKKyAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISJiYWQg
bm9kZSB0eXBlIGZvciBTU0EiKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdz
Rm9yd2FyZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5z
aWduZWQgbm9kZUluZGV4ID0gY2FuZGlkYXRlTm9kZUluZGV4ICsgMTsgbm9kZUluZGV4IDwgYmxv
Y2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2FzZSBDaGVjazoKICAgICAgICAg
ICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgpAQCAtMjEy
LDcgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
Y2FuZGlkYXRlTm9kZUluZGV4ICsgMTsgbm9kZUluZGV4IDw9IGxhc3RVc2VySW5kZXg7ICsrbm9k
ZUluZGV4KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBjYXNlIE11c3RHZW5l
cmF0ZToKICAgICAgICAgICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOCArOTgsNiBAQCB2b2lk
IGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUtPndpbGxIYXZlQ29kZUdlbk9yT1NSKCkgJiYgIU9wdGlv
bnM6OnNob3dBbGxERkdOb2RlcygpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2sgc3Rh
Y2s7CiAgICAgICAgICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251518</attachid>
            <date>2015-04-23 17:58:12 -0700</date>
            <delta_ts>2015-04-27 12:21:45 -0700</delta_ts>
            <desc>almost</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>104383</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODMyMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw2IEBACiAJCTBGNjY2RUMxMTgzNTY2
RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1
bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2
NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLzsgfTsKIAkJMEY2
NjZFQzcxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzMxODM1NjcyQjAwRDAxN0Yx
IC8qIERGR0F2YWlsYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTBGNjY2RUNDMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NjZFQ0ExODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi87IH07Ci0JCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdG
MSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAv
KiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQg
LyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2
RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0Vk
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY4MkZCMjE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY4MkZCMDE5QkNCMzY0MDBG
QTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgKi87IH07CkBAIC00MTAsOCArNDA4LDYgQEAK
IAkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5
MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0
QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyog
REZHQ2FwYWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5RUJD
NDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTBGN0IzNjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcCAqLzsgfTsKLQkJMEY3QjM2NjIxOTdDNTI1QzAwRUQxRERD
IC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBE
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5
VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTQ2Miw2ICs0NTgsOCBAQAogCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZH
Rmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlEMzM5NTE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5RDMzOUExODAzQURCNzAw
NzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM5ODE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBz
LmNwcCAqLzsgfTsKIAkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTkx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBE
RkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAg
Ki87IH07CisJCTBGOUQzNjk1MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzNjkzMUFF
OUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQjRGNDE3RkNCOTE3MDBDQjY3RjggLyog
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAgKi87IH07CiAJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUZDOEMzMTRF
MUI1RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLzsgfTsKQEAgLTUxOSw4ICs1MTcsNiBA
QAogCQkwRkJFMEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNzAxNkMx
REIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJGMTU4QzE5QjdBNTMxMDA2OTVERDAg
LyogREZHQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLzsg
fTsKIAkJMEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRjE1OEIxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAv
KiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkZERDAyMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmNwcCAqLzsgfTsKLQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQkZERDAzMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3
NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcyMTQ2OTNBRjkwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwICovOyB9OwpAQCAtMjEwMiw4ICsyMDk4LDYgQEAKIAkJMEY2NjZF
QkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFi
aWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxh
YmlsaXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjY2NkVDMzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5o
OyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY2NjZFQ0IxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25Q
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERGM0Yx
MzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0
IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZS5o
OyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
ODJGQjAxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBQ2FsY3VsYXRvci5jcHA7IHBhdGggPSBk
ZmcvREZHU1NBQ2FsY3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTQ1LDggKzIxMzksNiBAQAogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5n
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzkwODUzMTlBMjkw
QjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJ1
Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjdCMzY1RjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3QjM2NjAxOTdD
NTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxOTcsNiArMjE4OSw4IEBACiAJ
CTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7IHBhdGggPSBkZmcvREZHRmx1c2hl
ZEF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzk4MTgwM0FEQjcwMDcz
QzJCQyAvKiBGVExTdGFja01hcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMU3RhY2tNYXBzLmNwcDsgcGF0aCA9IGZ0bC9GVExTdGFja01hcHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5OTE4MDNBREI3MDA3M0MyQkMgLyogRlRM
U3RhY2tNYXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN0YWNrTWFw
cy5oOyBwYXRoID0gZnRsL0ZUTFN0YWNrTWFwcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjlEMzY5MjFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NsZWFuVXBQaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdDbGVhblVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjIx
N0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGggPSBk
ZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2NCw4ICsyMjU4LDYgQEAK
IAkJMEZCRTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrU2V0LmNwcDsgcGF0aCA9IGRmZy9E
RkdCbG9ja1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkYxNThCMTlC
N0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQmxvY2tTZXRJbmxpbmVzLmg7IHBhdGggPSBkZmcvREZHQmxvY2tT
ZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQkZERDAyMTk2Qzky
QkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBwYXRoID0g
ZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkJGREQwMzE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tUmVtb3ZhbFBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Lmg7IHBhdGggPSBkZmcv
REZHT1NSRXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc2RjE0Njkz
QUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlci5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRD
b21waWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc3MDE0NjkzQUVG
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4
ODAsNiArNDg3Miw4IEBACiAJCQkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBo
YXNlLmggKi8sCiAJCQkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8sCisJCQkJMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZC
IC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8sCisJCQkJMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZC
IC8qIERGR0NsZWFuVXBQaGFzZS5oICovLAogCQkJCUE3N0E0MjM4MTdBMEJCRkQwMEE4REI4MSAv
KiBERkdDbG9iYmVyaXplLmNwcCAqLywKIAkJCQlBNzdBNDIzOTE3QTBCQkZEMDBBOERCODEgLyog
REZHQ2xvYmJlcml6ZS5oICovLAogCQkJCUE3N0E0MjNBMTdBMEJCRkQwMEE4REI4MSAvKiBERkdD
bG9iYmVyU2V0LmNwcCAqLywKQEAgLTUwMjYsMTIgKzUwMjAsOCBAQAogCQkJCTBGRUZDOUE4MTY4
MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi8sCiAJCQkJMEYy
MzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8sCiAJ
CQkJMEYyMzVCRUExNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICov
LAotCQkJCTBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcCAqLywKLQkJCQkwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oICovLAogCQkJCTBGNjIzNzk1MUFFNDVDQTcwMEQ0
MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGNjIzNzk2MUFF
NDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCAqLywKLQkJCQkwRkJG
REQwMjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgKi8sCi0J
CQkJMEZCRkREMDMxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAq
LywKIAkJCQkwRkZGQzk0RjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuY3BwICovLAogCQkJ
CTBGRkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovLAogCQkJCTBGMkI5Q0RF
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQaGlDaGlsZHJlbi5jcHAgKi8sCkBAIC01MDUzLDggKzUw
NDMsNiBAQAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmggKi8sCiAJCQkJODZFQzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERG
R1JlZ2lzdGVyQmFuay5oICovLAotCQkJCTBGNjY2RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICovLAotCQkJCTBGNjY2RUNCMTgzNkIz
N0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLywKIAkJ
CQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywKIAkJCQkw
RjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCiAJCQkJQTc3QTQy
M0MxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCAqLywKQEAgLTU4NjgsNyAr
NTg1Niw2IEBACiAJCQkJMEZCRTBGNzUxNkMxREIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcy
NTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkVDOUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQzE4QTYwMDcwMDAx
QTI3RjggLyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MzE3QTBC
QkZEMDBBOERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0
MTAxN0YxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NDMsNiArNTkzMCw3IEBACiAJCQkJMEYyMzVC
RDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzY5NTFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJE
QjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTNDRTA4NjE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjA1Myw3ICs2MDQxLDYgQEAKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAg
LyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1Njgz
MzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGQkZERDA1MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBE
RUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NG
ODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTYxNDIsNyArNjEyOSw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEY3QjM2NjIxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUExMjc0MTkyRDlGREYwMDg3NjRBMyAvKiBE
RkdEb2VzR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY1MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTEwLDYgKzcwOTYsNyBAQAogCQkJCTBG
MkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVk
QXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERG
R0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3
NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkx
QTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTcxNTIsNyArNzEzOSw2IEBACiAJCQkJQTc4QTk3N0ExNzk3MzhCODAwOURG
NzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzQxNkMxREIwOTAw
ODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY2NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8q
IERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjJGQ0NGQjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RUM5REQyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjcsNyArNzM1Myw2IEBA
CiAJCQkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIg
LyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNG
OSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGN0Iz
NjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFn
ZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAv
KiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIg
LyogSlNNYXBJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1NDAsNyArNzUyNSw2IEBA
CiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZCRkREMDQxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQw
Q0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiAr
MTU2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFkamFjZW5jeUxpc3QoRml4ZWQsIGNo
aWxkMSgpLnNhbml0aXplZCgpLCBjaGlsZDIoKS5zYW5pdGl6ZWQoKSwgY2hpbGQzKCkuc2FuaXRp
emVkKCkpOwogICAgIH0KICAgICAKKyAgICBBZGphY2VuY3lMaXN0IGp1c3RDaGVja3MoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQWRqYWNlbmN5TGlzdCByZXN1bHQgPSAqdGhpczsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgeworICAg
ICAgICAgICAgaWYgKHJlc3VsdC5jaGlsZChpKS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQucmVtb3ZlRWRnZShpLS0pOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDcgKzE1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2Fw
ZShub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAg
ICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZI
aW50OgpAQCAtMzU0LDcgKzM1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21EaXJlY3RBcmd1bWVudHMpOwotICAgICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9u
ZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzOgpAQCAtMzYyLDcgKzM2MCw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21DbG9uZWRBcmd1bWVu
dHMpOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewpAQCAtNDg2LDcgKzQ4Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUs
IFB1dFN0YWNrLCBub2RlLT5vcmlnaW4sIE9wSW5mbyhkYXRhKSwgRWRnZSh2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNTM3LDcg
KzUzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hp
bGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgQmFzaWNCbG9jazo6cmVwbGFjZVRlcm1pbmFsKE5vZGUqIG4KICAgICAg
ICAgYXBwZW5kKG5vZGUpOwogICAgIGVsc2UgewogICAgICAgICBtX25vZGVzLmluc2VydChyZXN1
bHQuaW5kZXggKyAxLCBub2RlKTsKLSAgICAgICAgcmVzdWx0Lm5vZGUtPmNvbnZlcnRUb1BoYW50
b20oKTsKKyAgICAgICAgcmVzdWx0Lm5vZGUtPnJlbW92ZSgpOwogICAgIH0KICAgICAKICAgICBB
U1NFUlQodGVybWluYWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDggQEAgc3RydWN0
IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICAgICAgY2FzZSBSZXR1
cm46CiAgICAgICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAgICAgICAgIHJldHVy
biBOb2RlQW5kSW5kZXgobm9kZSwgaSk7Ci0gICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBj
YW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25s
eSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4KKyAgICAgICAgICAgIC8v
IFRoZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUg
d2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFs
LiBUaGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxk
cmVuLgorICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQn
cyBvdXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAg
ICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcs
MTEgKzMxNywxMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBrZXB0IGFsaXZlLgogICAgICAgICAK
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2NrIHNpbmNlIHdlIGRv
bid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKLSAgICAgICAgLy8gcmVhbGx5IHJl
bW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4KKyAgICAgICAgLy8g
cmVhbGx5IHJlbW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgY2hlY2suCiAgICAg
ICAgIE5vZGUqIHRlcm1pbmFsID0gZmlyc3RCbG9jay0+dGVybWluYWwoKTsKICAgICAgICAgQVNT
RVJUKHRlcm1pbmFsLT5pc1Rlcm1pbmFsKCkpOwogICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5
Tm9kZU9yaWdpbiA9IHRlcm1pbmFsLT5vcmlnaW47Ci0gICAgICAgIHRlcm1pbmFsLT5jb252ZXJ0
VG9QaGFudG9tKCk7CisgICAgICAgIHRlcm1pbmFsLT5yZW1vdmUoKTsKICAgICAgICAgQVNTRVJU
KHRlcm1pbmFsLT5yZWZDb3VudCgpID09IDEpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gamV0dGlzb25lZEJsb2Nrcy5zaXplKCk7IGktLTspIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQCBjbGFzcyBD
UFNSZXRocmVhZGluZ1BoYXNlIDogcHVibGljIFBoYXNlCiBwdWJsaWM6CiAgICAgQ1BTUmV0aHJl
YWRpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJDUFMgcmV0
aHJlYWRpbmciKQotICAgICAgICAsIG1fYXZhaWxhYmxlRm9yT1NSKE9wZXJhbmRzTGlrZSwgZ3Jh
cGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtMTI2
LDE0ICsxMjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgbV9i
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCkKICAgICAgICAgICAg
ID09IG1fYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zaXplRm9yPG9wZXJhbmRLaW5kPigpKTsKLSAg
ICAgICAgQVNTRVJUKAotICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkKLSAgICAgICAgICAgID09IG1fYXZhaWxhYmxlRm9yT1NSLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCk7IGktLTspIHsK
ICAgICAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4o
aSkgPSBudWxscHRyOwogICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRUYWlsLmF0Rm9y
PG9wZXJhbmRLaW5kPihpKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9T
Ui5hdEZvcjxvcGVyYW5kS2luZD4oaSkgPSBFZGdlKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
CkBAIC0yNDcsOCArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyByZWR1bmRh
bnQgYW5kIGluZWZmaWNpZW50LCBzaW5jZSByZWFsbHkgaXQganVzdCBtZWFucyB0aGF0IHdlIHdh
bnQgdG8KICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZSBsYXN0IE1vdkhpbnRlZCB2YWx1ZSBv
ZiB0aGF0IGxvY2FsIGFsaXZlLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMShtX2F2YWlsYWJsZUZvck9TUi5hdEZvcjxvcGVyYW5kS2lu
ZD4oaWR4KSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAg
ICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzU5LDE0ICszNTMsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZVNldChub2RlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAg
ICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwo
KSkgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDoKLSAgICAgICAgICAgICAgICBtX2F2
YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSkgPSBFZGdlKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTE3LDcgKzUw
Myw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBoaVN0YWNrRW50cnksIDEyOD4gbV9hcmd1bWVu
dFBoaVN0YWNrOwogICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+IG1fbG9jYWxQaGlTdGFj
azsKICAgICBWZWN0b3I8Tm9kZSosIDEyOD4gbV9mbHVzaGVkTG9jYWxPcFdvcmtsaXN0OwotICAg
IE9wZXJhbmRzPEVkZ2U+IG1fYXZhaWxhYmxlRm9yT1NSOwogfTsKIAogYm9vbCBwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbGVhblVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1KQkoZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOjE4MzIwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFw
aC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgi
CisjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKKyNpbmNsdWRlICJE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIFBoYW50b21SZW1vdmFsUGhh
c2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIFBoYW50b21SZW1vdmFsUGhhc2UoR3Jh
cGgmIGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRvbSByZW1vdmFsIikKKyAg
ICB7CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hh
bmdlZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2
YW50IHRvIE9TUi4KKyAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPnBoaXNbaV0tPmZsYWdzKCkgJiBO
b2RlUmVsZXZhbnRUb09TUik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2V0
TG9jYWw6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDogLy8gRklYTUU6IFRoZSBHZXRM
b2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdlIGRvIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCisgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBub2RlLT5j
bGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOworICAgICAgICAKKyAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9
IDA7CisgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7CisgICAgICAgICAgICB3
aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206IHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOworICAgICAgICAgICAgICAg
ICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgbmVlZCB0byBzcGVj
aWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3VsZCBiZSBhbnkgbm9kZQorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJqZWN0IHRvIERDRS4gQnV0IHdlIGtlZXAg
aXQgc2ltcGxlIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUt
Pm9wKCkgIT0gUGhhbnRvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxhc3ROb2Rl
LT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4uZm9yRXhpdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxp
c3Q6OlNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9k
ZS0+Y2hpbGRyZW4uY2hpbGQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2Up
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2suCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsYXN0Tm9kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPmNoaWxkcmVu
LmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShu
b2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVD
aGVjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9
IG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibG9jay0+cmVzaXplKHRhcmdldElu
ZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAg
fQorfTsKKyAgICAKK2Jvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJiBncmFwaCkKK3sK
KyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBoYW50b20gUmVtb3ZhbCBQ
aGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxQaGFudG9tUmVtb3ZhbFBoYXNlPihncmFwaCk7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgorI2lu
Y2x1ZGUgIkRGR0NsZWFuVXBQaGFzZS5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTM3
LDEwICszNywxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNz
IFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworY2xhc3MgQ2xlYW5VcFBoYXNl
IDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKLSAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBo
JiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCisgICAg
Q2xlYW5VcFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNsZWFu
IHVwIikKICAgICB7CiAgICAgfQogICAgIApAQCAtNDgsMTMwICs0OCw0MCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJs
b2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQWxsIFBoaXMgbmVlZCB0byBhbHJl
YWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCi0gICAgICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
bG9jay0+cGhpcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJsb2Nr
LT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgotICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9j
YWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBvbmx5IG5lY2Vzc2FyeSB1bnRpbCB3
ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzA3LgotICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9PU1Io
KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9j
aykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7CiAgICAgICAgICAgICB1bnNpZ25l
ZCB0YXJnZXRJbmRleCA9IDA7CiAgICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9j
ay0+c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3Vy
Y2VJbmRleCsrKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFz
dE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAx
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJ
bmRleCAtIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0
Tm9kZSBjb3VsZCBiZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBp
c24ndCBzdWJqZWN0IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2Rl
LT5vcmlnaW4uZm9yRXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9
IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNo
ZWNrKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhl
IHR5cGUgY2hlY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAm
IE5vZGVSZWxldmFudFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdl
Lm5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVt
b3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNl
IENoZWNrOiB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
ZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4ucmVtb3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdlbmVyYXRl
OiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYm9vbCBraWxsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2spCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrOgorICAgICAgICAg
ICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAga2lsbCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7CisgICAgICAgICAgICAgICAg
aWYgKCFraWxsKQorICAgICAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykg
PSBub2RlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJ
bmRleCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAg
IH0KIH07CiAgICAgCi1ib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCiti
b29sIHBlcmZvcm1DbGVhblVwKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIFBoYW50b20gUmVtb3ZhbCBQaGFzZSIpOwotICAgIHJldHVybiBy
dW5QaGFzZTxQaGFudG9tUmVtb3ZhbFBoYXNlPihncmFwaCk7CisgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkRGRyBDbGVhbiBVcCBQaGFzZSIpOworICAgIHJldHVybiBydW5QaGFz
ZTxDbGVhblVwUGhhc2U+KGdyYXBoKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCShyZXZp
c2lvbiAxODMyMDUpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5oOjE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xl
YW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1BoYW50b21SZW1v
dmFsUGhhc2VfaAorI2RlZmluZSBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKworI2lmIEVOQUJM
RShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdy
YXBoOworCisvLyBDbGVhbnMgdXAgdW5uZWNlc3NhcnkgUGhhbnRvbXMgYW5kIFBoYW50b24gY2hp
bGRyZW4uIFRoaXMgcmVkdWNlcyBsaXZlIHJhbmdlcywgYnV0IGFsc28sIGl0CisvLyBlbGltaW5h
dGVzIG1hbnkgUGhhbnRvbXMgZW50aXJlbHkuIFRoaXMgaW52YWxpZGF0ZXMgbGl2ZW5lc3MgYW5h
bHlzaXMuCisvLworLy8gVGhpcyBzaG91bGQgd29yayBvdmVyIGFsbCBJUiBmb3JtczsgaG93ZXZl
ciwgaW4gU1NBIGZvcm0gaXQncyBiZXR0ZXIgdG8gcnVuCisvLyBQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlIHNpbmNlIGl0J3MgbW9yZSBwb3dlcmZ1bC4KKworYm9vbCBwZXJmb3JtUGhhbnRv
bVJlbW92YWwoR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkod29y
a2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJl
bW92YWxQaGFzZV9oCisjaWZuZGVmIERGR0NsZWFuVXBQaGFzZV9oCisjZGVmaW5lIERGR0NsZWFu
VXBQaGFzZV9oCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMzIsMTYgKzMyLDEyIEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgR3JhcGg7CiAKLS8vIENsZWFu
cyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhhbnRvbiBjaGlsZHJlbi4gVGhpcyByZWR1
Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKLS8vIGVsaW1pbmF0ZXMgbWFueSBQaGFudG9t
cyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZlbmVzcyBhbmFseXNpcy4KLS8vCi0vLyBU
aGlzIHNob3VsZCB3b3JrIG92ZXIgYWxsIElSIGZvcm1zOyBob3dldmVyLCBpbiBTU0EgZm9ybSBp
dCdzIGJldHRlciB0byBydW4KLS8vIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ugc2luY2Ug
aXQncyBtb3JlIHBvd2VyZnVsLgorLy8gQ2xlYW5zIHVwIHVubmVlZGVkIG5vZGVzLCBsaWtlIGVt
cHR5IENoZWNrcywgUGhhbnRvbXMsIGFuZCBNdXN0R2VuZXJhdGUncy4KIAotYm9vbCBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoR3JhcGgmKTsKK2Jvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmKTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAK
LSNlbmRpZiAvLyBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKyNlbmRpZiAvLyBERkdDbGVhblVw
UGhhc2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2V0ID0g
bm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0
dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewogICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVy
LmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmls
dGVyIG9uIGNlbGwuCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CkBAIC0xMzMsOCArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBl
bGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ss
IFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5vZGUt
Pm9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NvbnN0YW50U3RvcmFnZVBvaW50ZXIodmlldy0+dmVjdG9yKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTQ3LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzRHluYW1pY0Nhc3Q8
U3RydWN0dXJlKj4odmFsdWUudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlt
aW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxHb29kKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJs
b2NrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTc5LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5aWZ5OiB7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5h
cnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTg4LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1
Y3R1cmUub25seVN0cnVjdHVyZSgpICE9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgp
OwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIENoZWNrQ2VsbDogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAg
ICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMjA0LDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IENoZWNrTm90RW1wdHk6IHsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiBTcGVjRW1wdHkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIxNCw3ICsyMTMs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQgJiYgbGVmdC5pc0ludDMyKCkgJiYgcmlnaHQuaXNJbnQzMigpCiAgICAgICAgICAg
ICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZWZ0LmFzSW50MzIoKSkgPCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocmlnaHQuYXNJbnQzMigpKSkgewotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNTE2LDEwICs1MTUsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbiA9IG5vZGUtPmNo
aWxkcmVuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0
YW50KG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIGlmICghY2hpbGRyZW4uaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luLCBjaGlsZHJl
bik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ss
IG9yaWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtNjQwLDEwICs2MzcsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYmFzZVZhbHVlLm1f
dHlwZSAmIH5TcGVjQ2VsbCkgewotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYmFzZVZh
bHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENoZWNrKGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgYWRkQ2hlY2tzKApAQCAtNjgzLDcgKzY3OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgotICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgVXBzaWxvbiBwaGkoKSBwb2lu
dGVyIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAko
cmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkp
CiAgICAgICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIC8vIFRoaXMgaXMgbGlrZSBjbGVhblZhcmlhYmxlcywgYnV0IGhhcyBhIG11Y2ggc2lt
cGxlciBhcHByb2FjaCB0byBHZXRMb2NhbC4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSAhPSBQaGFudG9tICYmIG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hv
dWxkR2VuZXJhdGUoKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkR2VuZXJhdGUo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC02OCw3ICs2Nyw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KQogICAgICAgICAgICAgICAgIGZpeHVwQmxvY2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KSk7Ci0gICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIE11c3RHZW5lcmF0
ZS9QaGFudG9tL0NoZWNrIGNsZWFuLXVwLgpAQCAtMTUzLDI3ICsxNTEsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUtPmZpcnN0
Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1DaGlsZHJl
bigpOyBjaGlsZElkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdOwogCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWVkZ2UgfHwgZWRnZS5pc1Byb3ZlZCgpIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVj
aygpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uud2lsbE5vdEhh
dmVDaGVjaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sIGVkZ2UpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwor
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDaGVjayk7CiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldFJlZkNvdW50KDEpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVj
aygpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lM
aXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+
Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoZWRn
ZS5pc1Byb3ZlZCgpIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBub2RlLT5zZXRSZWZDb3VudCgxKTsKKyAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0g
fQogICAgICAgICB9CkBAIC0xODEsMjkgKzE3MSw2IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYXJpYWJsZXNWZWN0b3JUeXBlPgotICAgIHZvaWQgY2xlYW5WYXJpYWJsZXMoVmFyaWFi
bGVzVmVjdG9yVHlwZSYgdmFyaWFibGVzKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdmFyaWFibGVzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IHZh
cmlhYmxlc1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYgbm9kZS0+b3Ao
KSAhPSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKLSAgICAg
ICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoaSB8fCBub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNb
aV0gPSBub2RlOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSAwOwotICAgICAg
ICB9Ci0gICAgfQotICAgIAogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE4
MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBTZXRMb2NhbDoKICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgY2FzZSBa
b21iaWVIaW50OgotICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAg
ICBjYXNlIFVwc2lsb246CiAgICAgY2FzZSBQaGk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDEwICs4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAg
Zm9yIChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsg
KyttX2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5h
dChtX2luZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7
CiAgICAgICAgICAgICBmaXh1cE5vZGUobV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKGJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0yNjIsMTIgKzI2MCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gQnV0IHdlIGhhdmUgdG8gbWFrZSBz
dXJlIHRoYXQgZXZlcnl0aGluZyBpcyBwaGFudG9tJ2QgdW50aWwgYWZ0ZXIgdGhlCi0gICAgICAg
ICAgICAgICAgLy8gRG91YmxlQXNJbnQzMiBub2RlLCB3aGljaCBvY2N1cnMgYWZ0ZXIgdGhlIERp
di9Nb2Qgbm9kZSB0aGF0IHRoZSBjb252ZXJzaW9ucwotICAgICAgICAgICAgICAgIC8vIHdpbGwg
YmUgaW5zZXJlZCBvbi4KLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKTsKLQogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVt
IGZyb20KICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAg
ICAgICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApA
QCAtODM5LDcgKzgzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVy
VXNlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9D
b25zdGFudCgKQEAgLTk5MCw3ICs5ODIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6
IHsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
ICAgICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEwMDQsNiArOTk1LDExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgUGhhbnRvbToKKyAg
ICAgICAgICAgIC8vIFBoYW50b21zIGFyZSBtZWFuaW5nbGVzcyBwYXN0IEZpeHVwLiBXZSByZWNy
ZWF0ZSB0aGVtIG9uLWRlbWFuZCBpbiB0aGUgYmFja2VuZC4KKyAgICAgICAgICAgIHJlbW92ZSgp
OworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBGaWF0SW50NTI6IHsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkpOwogICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTEwNjcsNyArMTA2Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQ
aGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRn
ZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIFN0cmluZ1VzZSkpOwogICAgICAgICAgICAgICAgIG1f
Z3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAg
ICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+KG5vZGUpOwpAQCAtMTA3Nyw3
ICsxMDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2lu
LAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgT2JqZWN0
VXNlKSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBq
c0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE9i
amVjdFVzZT4obm9kZSk7CkBAIC0xMjg4LDcgKzEyODQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgLy8gZGVjaXNpb24gcHJvY2VzcyBtdWNoIGVhc2llci4KICAgICAgICAgICAgIG9ic2VydmVV
c2VLaW5kT25Ob2RlPFN0cmluZ1VzZT4oZWRnZS5ub2RlKCkpOwogICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRn
ZShlZGdlLm5vZGUoKSwgU3RyaW5nVXNlKSk7CiAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQo
S25vd25TdHJpbmdVc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQyNywxMiArMTQyMyw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgLy8gV2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBz
byB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAgICAvLyAqb3JpZ2luYWwqIGlu
cHV0cyB0byB0aGUgYWRkaXRpb24gYXJlIGxpdmUgdXAgdG8gaGVyZS4KLSAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9u
ZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQp
LCBFZGdlKG9yaWdpbmFsUmlnaHQpKTsKLSAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VS
b3BlKG5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTU2LDcgKzE1NDYs
NyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0g
QXJyYXk6OlN0cmluZykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdp
biwgRWRnZShhcnJheSwgU3RyaW5nVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlN
b2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgCkBAIC0xNzY3LDcgKzE3NTcsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNl
S2luZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdl
KG5ld05vZGUsIEtub3duSW50MzJVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9k
ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4SW50T3JCb29sZWFuRWRnZShFZGdlJiBlZGdl
KQpAQCAtMTc4OSw3ICsxNzc4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRP
bk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdO
b2RlLCBJbnQzMlVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBmaXhEb3VibGVPckJvb2xlYW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0x
ODExLDcgKzE3OTksNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShu
b2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIERv
dWJsZVJlcFVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQpAQCAtMTk5
MSwxMSArMTk3OCw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAg
ICAgZm9yIChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUo
KTsgKyttX2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2Nr
LT5hdChtX2luZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5
KCk7CiAgICAgICAgICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSk7
CiAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnRO
b2RlLCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQotICAgICAgICBh
ZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
YmxvY2spOwogICAgIH0KICAgICAKQEAgLTIwMDksNyArMTk5NCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBNb3ZIaW50
OgotICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIGNh
c2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9n
cmFwaCwgbV9jdXJyZW50Tm9kZSwgZml4RWRnZVJlcHJlc2VudGF0aW9uKTsKQEAgLTIwNzEsOCAr
MjA1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFk
ZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0KICAgICAgICAgICAgIGlmIChlZGdlLT5p
c051bWJlckNvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgbm9kZS0+b3JpZ2luLApAQCAtMjA5NSw4
ICsyMDc3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3Vs
dCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBh
ZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+
aXNNYWNoaW5lSW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+b3JpZ2luLApAQCAtMjEyMyw4
ICsyMTAzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVz
dWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUo
KSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQo
KSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjQnl0ZWNvZGVEb3VibGUs
IFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCkBAIC0yMTQwLDMyICsyMTE4LDExIEBAIHByaXZhdGU6
CiAgICAgICAgIH0gfQogICAgIH0KICAgICAKLSAgICB2b2lkIGFkZFJlcXVpcmVkUGhhbnRvbShO
b2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFwcGVuZChub2Rl
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVpcmVkUGhhbnRv
bXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9yZXF1aXJlZFBo
YW50b21zW2ldOwotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG1fY3VycmVudE5v
ZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICBub2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLnJlc2l6ZSgwKTsKLSAg
ICB9Ci0gICAgCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4
SW5CbG9jazsKICAgICBOb2RlKiBtX2N1cnJlbnROb2RlOwogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKICAgICBib29sIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQ7Ci0gICAgVmVjdG9y
PE5vZGUqLCAzPiBtX3JlcXVpcmVkUGhhbnRvbXM7CiB9OwogICAgIAogYm9vbCBwZXJmb3JtRml4
dXAoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDE4MzIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsMjYgKzU5Myw2IEBAIHZvaWQgR3JhcGg6OnJl
c2V0UmVhY2hhYmlsaXR5KCkKICAgICBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKIH0KIAotdm9p
ZCBHcmFwaDo6bWVyZ2VSZWxldmFudFRvT1NSKCkKLXsKLSAgICBmb3IgKEJhc2ljQmxvY2sqIGJs
b2NrIDogYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewotICAgICAgICBmb3IgKE5vZGUqIG5vZGUg
OiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZs
YWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0SGludDoKLSAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZDIoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiBu
YW1lc3BhY2UgewogCiBjbGFzcyBSZWZDb3VudENhbGN1bGF0b3IgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTgzMjA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTcsOCArNDU3LDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgdm9pZCBy
ZXNldFJlYWNoYWJpbGl0eSgpOwogICAgIAotICAgIHZvaWQgbWVyZ2VSZWxldmFudFRvT1NSKCk7
Ci0gICAgCiAgICAgdm9pZCBjb21wdXRlUmVmQ291bnRzKCk7CiAgICAgCiAgICAgdW5zaWduZWQg
dmFyQXJnTnVtQ2hpbGRyZW4oTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1
LDYgKzEyNSwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpbnNlcnRDb25zdGFudEZvclVz
ZShpbmRleCwgb3JpZ2luLCBqc1VuZGVmaW5lZCgpLCB1c2VLaW5kKTsKICAgICB9CiAgICAgCisg
ICAgTm9kZSogaW5zZXJ0Q2hlY2soc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgQWRq
YWNlbmN5TGlzdCBjaGlsZHJlbikKKyAgICB7CisgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4u
anVzdENoZWNrcygpOworICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGluZGV4LCBTcGVj
Tm9uZSwgQ2hlY2ssIG9yaWdpbiwgY2hpbGRyZW4pOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBp
bnNlcnRDaGVjayhzaXplX3QgaW5kZXgsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gaW5zZXJ0Q2hlY2soaW5kZXgsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAg
IH0KKyAgICAKKyAgICBOb2RlKiBpbnNlcnRDaGVjayhzaXplX3QgaW5kZXgsIE5vZGVPcmlnaW4g
b3JpZ2luLCBFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNr
KCkpCisgICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIENoZWNr
LCBvcmlnaW4sIGVkZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKICAgICAgICAgZXhlY3V0
ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyAr
MjkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgQXJyYXlCb3VuZHM6Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNN
UGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBjb2RlLiBCdXQgZm9yIG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3Mg
dGhlIGNhc2UuCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFn
cygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgCi0gICAgICAgIG5vZGVSZWYgPSBtX2dy
YXBoLmFkZE5vZGUoU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGls
ZHJlbik7CisgICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIENoZWNr
LCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
CShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxNSBAQCBib29sIE5vZGU6Omhhc1Zhcmlh
YmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAgfQogfQogCit2b2lkIE5vZGU6OnJlbW92ZSgpCit7
CisgICAgQVNTRVJUKCEoZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CisgICAgCisgICAgY2hp
bGRyZW4gPSBjaGlsZHJlbi5qdXN0Q2hlY2tzKCk7CisgICAgCisgICAgc2V0T3BBbmREZWZhdWx0
RmxhZ3MoQ2hlY2spOworfQorCiB2b2lkIE5vZGU6OmNvbnZlcnRUb0lkZW50aXR5KCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChjaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNywxNSArNDA3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBtX2ZsYWdzID0gZGVmYXVsdEZsYWdzKG9wKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbnZlcnRUb1BoYW50b20oKQotICAgIHsKLSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
UGhhbnRvbSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgY29udmVydFRvQ2hlY2soKQotICAgIHsK
LSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2spOwotICAgIH0KKyAgICB2b2lkIHJl
bW92ZSgpOwogCiAgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZShTdHJ1Y3R1cmVTZXQq
IHNldCkKICAgICB7CkBAIC00MjUsNyArNDE3LDcgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAg
IHZvaWQgcmVwbGFjZVdpdGgoTm9kZSogb3RoZXIpCiAgICAgewotICAgICAgICBjb252ZXJ0VG9Q
aGFudG9tKCk7CisgICAgICAgIHJlbW92ZSgpOwogICAgICAgICBzZXRSZXBsYWNlbWVudChvdGhl
cik7CiAgICAgfQogCkBAIC0xNTM1LDIxICsxNTI3LDYgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gbV9yZWZDb3VudDsKICAgICB9CiAgICAgCi0gICAgYm9vbCB3aWxsSGF2ZUNvZGVH
ZW5Pck9TUigpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBT
ZXRMb2NhbDoKLSAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBQaGFudG9tOgotICAgICAg
ICBjYXNlIE11c3RHZW5lcmF0ZToKLSAgICAgICAgICAgIHJldHVybiBjaGlsZDEoKS51c2VLaW5k
VW5jaGVja2VkKCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDIoKS51c2VLaW5kVW5jaGVja2VkKCkg
IT0gVW50eXBlZFVzZSB8fCBjaGlsZDMoKS51c2VLaW5kVW5jaGVja2VkKCkgIT0gVW50eXBlZFVz
ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRHZW5lcmF0ZSgp
OwotICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIGJvb2wgaXNTZW1hbnRpY2FsbHlTa2lwcGFi
bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ291bnRFeGVjdXRpb247CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE4MzIw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDEyICs2NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNkZWZpbmUgTm9kZUFyaXRoRmxhZ3NNYXNrICAgICAgICAgICAgICAgKE5vZGVCZWhhdmlv
ck1hc2sgfCBOb2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spCiAKLSNkZWZpbmUgTm9kZVJlbGV2YW50
VG9PU1IgICAgICAgICAgICAgICAweDEwMDAwCisjZGVmaW5lIE5vZGVJc0ZsdXNoZWQgICAgICAg
ICAgICAgICAgICAgMHgxMDAwMCAvLyBDb21wdXRlZCBieSBDUFNSZXRocmVhZGluZ1BoYXNlLCB3
aWxsIHRlbGwgeW91IHdoaWNoIGxvY2FsIG5vZGVzIGFyZSBiYWNrd2FyZHMtcmVhY2hhYmxlIGZy
b20gYSBGbHVzaC4KIAotI2RlZmluZSBOb2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAgIDB4
MjAwMDAgLy8gQ29tcHV0ZWQgYnkgQ1BTUmV0aHJlYWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlvdSB3
aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEgRmx1c2guCi0K
LSNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAweDQwMDAwCi0jZGVmaW5l
IE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHg4MDAwMAorI2RlZmluZSBOb2RlTWlz
Y0ZsYWcxICAgICAgICAgICAgICAgICAgIDB4MjAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMiAg
ICAgICAgICAgICAgICAgICAweDQwMDAwCisjZGVmaW5lIE5vZGVNaXNjRmxhZzMgICAgICAgICAg
ICAgICAgICAgMHg4MDAwMAogCiB0eXBlZGVmIHVpbnQzMl90IE5vZGVGbGFnczsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTgzMjA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzQsMTAgKzI3NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIG1h
Y3JvKENyZWF0ZURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oUGhh
bnRvbURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUGhhbnRvbURp
cmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENyZWF0ZVNjb3BlZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQaGFudG9tQ2xv
bmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MSw3ICs1
NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAg
ICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazogewogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5u
b2RlKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkBA
IC03NjYsNyArNzY2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAg
ICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgTW92SGlu
dDoKLSAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBj
YXNlIE11c3RHZW5lcmF0ZToKICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVk
ZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKLSNpbmNsdWRlICJE
RkdQaGFzZS5oIgotI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCi0j
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgotI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1zdGF0aWMgY29uc3Qg
Tm9kZUZsYWdzIE5vZGVOZWVkc1BoYW50b20gPSBOb2RlTWlzY0ZsYWcxOwotc3RhdGljIGNvbnN0
IE5vZGVGbGFncyBOb2RlTmVlZHNNdXN0R2VuZXJhdGUgPSBOb2RlTWlzY0ZsYWcyOwotCi1jbGFz
cyBQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoK
LSAgICBQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAg
OiBQaGFzZShncmFwaCwgInBoYW50b20gY2Fub25pY2FsaXphdGlvbiIpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zv
cm0gPT0gU1NBKTsKLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguY2xlYXJGbGFnc09uQWxsTm9k
ZXMoTm9kZU5lZWRzUGhhbnRvbSB8IE5vZGVOZWVkc011c3RHZW5lcmF0ZSB8IE5vZGVSZWxldmFu
dFRvT1NSKTsKLSAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9PU1IoKTsKLSAgICAgICAg
Ci0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgc291
cmNlSW5kZXggPSAwOwotICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOwotICAg
ICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewotICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTXVzdEdlbmVyYXRlIHx8IG5vZGUtPm9wKCkgPT0gUGhh
bnRvbSB8fCBub2RlLT5vcCgpID09IENoZWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTXVz
dEdlbmVyYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UtPm1lcmdlRmxhZ3Mo
Tm9kZU5lZWRzTXVzdEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZWRn
ZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKSAmJiBub2RlLT5vcCgpID09IFBoYW50b20p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIFBoYW50b20gb24gYSBub2RlIHRo
YXQgaXMgUmVsZXZhbnRUb09TUiBtZWFucyB0aGF0IHdlIG5lZWQgdG8ga2VlcAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGEgUGhhbnRvbSBvbiB0aGlzIG5vZGUgaW5zdGVhZCBvZiBq
dXN0IGhhdmluZyBhIENoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UtPm1l
cmdlRmxhZ3MoTm9kZU5lZWRzUGhhbnRvbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2suCi0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVl
KG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0NoZWNrKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJs
b2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBibG9jay0+cmVzaXplKHRhcmdldEluZGV4KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKLSAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7
Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5v
ZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5mbGFncygpICYgTm9kZU5lZWRzTXVzdEdlbmVyYXRlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4ICsgMSwgU3BlY05vbmUsIE11c3RHZW5lcmF0ZSwgbm9kZS0+b3JpZ2luLCBub2RlLT5k
ZWZhdWx0RWRnZSgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmZsYWdzKCkg
JiBOb2RlTmVlZHNQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05v
bmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci19OwotICAgIAotYm9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgm
IGdyYXBoKQotewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRv
bSBDYW5vbmljYWxpemF0aW9uIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2U+KGdyYXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9oCi0jZGVmaW5lIERGR1BoYW50
b21DYW5vbmljYWxpemF0aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIFJlcGxhY2Vz
IGFsbCBwcmUtZXhpc3RpbmcgUGhhbnRvbXMgd2l0aCBDaGVja3Mgb3IgcmVtb3ZlcyB0aGVtIGlm
IHRoZSBDaGVjayBpcyB1bm5lY2Vzc2FyeS4gSWYKLS8vIHRoZSBQaGFudG9tIHdhcyBuZWNlc3Nh
cnkgKGl0IHVzZXMgYSBub2RlIHRoYXQgaXMgcmVsZXZhbnQgdG8gT1NSKSB0aGVuIHRoZSBQaGFu
dG9tIGlzIGhvaXN0ZWQKLS8vIHRvIGp1c3QgYmVsb3cgdGhlIG5vZGUuCi0vLwotLy8gVGhpcyBw
aGFzZSBpcyBvbmx5IHZhbGlkIGluIFNTQSwgYmVjYXVzZSBpdCdzIG9ubHkgaW4gU1NBIHRoYXQg
UGhhbnRvbXMgYXJlIGlnbm9yZWQgZm9yIHRoZQotLy8gcHVycG9zZSBvZiBsaXZlbmVzcy1hdC1z
b21lLXBvaW50IGFuZCBhcmUgb25seSB1c2VkIGZvciBhYnNvbHV0ZSBsaXZlbmVzcy4KLS8vCi0v
LyBUaGlzIHBoYXNlIG1ha2VzIGEgbG90IG9mIHRoaW5ncyBlYXNpZXIsIGxpa2UgQ0ZHIHNpbXBs
aWZpY2F0aW9uOiB5b3UgZG9uJ3QgaGF2ZSB0byBpbnNlcnQgYW55Ci0vLyBwaGFudG9tcyB3aGVu
IGpldHRpc29uaW5nIGEgQ0ZHIGVkZ2UuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21DYW5vbmljYWxp
emF0aW9uKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFs
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhh
c2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLSNp
bmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKLSNpbmNsdWRlICJERkdQaGFzZS5oIgotI2luY2x1
ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFw
aCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCi0gICAgewotICAg
IH0KLSAgICAKLSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFi
bG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgLy8gQWxsIFBoaXMgbmVlZCB0byBhbHJlYWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBP
U1IuCi0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2
YW50VG9PU1IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgot
ICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2Fz
ZSBpcyBvbmx5IG5lY2Vzc2FyeSB1bnRpbCB3ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2NzA3LgotICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5tZXJnZVJlbGV2YW50VG9PU1IoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykg
ewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5k
ZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOwotICAg
ICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOwotICAgICAgICAgICAgd2hpbGUgKHNv
dXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOiB7Ci0gICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHNvdXJjZUluZGV4ID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBi
bG9jay0+YXQoc291cmNlSW5kZXggLSAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBm
b3IgUGhhbnRvbS4gbGFzdE5vZGUgY291bGQgYmUgYW55IG5vZGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBs
ZSBmb3Igbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9
IFBoYW50b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2lu
LmZvckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXpl
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxk
cmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGFzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChq
KS5ub2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2FzZSBDaGVjazogewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBj
YXNlIE11c3RHZW5lcmF0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0g
ICAgCi1ib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsK
LSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmgJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBE
RkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9o
Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewotCi1jbGFzcyBHcmFwaDsKLQotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFu
ZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBp
dAotLy8gZWxpbWluYXRlcyBtYW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVz
IGxpdmVuZXNzIGFuYWx5c2lzLgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIg
Zm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wg
cGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJl
bW92YWxQaGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJl
dmlzaW9uIDE4MzIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2lu
Y2x1ZGUgIkRGR0NTRVBoYXNlLmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVk
Z2VCcmVha2luZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTUxLDEzICs1
MiwxMCBAQAogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNp
bmNsdWRlICJERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tQ2Fub25p
Y2FsaXphdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmgi
Ci0jaW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRp
Y3Rpb25JbmplY3Rpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRl
ICJERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FD
b252ZXJzaW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5j
bHVkZSAiREZHU3RhY2tMYXlvdXRQaGFzZS5oIgpAQCAtMzE4LDcgKzMxNiw3IEBAIFBsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENo
ZWNrSW5qZWN0aW9uKGRmZyk7CiAKICAgICAgICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24o
ZGZnKTsKLSAgICAgICAgcGVyZm9ybVBoYW50b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZv
cm1DbGVhblVwKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAg
ICAgICBwZXJmb3JtRENFKGRmZyk7CiAgICAgICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRm
Zyk7CkBAIC0zNDQsNyArMzQyLDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBp
bGVJblRocgogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBwZXJmb3JtUGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFw
aCBzaXplIGEgYml0LgorICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhl
IGdyYXBoIHNpemUgYSBiaXQuCiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhk
ZmcpOwogICAgICAgICBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAg
IHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIFBsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNz
QW5hbHlzaXMoZGZnKTsKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3Jt
Q29uc3RhbnRGb2xkaW5nKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXph
dGlvbihkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZv
cm1DbGVhblVwKGRmZyk7IC8vIFJlZHVjZSB0aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAg
Y2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVj
dGlvbihkZmcpOwogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmcoKSkgewpAQCAtMzgxLDcgKzM3OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgLy8gdGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1w
bGUgU1NBIGZpeC11cC4KICAgICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAg
ICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3Jt
Q2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7
CiAgICAgICAgIHBlcmZvcm1HbG9iYWxDU0UoZGZnKTsKICAgICAgICAgCkBAIC0zOTAsMTEgKzM4
OCw5IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAg
ZGZnLm1fZml4cG9pbnRTdGF0ZSA9IEZpeHBvaW50Q29udmVyZ2VkOwogICAgICAgICAKICAgICAg
ICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAgICAgICAgcGVyZm9ybVBoYW50
b21DYW5vbmljYWxpemF0aW9uKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7CiAg
ICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DRkEo
ZGZnKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzKCkp
Ci0gICAgICAgICAgICBwZXJmb3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihkZmcpOwogICAg
ICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlTW92SGludFJlbW92YWwoKSkKICAgICAgICAgICAgIHBl
cmZvcm1Nb3ZIaW50UmVtb3ZhbChkZmcpOwogICAgICAgICBwZXJmb3JtRENFKGRmZyk7IC8vIFdl
IHJlbHkgb24gdGhpcyB0byBraWxsIGRlYWQgY29kZSB0aGF0IHdvbid0IGJlIHJlY29nbml6ZWQg
YXMgZGVhZCBieSBMTFZNLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAg
ICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsU3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJbmZv
KG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbC5vZmZzZXQoKSkpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFz
ZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5s
aW5lcy5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0
LmgiCi0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAi
cmVzdXJyZWN0aW9uIGZvciB2YWxpZGF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgcnVuKCkKLSAgICB7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFw
aCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxv
Y2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgp
IHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLWJvb2wgcGVyZm9y
bVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUmVzdXJyZWN0aW9uIEZvciBWYWxpZGF0aW9uIFBo
YXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFz
ZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oCShyZXZpc2lv
biAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZv
clZhbGlkYXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2VfaAotI2RlZmluZSBERkdSZXN1cnJlY3Rpb25Gb3JW
YWxpZGF0aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdD
b21tb24uaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFw
aDsKLQotLy8gUGxhY2VzIGEgUGhhbnRvbSBhZnRlciBldmVyeSB2YWx1ZS1wcm9kdWNpbmcgbm9k
ZSwgdGhlcmVieSBkaXNhYmxpbmcgRENFIGZyb20ga2lsbGluZyBpdC4KLS8vIFRoaXMgaXMgdXNl
ZnVsIGZvciB2YWxpZGF0aW5nIG91ciBPU1IgZXhpdCBtYWNoaW5lcnkgYnkgaW5zdGl0dXRpbmcg
dGhlIHJlcXVpcmVtZW50IHRoYXQKLS8vIGFueSBsaXZlLWluLWJ5dGVjb2RlIHZhcmlhYmxlIHNo
b3VsZCBiZSBPU1ItYXZhaWxhYmxlLiBXaXRob3V0IHRoaXMgcGhhc2UsIGl0J3MgaW1wb3NzaWJs
ZQotLy8gdG8gbWFrZSBzdWNoIGFuIGFzc2VydGlvbiBiZWNhdXNlIG91ciBEQ0UgaXMgbW9yZSBh
Z2dyZXNzaXZlIHRoYW4gdGhlIGJ5dGVjb2RlIGxpdmVuZXNzCi0vLyBhbmFseXNpcy4KLQotYm9v
bCBwZXJmb3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8v
IERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5y
ZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JPcGVy
YW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUt
PmxvY2FsKCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKQEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZhbHVl
Rm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNl
IFNldEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50
b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJFbGlzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2Rl
KiBub2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwot
ICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgp
OwogICAgIH0KIAogICAgIHZvaWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRC
YXJyaWVycywgTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzMjA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgaWYgKHlPcGVyYW5kVmFsdWUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0VG9JZGVudGl0eU92ZXJDaGlsZDEoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHlPcGVyYW5kVmFsdWUgPT0gMC41KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUobV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9y
aWdpbiwgbV9ub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENoZWNrKG1fbm9kZUluZGV4LCBtX25vZGUpOwogICAgICAgICAgICAgICAgICAg
ICBtX25vZGUtPmNvbnZlcnRUb0FyaXRoU3FydCgpOwogICAgICAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2Niw4ICsxNjYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2Rl
KCk7IDsgbm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgewogICAgICAgICAgICAgICAgIGlm
IChjYW5vbmljYWxSZXN1bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KICAgICAg
ICAgICAgICAgICAgICAgY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1
bHQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwg
bV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhhZEludDMyQ2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgSW50NTJSZXBJbnQzMlVzZSBvciBldmVuIERvdWJs
ZVJlcEludDMyVXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggd291bGQgYmUg
c3VwZXIgd2VpcmQuIFRoZSBsYXR0ZXIgd291bGQgb25seSBhcmlzZSBpbiBzb21lCkBAIC0xNzUs
OSArMTc0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmlj
YWxSZXN1bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRv
bSwgbV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2Rl
LCBJbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q2hlY2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9k
ZS0+b3JpZ2luLCBFZGdlKG5vZGUsIEludDMyVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdl
KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAg
LTIzOSw4ICsyMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0
VG9JZGVudGl0eU92ZXJDaGlsZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKLSAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVj
Tm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAg
ICAgbV9ub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGNoaWxkSW5kZXggXiAxKTsKICAgICAgICAg
bV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9u
IDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICBmb3VuZFRlcm1pbmFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IGkgKyAxOyBqIDwgYmxvY2stPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlID0gYmxvY2stPmF0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBQaGFu
dG9tTG9jYWwgfHwgbm9kZS0+b3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5vcCgpID09
IFBoYW50b21Mb2NhbCB8fCBub2RlLT5vcCgpID09IEZsdXNoIHx8IG5vZGUtPm9wKCkgPT0gQ2hl
Y2spOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbJl0gKEVkZ2UgZWRnZSkgewpAQCAtNDYxLDYgKzQ2MSw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnRO
b3RDb252ZXJnZWQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC01NDAsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFNldExv
Y2FsOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoKICAgICAgICAgICAg
ICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhImJhZCBub2RlIHR5cGUgZm9yIFNT
QSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSBjYW5kaWRhdGVOb2RlSW5kZXggKyAxOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25v
ZGVJbmRleCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBo
YW50b206CiAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgY2FzZSBNdXN0R2Vu
ZXJhdGU6CiAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CkBAIC0yMTIsNyArMjExLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBjYW5kaWRhdGVOb2RlSW5k
ZXggKyAxOyBub2RlSW5kZXggPD0gbGFzdFVzZXJJbmRleDsgKytub2RlSW5kZXgpIHsKICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgY2FzZSBDaGVjazoKICAgICAgICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAg
ICAgY2FzZSBNb3ZIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CShyZXZpc2lvbiAxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCw2IEBAIHZvaWQgbGluayhTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7
IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlm
ICghbm9kZS0+d2lsbEhhdmVDb2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6c2hvd0FsbERGR05v
ZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBzdGFjazsKICAgICAgICAgICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCShyZXZpc2lvbiAxODMyMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDEwICs0NjMsOSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgY29tcGlsZVB1
dFN0YWNrKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQaGFudG9tOgogICAg
ICAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICAgICAgY2FzZSBDaGVjazoKLSAgICAgICAgICAg
IGNvbXBpbGVQaGFudG9tKCk7CisgICAgICAgICAgICBjb21waWxlTm9PcCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAgICAgY29tcGlsZVRvVGhp
cygpOwpAQCAtMTE1OSw3ICsxMTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICB2b2lkIGNvbXBpbGVQaGFudG9tKCkKKyAgICB2b2lkIGNvbXBpbGVOb09wKCkKICAg
ICB7CiAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwgc3Bl
Y3VsYXRlKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251767</attachid>
            <date>2015-04-27 12:21:45 -0700</date>
            <delta_ts>2015-04-27 16:59:12 -0700</delta_ts>
            <desc>starting to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>111476</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODM0MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw2IEBACiAJCTBGNjY2RUMxMTgzNTY2
RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1
bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2
NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLzsgfTsKIAkJMEY2
NjZFQzcxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzMxODM1NjcyQjAwRDAxN0Yx
IC8qIERGR0F2YWlsYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTBGNjY2RUNDMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NjZFQ0ExODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi87IH07Ci0JCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdG
MSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAv
KiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQg
LyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2
RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0Vk
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY4MkZCMjE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY4MkZCMDE5QkNCMzY0MDBG
QTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgKi87IH07CkBAIC00MTAsOCArNDA4LDYgQEAK
IAkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5
MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0
QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyog
REZHQ2FwYWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5RUJD
NDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTBGN0IzNjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcCAqLzsgfTsKLQkJMEY3QjM2NjIxOTdDNTI1QzAwRUQxRERD
IC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBE
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5
VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTQ2Miw2ICs0NTgsOCBAQAogCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZH
Rmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlEMzM5NTE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5RDMzOUExODAzQURCNzAw
NzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM5ODE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBz
LmNwcCAqLzsgfTsKIAkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTkx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBE
RkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAg
Ki87IH07CisJCTBGOUQzNjk1MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzNjkzMUFF
OUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQjRGNDE3RkNCOTE3MDBDQjY3RjggLyog
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAgKi87IH07CiAJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUZDOEMzMTRF
MUI1RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLzsgfTsKQEAgLTUxOSw4ICs1MTcsNiBA
QAogCQkwRkJFMEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNzAxNkMx
REIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJGMTU4QzE5QjdBNTMxMDA2OTVERDAg
LyogREZHQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLzsg
fTsKIAkJMEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRjE1OEIxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAv
KiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkZERDAyMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmNwcCAqLzsgfTsKLQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQkZERDAzMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3
NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcyMTQ2OTNBRjkwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwICovOyB9OwpAQCAtMjEwMiw4ICsyMDk4LDYgQEAKIAkJMEY2NjZF
QkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFi
aWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxh
YmlsaXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjY2NkVDMzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5o
OyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY2NjZFQ0IxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25Q
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERGM0Yx
MzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0
IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZS5o
OyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
ODJGQjAxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBQ2FsY3VsYXRvci5jcHA7IHBhdGggPSBk
ZmcvREZHU1NBQ2FsY3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTQ1LDggKzIxMzksNiBAQAogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5n
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzkwODUzMTlBMjkw
QjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJ1
Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjdCMzY1RjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3QjM2NjAxOTdD
NTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxOTcsNiArMjE4OSw4IEBACiAJ
CTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7IHBhdGggPSBkZmcvREZHRmx1c2hl
ZEF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzk4MTgwM0FEQjcwMDcz
QzJCQyAvKiBGVExTdGFja01hcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMU3RhY2tNYXBzLmNwcDsgcGF0aCA9IGZ0bC9GVExTdGFja01hcHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5OTE4MDNBREI3MDA3M0MyQkMgLyogRlRM
U3RhY2tNYXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN0YWNrTWFw
cy5oOyBwYXRoID0gZnRsL0ZUTFN0YWNrTWFwcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjlEMzY5MjFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NsZWFuVXBQaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdDbGVhblVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjIx
N0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGggPSBk
ZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2NCw4ICsyMjU4LDYgQEAK
IAkJMEZCRTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrU2V0LmNwcDsgcGF0aCA9IGRmZy9E
RkdCbG9ja1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkYxNThCMTlC
N0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQmxvY2tTZXRJbmxpbmVzLmg7IHBhdGggPSBkZmcvREZHQmxvY2tT
ZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQkZERDAyMTk2Qzky
QkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBwYXRoID0g
ZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkJGREQwMzE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tUmVtb3ZhbFBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Lmg7IHBhdGggPSBkZmcv
REZHT1NSRXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc2RjE0Njkz
QUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlci5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRD
b21waWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc3MDE0NjkzQUVG
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4
ODAsNiArNDg3Miw4IEBACiAJCQkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBo
YXNlLmggKi8sCiAJCQkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8sCisJCQkJMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZC
IC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8sCisJCQkJMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZC
IC8qIERGR0NsZWFuVXBQaGFzZS5oICovLAogCQkJCUE3N0E0MjM4MTdBMEJCRkQwMEE4REI4MSAv
KiBERkdDbG9iYmVyaXplLmNwcCAqLywKIAkJCQlBNzdBNDIzOTE3QTBCQkZEMDBBOERCODEgLyog
REZHQ2xvYmJlcml6ZS5oICovLAogCQkJCUE3N0E0MjNBMTdBMEJCRkQwMEE4REI4MSAvKiBERkdD
bG9iYmVyU2V0LmNwcCAqLywKQEAgLTUwMjYsMTIgKzUwMjAsOCBAQAogCQkJCTBGRUZDOUE4MTY4
MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi8sCiAJCQkJMEYy
MzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8sCiAJ
CQkJMEYyMzVCRUExNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICov
LAotCQkJCTBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcCAqLywKLQkJCQkwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oICovLAogCQkJCTBGNjIzNzk1MUFFNDVDQTcwMEQ0
MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGNjIzNzk2MUFF
NDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCAqLywKLQkJCQkwRkJG
REQwMjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgKi8sCi0J
CQkJMEZCRkREMDMxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAq
LywKIAkJCQkwRkZGQzk0RjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuY3BwICovLAogCQkJ
CTBGRkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovLAogCQkJCTBGMkI5Q0RF
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQaGlDaGlsZHJlbi5jcHAgKi8sCkBAIC01MDUzLDggKzUw
NDMsNiBAQAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmggKi8sCiAJCQkJODZFQzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERG
R1JlZ2lzdGVyQmFuay5oICovLAotCQkJCTBGNjY2RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICovLAotCQkJCTBGNjY2RUNCMTgzNkIz
N0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLywKIAkJ
CQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywKIAkJCQkw
RjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCiAJCQkJQTc3QTQy
M0MxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCAqLywKQEAgLTU4NjgsNyAr
NTg1Niw2IEBACiAJCQkJMEZCRTBGNzUxNkMxREIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcy
NTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkVDOUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQzE4QTYwMDcwMDAx
QTI3RjggLyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MzE3QTBC
QkZEMDBBOERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0
MTAxN0YxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NDMsNiArNTkzMCw3IEBACiAJCQkJMEYyMzVC
RDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzY5NTFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJE
QjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTNDRTA4NjE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjA1Myw3ICs2MDQxLDYgQEAKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAg
LyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1Njgz
MzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGQkZERDA1MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBE
RUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NG
ODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTYxNDIsNyArNjEyOSw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEY3QjM2NjIxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUExMjc0MTkyRDlGREYwMDg3NjRBMyAvKiBE
RkdEb2VzR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY1MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTEwLDYgKzcwOTYsNyBAQAogCQkJCTBG
MkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVk
QXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERG
R0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3
NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkx
QTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTcxNTIsNyArNzEzOSw2IEBACiAJCQkJQTc4QTk3N0ExNzk3MzhCODAwOURG
NzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzQxNkMxREIwOTAw
ODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY2NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8q
IERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjJGQ0NGQjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RUM5REQyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjcsNyArNzM1Myw2IEBA
CiAJCQkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIg
LyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNG
OSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGN0Iz
NjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFn
ZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAv
KiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIg
LyogSlNNYXBJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1NDAsNyArNzUyNSw2IEBA
CiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZCRkREMDQxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQw
Q0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTYsNiArMTU2LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFkamFjZW5jeUxpc3Qo
Rml4ZWQsIGNoaWxkMSgpLnNhbml0aXplZCgpLCBjaGlsZDIoKS5zYW5pdGl6ZWQoKSwgY2hpbGQz
KCkuc2FuaXRpemVkKCkpOwogICAgIH0KICAgICAKKyAgICBBZGphY2VuY3lMaXN0IGp1c3RDaGVj
a3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgQWRqYWNlbmN5TGlzdCByZXN1bHQoRml4ZWQpOwor
ICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7CisgICAgICAgIHVuc2lnbmVkIHRhcmdl
dEluZGV4ID0gMDsKKyAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgQWRqYWNlbmN5TGlzdDo6
U2l6ZSkgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gY2hpbGQoc291cmNlSW5kZXgrKyk7Cisg
ICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmNoaWxkKHRhcmdldEluZGV4KyspID0gZWRnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgICAgIGNhc2UgTW92
SGludDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CkBAIC0zNTMsNyArMzUyLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhh
bnRvbURpcmVjdEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnROb2RlKG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4s
IEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CkBAIC0z
NjEsNyArMzU5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9t
LCBub2RlLT5vcmlnaW4sIEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1l
bnRzOiB7CkBAIC00ODUsNyArNDgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0U3RhY2ssIG5vZGUtPm9yaWdpbiwg
T3BJbmZvKGRhdGEpLCBFZGdlKHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCkBAIC01MzYsNyArNTMzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fY2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBCYXNpY0Jsb2Nr
OjpyZXBsYWNlVGVybWluYWwoTm9kZSogbgogICAgICAgICBhcHBlbmQobm9kZSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG1fbm9kZXMuaW5zZXJ0KHJlc3VsdC5pbmRleCArIDEsIG5vZGUpOwotICAg
ICAgICByZXN1bHQubm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZXN1bHQubm9k
ZS0+cmVtb3ZlKCk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh0ZXJtaW5hbCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxODM0
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNyArOTQsOCBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8
QmFzaWNCbG9jCiAgICAgICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsK
LSAgICAgICAgICAgIC8vIFRoZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0
aGUgbGlrZS4gVGhlcmUgd2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0
ZXIgdGhlIHRlcm1pbmFsLgorICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRh
aW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25l
IG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5k
IHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCisgICAgICAgICAgICBjYXNlIENo
ZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAg
ICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoK
ICAgICAgICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4
MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw4ICsyNzIsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgTm9kZVR5cGUgbm9kZVR5cGU7CiAgICAgICAgIGlmIChsaXZlbmVzc05vZGUtPmZsYWdz
KCkgJiBOb2RlSXNGbHVzaGVkKQogICAgICAgICAgICAgbm9kZVR5cGUgPSBGbHVzaDsKLSAgICAg
ICAgZWxzZQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBp
dCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgY291bGQganVzdCByZW1hdGVyaWFs
aXplCisgICAgICAgICAgICAvLyBQaGFudG9tTG9jYWxzIG9yIHNvbWV0aGluZyBzaW1pbGFyIHVz
aW5nIGJ5dGVjb2RlIGxpdmVuZXNzLiBIb3dldmVyLCBpbiBUaHJlYWRlZENQUywgaXQncworICAg
ICAgICAgICAgLy8gd29ydGggdGhlIHNhbml0eSB0byBtYWludGFpbiB0aGlzIGVhZ2VybHkuIFNl
ZQorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NDA4NgogICAgICAgICAgICAgbm9kZVR5cGUgPSBQaGFudG9tTG9jYWw7CisgICAgICAgIH0K
ICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9u
ZSwgbm9kZVR5cGUsIG5vZGVPcmlnaW4sIAogICAgICAgICAgICAgT3BJbmZvKGxpdmVuZXNzTm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKQEAgLTMxNywxMSArMzIyLDExIEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIGtlcHQgYWxpdmUuCiAgICAgICAgIAogICAgICAgICAvLyBSZW1vdmUgdGhl
IHRlcm1pbmFsIG9mIGZpcnN0QmxvY2sgc2luY2Ugd2UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLiBX
ZWxsLCB3ZSBkb24ndAotICAgICAgICAvLyByZWFsbHkgcmVtb3ZlIGl0OyB3ZSBhY3R1YWxseSB0
dXJuIGl0IGludG8gYSBQaGFudG9tLgorICAgICAgICAvLyByZWFsbHkgcmVtb3ZlIGl0OyB3ZSBh
Y3R1YWxseSB0dXJuIGl0IGludG8gYSBjaGVjay4KICAgICAgICAgTm9kZSogdGVybWluYWwgPSBm
aXJzdEJsb2NrLT50ZXJtaW5hbCgpOwogICAgICAgICBBU1NFUlQodGVybWluYWwtPmlzVGVybWlu
YWwoKSk7CiAgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luID0gdGVybWluYWwt
Pm9yaWdpbjsKLSAgICAgICAgdGVybWluYWwtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAg
dGVybWluYWwtPnJlbW92ZSgpOwogICAgICAgICBBU1NFUlQodGVybWluYWwtPnJlZkNvdW50KCkg
PT0gMSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqZXR0aXNvbmVkQmxv
Y2tzLnNpemUoKTsgaS0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIENQU1JldGhyZWFkaW5nUGhhc2UgOiBw
dWJsaWMgUGhhc2UKIHB1YmxpYzoKICAgICBDUFNSZXRocmVhZGluZ1BoYXNlKEdyYXBoJiBncmFw
aCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgIkNQUyByZXRocmVhZGluZyIpCi0gICAgICAgICwg
bV9hdmFpbGFibGVGb3JPU1IoT3BlcmFuZHNMaWtlLCBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVz
QXRIZWFkKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMjYsMTQgKzEyNSwxMCBAQCBwcml2YXRl
OgogICAgICAgICBBU1NFUlQoCiAgICAgICAgICAgICBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQu
c2l6ZUZvcjxvcGVyYW5kS2luZD4oKQogICAgICAgICAgICAgPT0gbV9ibG9jay0+dmFyaWFibGVz
QXRUYWlsLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCkpOwotICAgICAgICBBU1NFUlQoCi0gICAgICAg
ICAgICBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKQotICAg
ICAgICAgICAgPT0gbV9hdmFpbGFibGVGb3JPU1Iuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKSk7CiAg
ICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhl
YWQuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKTsgaS0tOykgewogICAgICAgICAgICAgbV9ibG9jay0+
dmFyaWFibGVzQXRIZWFkLmF0Rm9yPG9wZXJhbmRLaW5kPihpKSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBtX2Jsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXRGb3I8b3BlcmFuZEtpbmQ+KGkpID0gbnVs
bHB0cjsKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NSLmF0Rm9yPG9wZXJhbmRLaW5kPihp
KSA9IEVkZ2UoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTI0Nyw4ICsyNDIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIC8vIHJlZHVuZGFudCBhbmQgaW5lZmZpY2llbnQsIHNp
bmNlIHJlYWxseSBpdCBqdXN0IG1lYW5zIHRoYXQgd2Ugd2FudCB0bwogICAgICAgICAgICAgICAg
IC8vIGtlZXAgdGhlIGxhc3QgTW92SGludGVkIHZhbHVlIG9mIHRoYXQgbG9jYWwgYWxpdmUuCiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQx
KG1fYXZhaWxhYmxlRm9yT1NSLmF0Rm9yPG9wZXJhbmRLaW5kPihpZHgpKTsKLSAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVt
b3ZlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC0zNTksMTQgKzM1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2Fub25p
Y2FsaXplU2V0KG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxl
Rm9yT1NSLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9IG5vZGUtPmNoaWxkMSgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fz
ZSBab21iaWVIaW50OgotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NSLm9wZXJhbmQo
bm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9IEVkZ2UoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC01MTcsNyArNTAzLDYgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGhpU3RhY2tFbnRyeSwgMTI4PiBtX2FyZ3VtZW50UGhpU3RhY2s7CiAgICAgVmVjdG9y
PFBoaVN0YWNrRW50cnksIDEyOD4gbV9sb2NhbFBoaVN0YWNrOwogICAgIFZlY3RvcjxOb2RlKiwg
MTI4PiBtX2ZsdXNoZWRMb2NhbE9wV29ya2xpc3Q7Ci0gICAgT3BlcmFuZHM8RWRnZT4gbV9hdmFp
bGFibGVGb3JPU1I7CiB9OwogCiBib29sIHBlcmZvcm1DUFNSZXRocmVhZGluZyhHcmFwaCYgZ3Jh
cGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2
aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBJZGVudGl0eSkgewotICAgICAg
ICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+c2V0UmVw
bGFjZW1lbnQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00MzcsNyArNDM3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlv
bihtX25vZGUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUt
Pm9wKCkgPT0gSWRlbnRpdHkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0
VG9DaGVjaygpOworICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnJlbW92ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBtX25vZGUtPnNldFJlcGxhY2VtZW50KG1fbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFu
VXBQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzIwNSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIK
KworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRl
ICJERkdJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkRG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGljIFBo
YXNlIHsKK3B1YmxpYzoKKyAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFwaCkKKyAg
ICAgICAgOiBQaGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBib29sIHJ1bigpCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsK
KyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5u
dW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFibG9jaykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
QWxsIFBoaXMgbmVlZCB0byBhbHJlYWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCisg
ICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGJsb2NrLT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9P
U1IpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAg
ICAgICAgICAgIGNhc2UgR2V0TG9jYWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBv
bmx5IG5lY2Vzc2FyeSB1bnRpbCB3ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA2NzA3LgorICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVSZWxldmFudFRvT1NSKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
UmVsZXZhbnRUb09TUik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9ncmFw
aC5tZXJnZVJlbGV2YW50VG9PU1IoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRl
eCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAg
ICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwor
ICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICAg
ICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUlu
ZGV4IDwgYmxvY2stPnNpemUoKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoc291cmNlSW5kZXgrKyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOiB7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJj
ZUluZGV4ID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9jay0+
YXQoc291cmNlSW5kZXggLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3IgUGhh
bnRvbS4gbGFzdE5vZGUgY291bGQgYmUgYW55IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBmb3Ig
bm93LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBoYW50
b20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZvckV4
aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFzdE5vZGUgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNo
aWxkKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uu
d2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBLZWVwIHRoZSB0eXBlIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGFzdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5ub2Rl
KCkgPT0gZWRnZS5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgY2FzZSBDaGVjazogeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0gbm9k
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFyZ2V0SW5kZXgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9Cit9
OworICAgIAorYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBoKQoreworICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBSZW1vdmFsIFBoYXNl
Iik7CisgICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21SZW1vdmFsUGhhc2U+KGdyYXBoKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5V
cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgiCisjaW5jbHVk
ZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMzcsMTAg
KzM3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgUGhh
bnRvbVJlbW92YWxQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitjbGFzcyBDbGVhblVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogcHVibGljOgotICAgIFBoYW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdy
YXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRvbSByZW1vdmFsIikKKyAgICBDbGVh
blVwUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAiY2xlYW4gdXAi
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMzAgKzQ4LDM5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07
KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJ
bmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVhZHkg
YmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2Nr
LT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPnBo
aXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGkt
LTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDog
Ly8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdlIGRv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwot
ICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51
bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHNvdXJjZUluZGV4ID0gMDsKICAgICAgICAgICAgIHVuc2lnbmVkIHRh
cmdldEluZGV4ID0gMDsKICAgICAgICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5z
aXplKCkpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUlu
ZGV4KyspOworICAgICAgICAgICAgICAgIGJvb2wga2lsbCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrKQorICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuLmp1c3RDaGVja3MoKTsK
KyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZSogbGFzdE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5k
ZXggPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChz
b3VyY2VJbmRleCAtIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9t
LiBsYXN0Tm9kZSBjb3VsZCBiZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhhdCBpc24ndCBzdWJqZWN0IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cu
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBub2RlLT5vcmlnaW4uZm9yRXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
Tm9kZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQo
aSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxs
SGF2ZUNoZWNrKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtl
ZXAgdGhlIHR5cGUgY2hlY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+Zmxh
Z3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0
Tm9kZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9
PSBlZGdlLm5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRy
ZW4ucmVtb3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b206CisgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGtpbGwg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNp
emU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hp
bGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdl
KGktLSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZy
ZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6IHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYmxvY2stPmF0
KHRhcmdldEluZGV4KyspID0gbm9kZTsKKyAgICAgICAgICAgICAgICBpZiAoIWtpbGwpCisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBibG9jay0+cmVzaXplKHRhcmdldEluZGV4KTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogfTsKICAgICAKLWJv
b2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJiBncmFwaCkKK2Jvb2wgcGVyZm9ybUNsZWFu
VXAoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJE
RkcgUGhhbnRvbSBSZW1vdmFsIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21S
ZW1vdmFsUGhhc2U+KGdyYXBoKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIENsZWFuIFVwIFBoYXNlIik7CisgICAgcmV0dXJuIHJ1blBoYXNlPENsZWFuVXBQaGFzZT4o
Z3JhcGgpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHJldmlzaW9uIDE4MzIwNSkJKGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmg6MTgz
MjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCisjZGVm
aW5lIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIENsZWFu
cyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhhbnRvbiBjaGlsZHJlbi4gVGhpcyByZWR1
Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKKy8vIGVsaW1pbmF0ZXMgbWFueSBQaGFudG9t
cyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZlbmVzcyBhbmFseXNpcy4KKy8vCisvLyBU
aGlzIHNob3VsZCB3b3JrIG92ZXIgYWxsIElSIGZvcm1zOyBob3dldmVyLCBpbiBTU0EgZm9ybSBp
dCdzIGJldHRlciB0byBydW4KKy8vIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ugc2luY2Ug
aXQncyBtb3JlIHBvd2VyZnVsLgorCitib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYp
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKKworI2VuZGlmIC8vIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCSh3b3JraW5nIGNvcHkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIERGR1Bo
YW50b21SZW1vdmFsUGhhc2VfaAotI2RlZmluZSBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKyNp
Zm5kZWYgREZHQ2xlYW5VcFBoYXNlX2gKKyNkZWZpbmUgREZHQ2xlYW5VcFBoYXNlX2gKIAogI2lm
IEVOQUJMRShERkdfSklUKQogCkBAIC0zMiwxNiArMzIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCiBjbGFzcyBHcmFwaDsKIAotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5
IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMs
IGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRlcyBtYW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlz
IGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lzLgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsg
b3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1
bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJm
dWwuCisvLyBDbGVhbnMgdXAgdW5uZWVkZWQgbm9kZXMsIGxpa2UgZW1wdHkgQ2hlY2tzLCBQaGFu
dG9tcywgYW5kIE11c3RHZW5lcmF0ZSdzLgogCi1ib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChH
cmFwaCYpOworYm9vbCBwZXJmb3JtQ2xlYW5VcChHcmFwaCYpOwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2VuZGlmIC8vIERGR1Bo
YW50b21SZW1vdmFsUGhhc2VfaAorI2VuZGlmIC8vIERGR0NsZWFuVXBQaGFzZV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVT
ZXQoKTsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihz
ZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleElu
QmxvY2spOyAvLyBDYXRjaCB0aGUgZmFjdCB0aGF0IHdlIG1heSBmaWx0ZXIgb24gY2VsbC4KLSAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAg
LTEzMyw4ICsxMzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIu
ZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50
b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5CbG9jaywgbm9kZS0+b3JpZ2luLCBub2RlLT5j
aGlsZHJlbik7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ29uc3RhbnRTdG9yYWdl
UG9pbnRlcih2aWV3LT52ZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC0xNDcsNyArMTQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
aWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1
ZS52YWx1ZSgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhz
dHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5l
eGVjdXRlKGluZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtMTY3LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEdvb2QpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5h
dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC0xNzksNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2Ug
QXJyYXlpZnk6IHsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAg
ICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC0xODgsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBp
ZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5vbmx5U3RydWN0
dXJlKCkgIT0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Q
aGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC0xOTYsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tD
ZWxsOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKSAhPSBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7
CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgZWxpbWlu
YXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0y
MDQsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tOb3RFbXB0eTog
ewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSAmIFNwZWNFbXB0eSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjE0LDcgKzIxMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZSByaWdodCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDIoKSkudmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0
LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMyKCkKICAgICAgICAgICAgICAgICAgICAgJiYgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGxlZnQuYXNJbnQzMigpKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihyaWdodC5hc0ludDMyKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CkBAIC01MTYsMTAgKzUxNSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW47CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgdmFsdWUp
OwotICAgICAgICAgICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBpbmRleElu
QmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBvcmlnaW4sIGNoaWxkcmVuKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICghY2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5CbG9jaywgb3JpZ2luLCBjaGlsZHJl
bik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9
CkBAIC02NDAsMTAgKzYzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxs
KSB7Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChiYXNlVmFsdWUubV90eXBlICYgflNw
ZWNDZWxsKQorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJs
b2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBhZGRDaGVja3MoCkBAIC02ODMsNyArNjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNh
c2UgSlNDb25zdGFudDoKICAgICAgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAg
ICAgICBjYXNlIEludDUyQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
UGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBERkdfQ1JB
U0gobV9ncmFwaCwgbm9kZSwgIkJhZCBVcHNpbG9uIHBoaSgpIHBvaW50ZXIiKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsMTIgKzU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgICAg
ICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gVGhpcyBp
cyBsaWtlIGNsZWFuVmFyaWFibGVzLCBidXQgaGFzIGEgbXVjaCBzaW1wbGVyIGFwcHJvYWNoIHRv
IEdldExvY2FsLgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBo
YW50b20gJiYgbm9kZS0+b3AoKSAhPSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ld
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KQEAgLTY4LDcgKzY3LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCiAgICAgICAgICAg
ICAgICAgZml4dXBCbG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKLSAgICAgICAgICAg
IGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KQEAg
LTEwNSwxMDIgKzEwMywzMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkg
ewotICAgICAgICBjYXNlIFNTQToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgICAgIC8vIENsZWFuIHVwIHZhcmlh
YmxlIGxpbmtzIGZvciB0aGUgYmxvY2suIFdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgdGhlIGFj
dHVhbCBEQ0UKLSAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBzZWUgR2V0TG9jYWxz
LCBzbyB3ZSBjYW4gYnlwYXNzIHRoZW0gaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUKLSAgICAgICAg
ICAgIC8vIHZhcnMtYXQtdGFpbCBwb2ludCB0byBhIEdldExvY2FsLCB0aGUgR2V0TG9jYWwgaXMg
ZGVhZCwgYnV0IHRoZSBQaGkgaXQgcG9pbnRzCi0gICAgICAgICAgICAvLyB0byBpcyBhbGl2ZS4K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IDA7IHBo
aUluZGV4IDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK3BoaUluZGV4KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFibG9jay0+cGhpc1twaGlJbmRleF0tPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGFjdHVhbGx5IGZyZWUgbm9kZXMgaGVy
ZS4gRXhjZXB0IHRoYXQgaXQgcHJvYmFibHkKLSAgICAgICAgICAgICAgICAgICAgLy8gZG9lc24n
dCBtYXR0ZXIsIHNpbmNlIHdlIGRvbid0IGFkZCBhbnkgbm9kZXMgYWZ0ZXIgdGhpcyBwaGFzZS4K
LSAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjIzOQotICAgICAgICAgICAgICAgICAgICBibG9jay0+cGhpc1twaGlJbmRleC0t
XSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2stPnBoaXMu
cmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7
Ci0gICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhibG9jay0+dmFyaWFibGVzQXRUYWlsKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBUaGlzIGhhcyB0byBiZSBhIGZvcndh
cmQgbG9vcCBiZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgaW5zZXJ0aW9uIHNldC4KICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6
ZSgpOyArK2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpbmRleEluQmxvY2spOwogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAg
ICAgICAgIGNhc2UgWm9tYmllSGludDoKLSAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgbm90
IGtpbGxhYmxlLiAoVGhleSBvbmNlIHdlcmUuKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0
OiB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmly
c3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxk
cmVuKCk7IGNoaWxkSWR4KyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF07Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZWRnZSB8fCBlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNo
ZWNrKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwgZWRnZSk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlZkNvdW50KDEpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygp
OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0
OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hp
bGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8
IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspIHsK
KyAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
W2NoaWxkSWR4XTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlm
ICghZWRnZSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS5pc1Byb3ZlZCgpIHx8
IGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLCBlZGdlKTsKICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3Mo
Q2hlY2spOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0UmVmQ291bnQoMSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9IH0KLSAgICAgICAgfQotCi0gICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWJsZXNW
ZWN0b3JUeXBlPgotICAgIHZvaWQgY2xlYW5WYXJpYWJsZXMoVmFyaWFibGVzVmVjdG9yVHlwZSYg
dmFyaWFibGVzKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdmFyaWFibGVzLnNp
emUoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IHZhcmlhYmxlc1tpXTsKLSAg
ICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYgbm9kZS0+b3AoKSAhPSBDaGVjayAmJiBu
b2RlLT5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKLSAgICAgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoaSB8fCBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkR2Vu
ZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSBub2RlOwotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSAwOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgfQorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRp
b25TZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgogICAg
IGNhc2UgWm9tYmllSGludDoKLSAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBVcHNpbG9uOgog
ICAgIGNhc2UgUGhpOgogICAgIGNhc2UgRmx1c2g6CkBAIC0yMDksNiArMjA4LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAg
Y2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CisgICAgY2Fz
ZSBQaGFudG9tOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9yIChtX2luZGV4SW5CbG9jayA9IDA7
IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5CbG9jaykgewogICAg
ICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7Ci0gICAg
ICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBmaXh1cE5vZGUo
bV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2Fy
eSgpOwogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAg
CkBAIC0yNjgsMTIgKzI2Niw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RG91Ymxl
T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RG91Ymxl
T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgLy8gQnV0IHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBw
aGFudG9tJ2QgdW50aWwgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gRG91YmxlQXNJbnQz
MiBub2RlLCB3aGljaCBvY2N1cnMgYWZ0ZXIgdGhlIERpdi9Nb2Qgbm9kZSB0aGF0IHRoZSBjb252
ZXJzaW9ucwotICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgaW5zZXJlZCBvbi4KLSAgICAgICAg
ICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAg
ICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKLQog
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hp
bGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAgICAv
LyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2aXNp
b24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKApAQCAtODQ1LDcgKzgzNyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAg
RWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICAgICAg
b2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCgKQEAgLTk5Niw3ICs5ODgs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6IHsKICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToK
QEAgLTEwMTAsNiArMTAwMSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAvLyBQaGFudG9tcyBh
cmUgbWVhbmluZ2xlc3MgcGFzdCBGaXh1cC4gV2UgcmVjcmVhdGUgdGhlbSBvbi1kZW1hbmQgaW4g
dGhlIGJhY2tlbmQuCisgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgIGNhc2UgRmlhdEludDUyOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlbmFibGVJbnQ1MigpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CkBAIC0xMDczLDcgKzEwNjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzU3RyaW5n
OgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmco
KSkgewogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNr
LCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0Nv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVz
ZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihub2RlKTsKQEAgLTEwODMsNyArMTA3OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAg
ICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE9iamVjdFVzZSkpOwogICAgICAgICAg
ICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsK
ICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPYmplY3RVc2U+KG5vZGUpOwpA
QCAtMTE1NiwyOCArMTE1MiwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUmVmUHRyPFR5cGVT
ZXQ+IHR5cGVTZXQgPSBub2RlLT50eXBlTG9jYXRpb24oKS0+bV9pbnN0cnVjdGlvblR5cGVTZXQ7
CiAgICAgICAgICAgICBSdW50aW1lVHlwZU1hc2sgc2VlblR5cGVzID0gdHlwZVNldC0+c2VlblR5
cGVzKCk7CiAgICAgICAgICAgICBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1h
Y2hpbmVJbnQpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkp
CiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgp
OwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBl
TnVtYmVyIHwgVHlwZU1hY2hpbmVJbnQpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgfSBl
bHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nKSkgewotICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8o
VHlwZUJvb2xlYW4pKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlw
ZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCB8IFR5cGVOdWxsKSAmJiAoc2Vl
blR5cGVzICYgVHlwZVVuZGVmaW5lZCkgJiYgKHNlZW5UeXBlcyAmIFR5cGVOdWxsKSkgewotICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1U
byhUeXBlT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCBzZXQgPSB0eXBl
U2V0LT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNldC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUobV9n
cmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9DaGVja1N0cnVjdHVyZShtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzZXQpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTEyOTQsNyArMTI5MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAvLyBkZWNpc2lvbiBwcm9jZXNzIG11Y2ggZWFzaWVyLgogICAgICAg
ICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihlZGdlLm5vZGUoKSk7CiAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAg
ICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgIGVk
Z2Uuc2V0VXNlS2luZChLbm93blN0cmluZ1VzZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
Mzk2LDkgKzEzOTIsNiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgbGVmdFVzZUtp
bmQ+CiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlRmFzdFN0cmluZ0FkZChOb2RlKiBub2RlLCBFZGdl
JiBsZWZ0LCBFZGdlJiByaWdodCkKICAgICB7Ci0gICAgICAgIE5vZGUqIG9yaWdpbmFsTGVmdCA9
IGxlZnQubm9kZSgpOwotICAgICAgICBOb2RlKiBvcmlnaW5hbFJpZ2h0ID0gcmlnaHQubm9kZSgp
OwotICAgICAgICAKICAgICAgICAgQVNTRVJUKGxlZnRVc2VLaW5kID09IFN0cmluZ1VzZSB8fCBs
ZWZ0VXNlS2luZCA9PSBTdHJpbmdPYmplY3RVc2UgfHwgbGVmdFVzZUtpbmQgPT0gU3RyaW5nT3JT
dHJpbmdPYmplY3RVc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzU3RyaW5nT2JqZWN0VXNl
PGxlZnRVc2VLaW5kPigpICYmICFjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5v
cmlnaW4uc2VtYW50aWMpKQpAQCAtMTQzMywxMiArMTQyNiw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgLy8gV2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGF0IHRoZQotICAgICAgICAvLyAqb3JpZ2luYWwqIGlucHV0cyB0byB0aGUgYWRkaXRpb24g
YXJlIGxpdmUgdXAgdG8gaGVyZS4KLSAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3Jp
Z2luLAotICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQpLCBFZGdlKG9yaWdpbmFsUmlnaHQp
KTsKLSAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VSb3BlKG5vZGUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTYyLDcgKzE1NDksNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgewogICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgRWRnZShhcnJheSwgU3RyaW5n
VXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywg
b3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCkBAIC0xNzczLDcgKzE3
NjAsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2RlLCB1c2VL
aW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIEtub3duSW50MzJV
c2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgZml4SW50T3JCb29sZWFuRWRnZShFZGdlJiBlZGdlKQpAQCAtMTc5NSw3ICsxNzgxLDYg
QEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7
CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2RlLCBJbnQzMlVzZSk7Ci0gICAg
ICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBmaXhE
b3VibGVPckJvb2xlYW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0xODE3LDcgKzE4MDIsNiBAQCBwcml2
YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAg
ICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIERvdWJsZVJlcFVzZSk7Ci0gICAgICAg
IGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB0cnVuY2F0
ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQpAQCAtMTk5NywxMSArMTk4MSw5IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9yIChtX2luZGV4SW5CbG9j
ayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5CbG9jaykg
ewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7
Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICB0cnlU
b1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSk7CiAgICAgICAgICAgICBERkdfTk9E
RV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCBpbmplY3RUeXBlQ29udmVy
c2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQotICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5
KCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAK
QEAgLTIwMTUsNyArMTk5Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICBjYXNlIFBoYW50
b206CiAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElM
RFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCBmaXhFZGdlUmVwcmVzZW50YXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMDc2LDggKzIwNTcsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkp
OwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURvdWJsZSwgRG91YmxlQ29uc3Rh
bnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMDAsOCArMjA3OSw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgp
KTsKLQogICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTWFjaGluZUludENvbnN0YW50KCkpIHsKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIEludDUyQ29uc3Rh
bnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMjgsOCArMjEwNSw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1MlJlc3Vs
dCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBh
ZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3JpZ2luLApAQCAt
MjE0NSwzMiArMjEyMCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9IH0KICAgICB9CiAgICAgCi0g
ICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIG1f
cmVxdWlyZWRQaGFudG9tcy5hcHBlbmQobm9kZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRQaGFu
dG9tc0lmTmVjZXNzYXJ5KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3JlcXVpcmVkUGhhbnRvbXMu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21zLnNpemUoKTsgaS0tOykgewotICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fcmVxdWlyZWRQaGFudG9tc1tpXTsKLSAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBQaGFudG9tLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAg
bm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fcmVx
dWlyZWRQaGFudG9tcy5yZXNpemUoMCk7Ci0gICAgfQotICAgIAogICAgIEJhc2ljQmxvY2sqIG1f
YmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAgICAgTm9kZSogbV9jdXJyZW50
Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9vbCBtX3Byb2Zp
dGFiaWxpdHlDaGFuZ2VkOwotICAgIFZlY3RvcjxOb2RlKiwgMz4gbV9yZXF1aXJlZFBoYW50b21z
OwogfTsKICAgICAKIGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkz
LDI2ICs1OTMsNiBAQCB2b2lkIEdyYXBoOjpyZXNldFJlYWNoYWJpbGl0eSgpCiAgICAgZGV0ZXJt
aW5lUmVhY2hhYmlsaXR5KCk7CiB9CiAKLXZvaWQgR3JhcGg6Om1lcmdlUmVsZXZhbnRUb09TUigp
Ci17Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFB1
dEhpbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3MoTm9kZVJl
bGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVmQ291bnRD
YWxjdWxhdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlz
aW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29y
a2luZyBjb3B5KQpAQCAtNDUyLDggKzQ1Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVybWlu
ZVJlYWNoYWJpbGl0eSgpOwogICAgIHZvaWQgcmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAKLSAg
ICB2b2lkIG1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgIAogICAgIHZvaWQgY29tcHV0ZVJlZkNv
dW50cygpOwogICAgIAogICAgIHVuc2lnbmVkIHZhckFyZ051bUNoaWxkcmVuKE5vZGUqIG5vZGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJl
dmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9u
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gaW5zZXJ0Q29uc3RhbnRGb3JVc2UoaW5kZXgsIG9yaWdpbiwganNVbmRlZmluZWQo
KSwgdXNlS2luZCk7CiAgICAgfQogICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVfdCBp
bmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4pCisgICAgewor
ICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAgICAgaWYgKGNo
aWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gaW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIGNoaWxkcmVu
KTsKKyAgICB9CisgICAgCisgICAgTm9kZSogaW5zZXJ0Q2hlY2soc2l6ZV90IGluZGV4LCBOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydENoZWNrKGluZGV4LCBub2RlLT5v
cmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICB9CisgICAgCisgICAgTm9kZSogaW5zZXJ0Q2hl
Y2soc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgRWRnZSBlZGdlKQorICAgIHsKKyAg
ICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgcmV0dXJuIGluc2Vy
dE5vZGUoaW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBlZGdlKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKiBi
bG9jaykKICAgICB7CiAgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNlcnRp
b25zKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29t
YmluaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFycmF5Qm91
bmRzOgotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZS4gQnV0IGZv
ciBub3cgd2UganVzdCBhc3NlcnQgdGhhdCdzIHRoZSBjYXNlLgogICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG5vZGUsICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAg
ICAgIAotICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBQaGFudG9t
LCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBub2RlUmVmID0gbV9n
cmFwaC5hZGROb2RlKFNwZWNOb25lLCBDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNoaWxk
cmVuKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiAr
ODUsMTUgQEAgYm9vbCBOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgmIAogICAgIH0K
IH0KIAordm9pZCBOb2RlOjpyZW1vdmUoKQoreworICAgIEFTU0VSVCghKGZsYWdzKCkgJiBOb2Rl
SGFzVmFyQXJncykpOworICAgIAorICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uanVzdENoZWNrcygp
OworICAgIAorICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsKK30KKwogdm9pZCBOb2Rl
Ojpjb252ZXJ0VG9JZGVudGl0eSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2hpbGQxKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE4MzQwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDcsMTUgKzQwNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9mbGFncyA9IGRlZmF1bHRG
bGFncyhvcCk7CiAgICAgfQogCi0gICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tKCkKLSAgICB7Ci0g
ICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGNvbnZlcnRUb0NoZWNrKCkKLSAgICB7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdz
KENoZWNrKTsKLSAgICB9CisgICAgdm9pZCByZW1vdmUoKTsKIAogICAgIHZvaWQgY29udmVydFRv
Q2hlY2tTdHJ1Y3R1cmUoU3RydWN0dXJlU2V0KiBzZXQpCiAgICAgewpAQCAtNDI1LDcgKzQxNyw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2b2lkIHJlcGxhY2VXaXRoKE5vZGUqIG90aGVy
KQogICAgIHsKLSAgICAgICAgY29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZW1vdmUoKTsK
ICAgICAgICAgc2V0UmVwbGFjZW1lbnQob3RoZXIpOwogICAgIH0KIApAQCAtMTU0NiwyMCArMTUz
OCw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgd2lsbEhhdmVDb2RlR2VuT3JPU1IoKQotICAgIHsKLSAgICAgICAgc3dp
dGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgIGNhc2UgTW92SGlu
dDoKLSAgICAgICAgY2FzZSBab21iaWVIaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgIHJldHVybiBjaGlsZDEoKS51c2VLaW5k
VW5jaGVja2VkKCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDIoKS51c2VLaW5kVW5jaGVja2VkKCkg
IT0gVW50eXBlZFVzZSB8fCBjaGlsZDMoKS51c2VLaW5kVW5jaGVja2VkKCkgIT0gVW50eXBlZFVz
ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRHZW5lcmF0ZSgp
OwotICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIGJvb2wgaXNTZW1hbnRpY2FsbHlTa2lwcGFi
bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ291bnRFeGVjdXRpb247CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE4MzQw
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDEyICs2NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNkZWZpbmUgTm9kZUFyaXRoRmxhZ3NNYXNrICAgICAgICAgICAgICAgKE5vZGVCZWhhdmlv
ck1hc2sgfCBOb2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spCiAKLSNkZWZpbmUgTm9kZVJlbGV2YW50
VG9PU1IgICAgICAgICAgICAgICAweDEwMDAwCisjZGVmaW5lIE5vZGVJc0ZsdXNoZWQgICAgICAg
ICAgICAgICAgICAgMHgxMDAwMCAvLyBDb21wdXRlZCBieSBDUFNSZXRocmVhZGluZ1BoYXNlLCB3
aWxsIHRlbGwgeW91IHdoaWNoIGxvY2FsIG5vZGVzIGFyZSBiYWNrd2FyZHMtcmVhY2hhYmxlIGZy
b20gYSBGbHVzaC4KIAotI2RlZmluZSBOb2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAgIDB4
MjAwMDAgLy8gQ29tcHV0ZWQgYnkgQ1BTUmV0aHJlYWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlvdSB3
aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEgRmx1c2guCi0K
LSNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAweDQwMDAwCi0jZGVmaW5l
IE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHg4MDAwMAorI2RlZmluZSBOb2RlTWlz
Y0ZsYWcxICAgICAgICAgICAgICAgICAgIDB4MjAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMiAg
ICAgICAgICAgICAgICAgICAweDQwMDAwCisjZGVmaW5lIE5vZGVNaXNjRmxhZzMgICAgICAgICAg
ICAgICAgICAgMHg4MDAwMAogCiB0eXBlZGVmIHVpbnQzMl90IE5vZGVGbGFnczsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTgzNDA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBiYXNpYyBibG9jayBtaWdodCBoYXZlIHJlYWQgYSBsb2NhbCB2YXJpYWJsZSBpbiBieXRlY29k
ZS4gV2Ugb25seSByZW1vdmUgR2V0TG9jYWxzIGlmIGl0ICovXAogICAgIC8qIGlzIHJlZHVuZGFu
dCBiZWNhdXNlIG9mIGFuIGVhcmxpZXIgR2V0TG9jYWwgb3IgU2V0TG9jYWwgaW4gdGhlIHNhbWUg
YmxvY2suIFdlIGNvdWxkIG1ha2UgKi9cCiAgICAgLyogdGhlc2Ugbm90IE11c3RHZW5lcmF0ZSBh
bmQgdXNlIGEgbW9yZSBzb3BoaXN0aWNhdGVkIGFuYWx5c2lzIHRvIGluc2VydCBQaGFudG9tTG9j
YWxzIGluICovXAotICAgIC8qIHRoZSBzYW1lIHdheSB0aGF0IHdlIGluc2VydCBQaGFudG9tcy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDA4NiAqL1wKKyAgICAv
KiB0aGUgc2FtZSB3YXkgdGhhdCB3ZSBpbnNlcnQgUGhhbnRvbXMuIFRoYXQncyBoYXJkIGFuZCBw
cm9iYWJseSBub3QgcHJvZml0YWJsZS4gU2VlICovXAorICAgIC8qIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYgKi9cCiAgICAgbWFjcm8oR2V0TG9jYWwsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhTZXRMb2NhbCwgMCkg
XAogICAgIFwKQEAgLTcyLDggKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKFpvbWJpZUhpbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
aGFudG9tLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2ssIE5vZGVNdXN0R2Vu
ZXJhdGUpIC8qIFVzZWQgaWYgd2Ugd2FudCBqdXN0IGEgdHlwZSBjaGVjayBidXQgbm90IGxpdmVu
ZXNzLiBOb24tY2hlY2tpbmcgdXNlcyB3aWxsIGJlIHJlbW92ZWQuICovXAotICAgIG1hY3JvKFVw
c2lsb24sIE5vZGVSZWxldmFudFRvT1NSKSBcCi0gICAgbWFjcm8oUGhpLCBOb2RlUmVsZXZhbnRU
b09TUikgXAorICAgIG1hY3JvKFVwc2lsb24sIDApIFwKKyAgICBtYWNybyhQaGksIDApIFwKICAg
ICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2Nh
bCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTI4MSwxMCArMjgyLDEwIEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9uLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8oQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBO
b2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQaGFudG9tRGlyZWN0QXJndW1lbnRzLCBOb2RlUmVz
dWx0SlMpIFwKKyAgICBtYWNybyhQaGFudG9tRGlyZWN0QXJndW1lbnRzLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1
bHRKUykgXAotICAgIG1hY3JvKFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRGcm9tQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBtYWNybyhQdXRUb0FyZ3VtZW50cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgxLDcgKzU4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7CiAgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlvbigpICYmIG1fc2lua0Nh
bmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92
ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIApAQCAtNzk1LDcgKzc5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0Ogog
ICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2Fz
ZSBDaGVjazoKICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgU3RvcmVC
YXJyaWVyV2l0aE51bGxDaGVjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIgot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUg
IkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7Ci0KLXN0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9kZU5lZWRzUGhhbnRv
bSA9IE5vZGVNaXNjRmxhZzE7Ci0KLWNsYXNzIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhh
c2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRvbSBjYW5vbmlj
YWxpemF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5jbGVhckZsYWdzT25BbGxOb2RlcyhOb2RlTmVlZHNQaGFudG9tIHwgTm9kZVJlbGV2
YW50VG9PU1IpOwotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgICAg
ICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nr
cygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1f
Z3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1bnNpZ25lZCBz
b3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7Ci0g
ICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2sp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5j
eUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0g
bm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVk
Z2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9kZS0+
b3AoKSA9PSBQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQaGFu
dG9tIG9uIGEgbm9kZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVkIHRv
IGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhpcyBu
b2RlIGluc3RlYWQgb2YganVzdCBoYXZpbmcgYSBDaGVjay4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlZGdlLT5tZXJnZUZsYWdzKE5vZGVOZWVkc1BoYW50b20pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVD
aGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRo
ZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0g
ICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsg
YmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBo
LmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewot
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVOZWVkc1BoYW50b20pIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBu
b2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZvcm1Q
aGFudG9tQ2Fub25pY2FsaXphdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIENhbm9uaWNhbGl6YXRpb24gUGhhc2UiKTsK
LSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZT4oZ3JhcGgp
OwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25p
Y2FsaXphdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgJKHJldmlzaW9uIDE4MzQwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9oCi0K
LSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1jbGFzcyBHcmFwaDsKLQotLy8gUmVwbGFjZXMgYWxsIHByZS1leGlzdGluZyBQaGFudG9tcyB3
aXRoIENoZWNrcyBvciByZW1vdmVzIHRoZW0gaWYgdGhlIENoZWNrIGlzIHVubmVjZXNzYXJ5LiBJ
ZgotLy8gdGhlIFBoYW50b20gd2FzIG5lY2Vzc2FyeSAoaXQgdXNlcyBhIG5vZGUgdGhhdCBpcyBy
ZWxldmFudCB0byBPU1IpIHRoZW4gdGhlIFBoYW50b20gaXMgaG9pc3RlZAotLy8gdG8ganVzdCBi
ZWxvdyB0aGUgbm9kZS4KLS8vCi0vLyBUaGlzIHBoYXNlIGlzIG9ubHkgdmFsaWQgaW4gU1NBLCBi
ZWNhdXNlIGl0J3Mgb25seSBpbiBTU0EgdGhhdCBQaGFudG9tcyBhcmUgaWdub3JlZCBmb3IgdGhl
Ci0vLyBwdXJwb3NlIG9mIGxpdmVuZXNzLWF0LXNvbWUtcG9pbnQgYW5kIGFyZSBvbmx5IHVzZWQg
Zm9yIGFic29sdXRlIGxpdmVuZXNzLgotLy8KLS8vIFRoaXMgcGhhc2UgbWFrZXMgYSBsb3Qgb2Yg
dGhpbmdzIGVhc2llciwgbGlrZSBDRkcgc2ltcGxpZmljYXRpb246IHlvdSBkb24ndCBoYXZlIHRv
IGluc2VydCBhbnkKLS8vIHBoYW50b21zIHdoZW4gamV0dGlzb25pbmcgYSBDRkcgZWRnZS4KLQot
Ym9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmKTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAv
LyBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNp
b24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQp
Ci0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgot
I2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCi0jaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNs
YXNzIFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBo
YW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAi
cGhhbnRvbSByZW1vdmFsIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAg
ICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4
LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVh
ZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJs
b2NrLT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2st
PnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRMb2Nh
bDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdl
IGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigp
OwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2Nr
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1
bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRl
eCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsK
LSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxs
cHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3VsZCBi
ZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJqZWN0
IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4uZm9y
RXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2su
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFu
dFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5
TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0
OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUt
PmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3Zl
RWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVu
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRv
ci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZvcm1Q
aGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhh
c2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgJKHJldmlzaW9u
IDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQ
aGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBo
YXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsK
LQotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVu
LiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRlcyBt
YW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lz
LgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGlu
IFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21SZW1v
dmFsKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiCiAj
aW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBoYXNl
LmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmgi
CiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTUxLDEzICs1MiwxMCBAQAogI2luY2x1ZGUg
IkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FDb252ZXJzaW9uUGhhc2UuaCIK
ICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHU3RhY2tMYXlv
dXRQaGFzZS5oIgpAQCAtMzE4LDcgKzMxNiw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKGRmZyk7
CiAKICAgICAgICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAgICAgICAgcGVy
Zm9ybVBoYW50b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7CiAg
ICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAgICAgICBwZXJmb3JtRENFKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRmZyk7CkBAIC0zNDQsNyArMzQy
LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICAg
ICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgYml0LgorICAg
ICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBiaXQu
CiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhkZmcpOwogICAgICAgICBwZXJm
b3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVh
ZGluZyhkZmcpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKICAg
ICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKGRm
Zyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOyAvLyBSZWR1
Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7IC8v
IFJlZHVjZSB0aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAg
ICBpZiAoT3B0aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSkgewpAQCAtMzgx
LDcgKzM3OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAg
ICAgICAgLy8gdGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1wbGUgU1NBIGZpeC11cC4KICAg
ICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAgICAgIHBlcmZvcm1QaGFudG9t
Q2Fub25pY2FsaXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAg
ICAgICBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1H
bG9iYWxDU0UoZGZnKTsKICAgICAgICAgCkBAIC0zOTAsMTUgKzM4OCwxMSBAQCBQbGFuOjpDb21w
aWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGRmZy5tX2ZpeHBvaW50U3Rh
dGUgPSBGaXhwb2ludENvbnZlcmdlZDsKICAgICAgICAgCiAgICAgICAgIHBlcmZvcm1TdG9yZUJh
cnJpZXJFbGlzaW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlv
bihkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwogICAgICAgICBw
ZXJmb3JtQ0ZBKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZUTE9TUkV4aXRM
aXZlbmVzcygpKQotICAgICAgICAgICAgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24o
ZGZnKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpIHsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpCiAgICAgICAgICAgICBw
ZXJmb3JtTW92SGludFJlbW92YWwoZGZnKTsKLSAgICAgICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fu
b25pY2FsaXphdGlvbihkZmcpOwotICAgICAgICB9CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8gV2UgcmVseSBvbiB0aGlzIHRvIGtpbGwg
ZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXplZCBhcyBkZWFkIGJ5IExMVk0uCiAgICAg
ICAgIHBlcmZvcm1TdGFja0xheW91dChkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFs
eXNpcyhkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Np
bmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBu
b2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsU3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG5vZGUt
PnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbC5vZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIgot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5o
IgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCi0j
aW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicmVzdXJy
ZWN0aW9uIGZvciB2YWxpZGF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVu
KCkKLSAgICB7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVt
QmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmln
aW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLWJvb2wgcGVyZm9ybVJlc3Vy
cmVjdGlvbkZvclZhbGlkYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgUmVzdXJyZWN0aW9uIEZvciBWYWxpZGF0aW9uIFBoYXNlIik7
Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZT4oZ3Jh
cGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oCShyZXZpc2lvbiAxODM0
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlk
YXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2VfaAotI2RlZmluZSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21tb24u
aCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsKLQot
Ly8gUGxhY2VzIGEgUGhhbnRvbSBhZnRlciBldmVyeSB2YWx1ZS1wcm9kdWNpbmcgbm9kZSwgdGhl
cmVieSBkaXNhYmxpbmcgRENFIGZyb20ga2lsbGluZyBpdC4KLS8vIFRoaXMgaXMgdXNlZnVsIGZv
ciB2YWxpZGF0aW5nIG91ciBPU1IgZXhpdCBtYWNoaW5lcnkgYnkgaW5zdGl0dXRpbmcgdGhlIHJl
cXVpcmVtZW50IHRoYXQKLS8vIGFueSBsaXZlLWluLWJ5dGVjb2RlIHZhcmlhYmxlIHNob3VsZCBi
ZSBPU1ItYXZhaWxhYmxlLiBXaXRob3V0IHRoaXMgcGhhc2UsIGl0J3MgaW1wb3NzaWJsZQotLy8g
dG8gbWFrZSBzdWNoIGFuIGFzc2VydGlvbiBiZWNhdXNlIG91ciBEQ0UgaXMgbW9yZSBhZ2dyZXNz
aXZlIHRoYW4gdGhlIGJ5dGVjb2RlIGxpdmVuZXNzCi0vLyBhbmFseXNpcy4KLQotYm9vbCBwZXJm
b3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4
MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNldCgp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JPcGVyYW5kLm9w
ZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2Fs
KCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
QEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZhbHVlRm9yT3Bl
cmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFNldEFy
Z3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJF
bGlzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2RlKiBub2Rl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwotICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAg
IH0KIAogICAgIHZvaWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRCYXJyaWVy
cywgTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKHlPcGVyYW5kVmFsdWUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0
VG9JZGVudGl0eU92ZXJDaGlsZDEoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHlPcGVy
YW5kVmFsdWUgPT0gMC41KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUobV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9yaWdpbiwg
bV9ub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENoZWNrKG1fbm9kZUluZGV4LCBtX25vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNvbnZlcnRUb0FyaXRoU3FydCgpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2Niw4ICsxNjYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsg
bm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChjYW5v
bmljYWxSZXN1bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KICAgICAgICAgICAg
ICAgICAgICAgY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2Rl
LT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhZEludDMyQ2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBhZGRpbmcgSW50NTJSZXBJbnQzMlVzZSBvciBldmVuIERvdWJsZVJlcElu
dDMyVXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggd291bGQgYmUgc3VwZXIg
d2VpcmQuIFRoZSBsYXR0ZXIgd291bGQgb25seSBhcmlzZSBpbiBzb21lCkBAIC0xNzUsOSArMTc0
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1
bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9u
b2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLCBJbnQz
MlVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hl
Y2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3Jp
Z2luLCBFZGdlKG5vZGUsIEludDMyVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTIzOSw4
ICsyMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9JZGVu
dGl0eU92ZXJDaGlsZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKLSAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwg
UGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgbV9u
b2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGNoaWxkSW5kZXggXiAxKTsKICAgICAgICAgbV9ub2Rl
LT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE4MzQw
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBm
b3VuZFRlcm1pbmFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IGkgKyAxOyBqIDwgYmxvY2stPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlID0gYmxvY2stPmF0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tTG9j
YWwgfHwgbm9kZS0+b3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5vcCgpID09IFBoYW50
b21Mb2NhbCB8fCBub2RlLT5vcCgpID09IEZsdXNoIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2spOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0g
KEVkZ2UgZWRnZSkgewpAQCAtNDYyLDYgKzQ2Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
InVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnROb3RDb252
ZXJnZWQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC01
NDEsNiArNTQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgog
ICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoKICAgICAgICAgICAgICAgICBj
YXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhImJhZCBub2RlIHR5cGUgZm9yIFNTQSIpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3
ICsxMDEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZWxldmFudExvY2Fscy5h
cHBlbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNh
c2UgQ2hlY2s6CiAgICAgICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkKQEAgLTIzMiw3ICsyMzEsNiBAQCBw
cml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGNhbmRpZGF0ZU5vZGVJ
bmRleCArIDE7IG5vZGVJbmRleCA8PSBsYXN0VXNlckluZGV4OyArK25vZGVJbmRleCkgewogICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAg
ICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAg
Y2FzZSBQdXRIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShy
ZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCw2IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5v
ZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+d2lsbEhhdmVDb2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6c2hvd0FsbERGR05vZGVz
KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBzdGFjazsKICAgICAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDkgKzQ2Myw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICBjb21waWxlUHV0U3Rh
Y2soKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAg
IGNhc2UgQ2hlY2s6Ci0gICAgICAgICAgICBjb21waWxlUGhhbnRvbSgpOworICAgICAgICAgICAg
Y29tcGlsZU5vT3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhpczoK
ICAgICAgICAgICAgIGNvbXBpbGVUb1RoaXMoKTsKQEAgLTExNjIsNyArMTE2MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlUGhhbnRvbSgpCisg
ICAgdm9pZCBjb21waWxlTm9PcCgpCiAgICAgewogICAgICAgICBERkdfTk9ERV9ET19UT19DSElM
RFJFTihtX2dyYXBoLCBtX25vZGUsIHNwZWN1bGF0ZSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251787</attachid>
            <date>2015-04-27 16:59:12 -0700</date>
            <delta_ts>2015-04-27 18:20:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129994</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNDM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBA
QAorMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgbm90IHVzZSBvciBwcmVzZXJ2ZSBQaGFudG9tcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDM3MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFNpbmNlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MzIwNyBhbmQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzNDA2LCBpdCBpcworICAgICAgICBu
byBsb25nZXIgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIFBoYW50b21zIGR1cmluZyB0cmFuc2Zvcm1h
dGlvbnMuIFRoZXkgYXJlIHN0aWxsIHVzZWZ1bCBqdXN0CisgICAgICAgIGJlZm9yZSBGaXh1cFBo
YXNlIHRvIHN1cHBvcnQgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGFuYWx5c2VzLiBUaGV5IGFyZSBz
dGlsbCBpbnNlcnRlZCBsYXRlIGluIHRoZQorICAgICAgICBnYW1lIGluIHRoZSBERkcgYmFja2Vu
ZC4gQnV0IHRyYW5zZm9ybWF0aW9ucyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0uIElu
c2lkZSBhIGJhc2ljCisgICAgICAgIGJsb2NrLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHNvIGxvbmcg
YXMgdGhlIElSIHBpbnBvaW50cyB0aGUgcGxhY2Ugd2hlcmUgdGhlIHZhbHVlIGJlY29tZXMKKyAg
ICAgICAgYXZhaWxhYmxlIGluIGEgYnl0ZWNvZGUgcmVnaXN0ZXIgKHVzaW5nIE1vdkhpbnQpIGFu
ZCBzbyBsb25nIGFzIHRoZXJlIGlzIGEgU2V0TG9jYWwgYW55dGltZSBzb21lCisgICAgICAgIG90
aGVyIGJsb2NrIHdvdWxkIG5lZWQgdGhlIHZhbHVlIChlaXRoZXIgZm9yIE9TUiBvciBmb3IgREZH
IGV4ZWN1dGlvbiksIHRoZW4gd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgbGl2ZW5lc3MgbWFy
a2Vycy4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIHJlbW92ZXMgYW55IHBsYWNlcyB3aGVy
ZSB3ZSBpbnNlcnRlZCBQaGFudG9tcyBqdXN0IGZvciBsaXZlbmVzcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb24KKyAgICAgICAgYW5kIGl0IHJlcGxhY2VzIGNvbnZlcnRUb1BoYW50b20oKSB3aXRoIHJl
bW92ZSgpLCB3aGljaCBqdXN0IGNvbnZlcnRzIHRoZSBub2RlIHRvIGEgQ2hlY2suIEEKKyAgICAg
ICAgQ2hlY2sgbm9kZSBvbmx5IGtlZXBzIGl0cyBjaGlsZHJlbiBzbyBsb25nIGFzIHRob3NlIGNo
aWxkcmVuIGhhdmUgY2hlY2tzLgorICAgICAgICAKKyAgICAgICAgVGhlIGZhY3QgdGhhdCB3ZSBu
byBsb25nZXIgY29udmVydFRvUGhhbnRvbSgpIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBiZSBtb3Jl
IGNhcmVmdWwgd2hlbgorICAgICAgICBjb25zdGFudC1mb2xkaW5nIEdldExvY2FsLiBQcmV2aW91
c2x5IHdlIHdvdWxkIGNvbnZlcnRUb1BoYW50b20oKSBhbmQgdXNlIHRoZSBmYWN0IHRoYXQKKyAg
ICAgICAgUGhhbnRvbShQaGkpIHdhcyBhIHZhbGlkIGNvbnN0cnVjdC4gSXQncyBub3QgdmFsaWQg
YW55bW9yZS4gU28sIHdoZW4gY29uc3RhbnQgZm9sZGluZyBlbmNvdW50ZXJzCisgICAgICAgIGEg
R2V0TG9jYWwgaXQgbmVlZHMgdG8gaW5zZXJ0IGEgUGhhbnRvbUxvY2FsIGRpcmVjdGx5LiBUaGlz
IGFsbG93cyB1cyB0byBzaW1wbGlmeQorICAgICAgICBHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQo
KSBhIGJpdC4gTHVja2lseSwgbm9uZSBvZiB0aGUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2Qg
d291bGQgc2VlCisgICAgICAgIEdldExvY2Fscy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5
IFBoYW50b20tbGlrZSBjcnVmdCBsZWZ0IG92ZXIgYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAg
ICAgCisgICAgICAgIC0gUGhhbnRvbXMgYmVmb3JlIEZpeHVwUGhhc2UuIEkga2luZCBvZiBsaWtl
IHRoZXNlLiBJdCBtZWFucyB0aGF0IGJlZm9yZSBGaXh1cFBoYXNlLCB3ZSBjYW4gZG8KKyAgICAg
ICAgICBiYWNrd2FyZHMgYW5hbHlzZXMgYW5kIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgdXNl
cnMgb2YgYSBub2RlIGluIERGRyBJUiBhcmUgYSBzdXBlcnNldCBvZgorICAgICAgICAgIHRoZSB1
c2VycyBvZiB0aGUgb3JpZ2luYWwgbG9jYWwncyBsaXZlIHJhbmdlIGluIGJ5dGVjb2RlLiBUaGlz
IGlzIGVzc2VudGlhbCBmb3Igc3VwcG9ydGluZyBvdXIKKyAgICAgICAgICBCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciB0aGlu
Z3MgbGlrZSBhc20uanMuCisgICAgICAgIAorICAgICAgICAtIFBoYW50b21Mb2NhbHMgYW5kIEdl
dExvY2FscyBiZWluZyBOb2RlTXVzdEdlbmVyYXRlLiBTZWUgZGlzY3Vzc2lvbiBpbgorICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYuIEl0IGFw
cGVhcnMgdGhhdCB0aGlzIGlzIG5vdCBhcyBldmlsIGFzIHRoZQorICAgICAgICAgIGFsdGVybmF0
aXZlcy4gVGhlIGJlc3QgbG9uZy10ZXJtIHBsYW4gaXMgdG8gc2ltcGx5IGRpdGNoIHRoZSBUaHJl
YWRlZENQUyBJUiBlbnRpcmVseSBhbmQgaGF2ZQorICAgICAgICAgIHRoZSBERkcgdXNlIFNTQS4g
Rm9yIG5vdywgc28gbG9uZyBhcyBhbnkgbmV3IERGRyBvcHRpbWl6YXRpb25zIHdlIGFkZCBhcmUg
YmxvY2stbG9jYWwgYW5kCisgICAgICAgICAgdHJlYXQgR2V0TG9jYWwvU2V0TG9jYWwgY29uc2Vy
dmF0aXZlbHksIHRoaXMgc2hvdWxkIGFsbCBiZSBzb3VuZC4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgY2hhbmdlIHNob3VsZCBiZSBwZXJmLW5ldXRyYWwgYWx0aG91Z2ggaXQgZG9lcyByZWR1Y2Ug
dGhlIHRvdGFsIHdvcmsgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgZG9lcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlzdDo6anVzdENoZWNrcyk6CisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpyZXBsYWNlVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRp
b25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpDUFNSZXRo
cmVhZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpj
bGVhclZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6
Y2Fub25pY2FsaXplRmx1c2hPclBoYW50b21Mb2NhbEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcC4KKyAgICAgICAgKEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OkNsZWFuVXBQaGFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q2xlYW5VcFBoYXNlOjpydW4pOgorICAgICAgICAoSlND
OjpERkc6OnBlcmZvcm1DbGVhblVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUmVtb3Zh
bFBoYXNlOjpQaGFudG9tUmVtb3ZhbFBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QaGFudG9tUmVtb3ZhbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NsZWFu
VXBQaGFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21SZW1vdmFsUGhhc2UuaC4KKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6YWRkQmFzZUNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zml4VXBzaWxv
bnMpOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RENFUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVwQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpjbGVhblZhcmlhYmxlcyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFN0cmluZ0FkZFVzZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludENvbnZlcnRpbmdFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXhJbnRPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXhEb3VibGVPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFJlcXVpcmVkUGhhbnRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUGhhbnRvbXNJZk5lY2Vzc2Fy
eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjptZXJnZVJlbGV2YW50VG9PU1IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnNlcnRpb25TZXQ6Omluc2VydENoZWNrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpyZW1vdmUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cmVwbGFjZVdp
dGgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b20pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NoZWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjp3aWxsSGF2ZUNvZGVHZW5Pck9TUik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpsb3dlck5vblJl
YWRpbmdPcGVyYXRpb25zT25QaGFudG9tQWxsb2NhdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6
Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBk
ZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdQ
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToK
KyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2U6OmVsaWRlQmFy
cmllcik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmNvbnZlcnRUb0lkZW50aXR5
T3ZlckNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6
OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVTU0Ep
OgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9PcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQ
aGFudG9tKTogRGVsZXRlZC4KKwogMjAxNS0wNC0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBp
biB3dGYvU0hBMS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAogICAgIGRmZy9ERkdDU0VQaGFz
ZS5jcHAKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorICAgIGRmZy9ERkdDbGVhblVwUGhh
c2UuY3BwCiAgICAgZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCiAgICAgZGZnL0RGR0Nsb2JiZXJpemUu
Y3BwCiAgICAgZGZnL0RGR0NvbW1vbi5jcHAKQEAgLTIwMiw5ICsyMDMsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAogICAgIGRmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAogICAgIGRmZy9E
RkdPcGVyYXRpb25zLmNwcAotICAgIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmNwcAogICAgIGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCi0gICAgZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwCiAgICAgZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQ
aGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5jcHAKQEAgLTIxNCw3ICsyMTMsNiBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVlLmNwcAogICAgIGRmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAKLSAgICBkZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNw
cAogICAgIGRmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAogICAgIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwCiAgICAgZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsNyBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZGZnXERGR0NhcGFiaWxpdGllcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ0ZBUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZGZnXERGR0NsZWFuVXBQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xvYmJlcml6ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ2xvYmJlclNldC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxkZmdcREZHQ29tbW9uLmNwcCIgLz4KQEAgLTQ0Niw5ICs0NDcsNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcCIgLz4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhpQ2hpbGRyZW4uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZGZnXERGR1BsYW4uY3BwIiAvPgpAQCAtNDU4LDcgKzQ1Nyw2IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1B1cmVWYWx1ZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUHV0U3RhY2tTaW5raW5nUGhhc2Uu
Y3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1Jlc3VycmVjdGlvbkZv
clZhbGlkYXRpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHU2FmZXBvaW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdT
cGVjdWxhdGl2ZUpJVC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAiIC8+CkBAIC0xMDYyLDYgKzEwNjAsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NDYWxsSGVscGVycy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NGQVBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NsZWFuVXBQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0Nsb2JiZXJpemUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkZmdcREZHQ29tbW9uLmgiIC8+CkBAIC0xMTQyLDkgKzExNDEsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdPU1JFeGl0UHJlcGFyYXRpb24u
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhh
bnRvbUluc2VydGlvblBoYXNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdc
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
ZGZnXERGR1BoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhp
Q2hpbGRyZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQbGFuLmgi
IC8+CkBAIC0xMTU4LDcgKzExNTUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZn
XERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHUmVnaXN0ZXJCYW5rLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxk
ZmdcREZHUmVnaXN0ZXJTZXQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdTYWZlVG9FeGVjdXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxkZmdcREZHU2FmZXBvaW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIgLz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw2IEBACiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQw
MTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRl
Y29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMjE4
MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLzsgfTsKIAkJMEY2NjZFQzcx
ODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzMxODM1NjcyQjAwRDAxN0YxIC8qIERG
R0F2YWlsYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTBGNjY2RUNDMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JW
YWxpZGF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2NjZFQ0ExODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZh
bGlkYXRpb25QaGFzZS5jcHAgKi87IH07Ci0JCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdGMSAvKiBE
RkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QzE0
REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY4MkZC
MjE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY4MkZCMDE5QkNCMzY0MDBGQTNCQUQg
LyogREZHU1NBQ2FsY3VsYXRvci5jcHAgKi87IH07CkBAIC00MTAsOCArNDA4LDYgQEAKIAkJMEY3
OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5MDg1NDE5
QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0QjE0QzND
RDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2Fw
YWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5RUJDNDAwQ0Yy
NDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGN0IzNjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25p
Y2FsaXphdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmNwcCAqLzsgfTsKLQkJMEY3QjM2NjIxOTdDNTI1QzAwRUQxRERDIC8qIERG
R1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFu
dG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIz
RTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTQ2Miw2ICs0NTgsOCBAQAogCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hl
ZEF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlE
MzM5NTE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJD
IC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlEMzM5ODE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCAq
LzsgfTsKIAkJMEY5RDMzOUIxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTkxODAzQURC
NzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVh
blVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi87IH07
CisJCTBGOUQzNjk1MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzNjkzMUFFOUNDMzMw
MDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlGQjRGNDE3RkNCOTE3MDBDQjY3RjggLyogREZHU3Rh
Y2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5j
cHAgKi87IH07CiAJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlG
QjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUZDOEMzMTRFMUI1RkUw
MEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQ
b2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLzsgfTsKQEAgLTUxOSw4ICs1MTcsNiBAQAogCQkw
RkJFMEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNzAxNkMxREIwMTAw
ODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJGMTU4QzE5QjdBNTMxMDA2OTVERDAgLyogREZH
QmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLzsgfTsKIAkJ
MEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRjE1OEIxOUI3QTUzMTAw
Njk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQkZERDAyMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcCAqLzsgfTsKLQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50
b21SZW1vdmFsUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQkZERDAzMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZD
MDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NkYxNDY5
M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAv
KiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyNjQuY3BwICovOyB9OwpAQCAtMjEwMiw4ICsyMDk4LDYgQEAKIAkJMEY2NjZFQkYxODM1
NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxhYmlsaXR5
LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjY2NkVDMzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5oOyBwYXRo
ID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBo
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Jlc3VycmVj
dGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2NjZF
Q0IxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERGM0YxMzAwQjdC
MkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERG
R0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZS5oOyBwYXRo
ID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2ODJGQjAx
OUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBQ2FsY3VsYXRvci5jcHA7IHBhdGggPSBkZmcvREZH
U1NBQ2FsY3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ1LDgg
KzIxMzksNiBAQAogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzkwODUzMTlBMjkwQjIwMEY2
MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHA7
IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjdCMzY1
RjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3QjM2NjAxOTdDNTI1QzAw
RUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOyBw
YXRoID0gZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxOTcsNiArMjE4OSw4IEBACiAJCTBGOUQz
Mzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzk4MTgwM0FEQjcwMDczQzJCQyAv
KiBGVExTdGFja01hcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RlRMU3RhY2tNYXBzLmNwcDsgcGF0aCA9IGZ0bC9GVExTdGFja01hcHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5OTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tN
YXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN0YWNrTWFwcy5oOyBw
YXRoID0gZnRsL0ZUTFN0YWNrTWFwcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjlEMzY5MjFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NsZWFuVXBQaGFzZS5jcHA7IHBhdGggPSBk
ZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
RDM2OTMxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDbGVh
blVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkI0RjIxN0ZDQjkx
NzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZH
U3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZC
NEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZD
OEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2NCw4ICsyMjU4LDYgQEAKIAkJMEZC
RTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5oOyBwYXRoID0gZGZn
L0RGR1VuaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZC
RjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9j
a1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkYxNThCMTlCN0E1MzEw
MDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQmxvY2tTZXRJbmxpbmVzLmg7IHBhdGggPSBkZmcvREZHQmxvY2tTZXRJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQkZERDAyMTk2QzkyQkYwMDdB
NUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RkJGREQwMzE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmg7IHBh
dGggPSBkZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Lmg7IHBhdGggPSBkZmcvREZHT1NS
RXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc2RjE0NjkzQUVGMDBD
RjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09TUkV4aXRDb21waWxlci5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0
NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4ODAsNiAr
NDg3Miw4IEBACiAJCQkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmgg
Ki8sCiAJCQkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwICovLAogCQkJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmggKi8sCisJCQkJMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0REZCIC8qIERG
R0NsZWFuVXBQaGFzZS5jcHAgKi8sCisJCQkJMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZCIC8qIERG
R0NsZWFuVXBQaGFzZS5oICovLAogCQkJCUE3N0E0MjM4MTdBMEJCRkQwMEE4REI4MSAvKiBERkdD
bG9iYmVyaXplLmNwcCAqLywKIAkJCQlBNzdBNDIzOTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xv
YmJlcml6ZS5oICovLAogCQkJCUE3N0E0MjNBMTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVy
U2V0LmNwcCAqLywKQEAgLTUwMjYsMTIgKzUwMjAsOCBAQAogCQkJCTBGRUZDOUE4MTY4MUEzQjAw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi8sCiAJCQkJMEYyMzVCRTkx
NzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8sCiAJCQkJMEYy
MzVCRUExNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICovLAotCQkJ
CTBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBo
YXNlLmNwcCAqLywKLQkJCQkwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNh
bm9uaWNhbGl6YXRpb25QaGFzZS5oICovLAogCQkJCTBGNjIzNzk1MUFFNDVDQTcwMEQ0MDJFQSAv
KiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGNjIzNzk2MUFFNDVDQTcw
MEQ0MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCAqLywKLQkJCQkwRkJGREQwMjE5
NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgKi8sCi0JCQkJMEZC
RkREMDMxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAqLywKIAkJ
CQkwRkZGQzk0RjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuY3BwICovLAogCQkJCTBGRkZD
OTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovLAogCQkJCTBGMkI5Q0RFMTlEMEJB
N0QwMEIxRDFCNSAvKiBERkdQaGlDaGlsZHJlbi5jcHAgKi8sCkBAIC01MDUzLDggKzUwNDMsNiBA
QAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmggKi8sCiAJCQkJODZFQzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lz
dGVyQmFuay5oICovLAotCQkJCTBGNjY2RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICovLAotCQkJCTBGNjY2RUNCMTgzNkIzN0UwMEQw
MTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLywKIAkJCQkwRjJG
Q0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywKIAkJCQkwRjJGQ0NG
NTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCiAJCQkJQTc3QTQyM0MxN0Ew
QkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCAqLywKQEAgLTU4NjgsNyArNTg1Niw2
IEBACiAJCQkJMEZCRTBGNzUxNkMxREIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMyIC8q
IERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVD
OUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVhZGVycyAqLywK
LQkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQzE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MzE3QTBCQkZEMDBB
OERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MTAxN0Yx
NzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTU5NDMsNiArNTkzMCw3IEBACiAJCQkJMEYyMzVCRDYxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRo
dW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzY5NTFBRTlDQzMzMDAwRDRE
RkIgLyogREZHQ2xlYW5VcFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJEQjE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTNDRTA4
NjE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdGMjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJzICovLApA
QCAtNjA1Myw3ICs2MDQxLDYgQEAKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRl
bnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGQkZERDA1MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5
QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTYxNDIsNyArNjEyOSw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3
QjM2NjIxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUExMjc0MTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2Vz
R0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTEwLDYgKzcwOTYsNyBAQAogCQkJCTBGMkJEQzE1
MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFu
VXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDgg
LyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkxQTlFQ0I3
RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTcxNTIsNyArNzEzOSw2IEBACiAJCQkJQTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8q
IERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4
IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY2NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJG
Q0NGQjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2RUM5REQyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjcsNyArNzM1Myw2IEBACiAJCQkJ
QTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIgLyogSlNM
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBD
b25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGN0IzNjYxMTk3
QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNN
YXBJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1NDAsNyArNzUyNSw2IEBACiAJCQkJ
QzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEZCRkREMDQxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50
b21SZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQwQ0FEMzAw
ODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0OURDMTZC
MTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGph
Y2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
ZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYs
NiArMTU2LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFkamFjZW5jeUxpc3QoRml4ZWQs
IGNoaWxkMSgpLnNhbml0aXplZCgpLCBjaGlsZDIoKS5zYW5pdGl6ZWQoKSwgY2hpbGQzKCkuc2Fu
aXRpemVkKCkpOwogICAgIH0KICAgICAKKyAgICBBZGphY2VuY3lMaXN0IGp1c3RDaGVja3MoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQWRqYWNlbmN5TGlzdCByZXN1bHQoRml4ZWQpOworICAgICAg
ICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7CisgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4
ID0gMDsKKyAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgQWRqYWNlbmN5TGlzdDo6U2l6ZSkg
eworICAgICAgICAgICAgRWRnZSBlZGdlID0gY2hpbGQoc291cmNlSW5kZXgrKyk7CisgICAgICAg
ICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmNo
aWxkKHRhcmdldEluZGV4KyspID0gZWRnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAg
ICAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CkBAIC0zNTMsNyArMzUyLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbURp
cmVjdEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRO
b2RlKG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIEVkZ2Uo
bm9kZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CkBAIC0zNjEsNyAr
MzU5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOiB7
CkBAIC00ODUsNyArNDgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0U3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJbmZv
KGRhdGEpLCBFZGdlKHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCkBAIC01MzYsNyArNTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2Fu
ZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50
b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlz
aW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBCYXNpY0Jsb2NrOjpyZXBs
YWNlVGVybWluYWwoTm9kZSogbgogICAgICAgICBhcHBlbmQobm9kZSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIG1fbm9kZXMuaW5zZXJ0KHJlc3VsdC5pbmRleCArIDEsIG5vZGUpOwotICAgICAgICBy
ZXN1bHQubm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZXN1bHQubm9kZS0+cmVt
b3ZlKCk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh0ZXJtaW5hbCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxODM0MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsOCBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNC
bG9jCiAgICAgICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsKLSAgICAg
ICAgICAgIC8vIFRoZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlr
ZS4gVGhlcmUgd2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhl
IHRlcm1pbmFsLgorICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhh
bnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3
byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwg
bm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCisgICAgICAgICAgICBjYXNlIENoZWNrOiAv
LyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAg
ICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw4ICsyNzIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
Tm9kZVR5cGUgbm9kZVR5cGU7CiAgICAgICAgIGlmIChsaXZlbmVzc05vZGUtPmZsYWdzKCkgJiBO
b2RlSXNGbHVzaGVkKQogICAgICAgICAgICAgbm9kZVR5cGUgPSBGbHVzaDsKLSAgICAgICAgZWxz
ZQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBpdCBzaG91
bGRuJ3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgY291bGQganVzdCByZW1hdGVyaWFsaXplCisg
ICAgICAgICAgICAvLyBQaGFudG9tTG9jYWxzIG9yIHNvbWV0aGluZyBzaW1pbGFyIHVzaW5nIGJ5
dGVjb2RlIGxpdmVuZXNzLiBIb3dldmVyLCBpbiBUaHJlYWRlZENQUywgaXQncworICAgICAgICAg
ICAgLy8gd29ydGggdGhlIHNhbml0eSB0byBtYWludGFpbiB0aGlzIGVhZ2VybHkuIFNlZQorICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDA4
NgogICAgICAgICAgICAgbm9kZVR5cGUgPSBQaGFudG9tTG9jYWw7CisgICAgICAgIH0KICAgICAg
ICAgYmxvY2stPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgbm9k
ZVR5cGUsIG5vZGVPcmlnaW4sIAogICAgICAgICAgICAgT3BJbmZvKGxpdmVuZXNzTm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCkpKTsKQEAgLTMxNywxMSArMzIyLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vIGtlcHQgYWxpdmUuCiAgICAgICAgIAogICAgICAgICAvLyBSZW1vdmUgdGhlIHRlcm1p
bmFsIG9mIGZpcnN0QmxvY2sgc2luY2Ugd2UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLiBXZWxsLCB3
ZSBkb24ndAotICAgICAgICAvLyByZWFsbHkgcmVtb3ZlIGl0OyB3ZSBhY3R1YWxseSB0dXJuIGl0
IGludG8gYSBQaGFudG9tLgorICAgICAgICAvLyByZWFsbHkgcmVtb3ZlIGl0OyB3ZSBhY3R1YWxs
eSB0dXJuIGl0IGludG8gYSBjaGVjay4KICAgICAgICAgTm9kZSogdGVybWluYWwgPSBmaXJzdEJs
b2NrLT50ZXJtaW5hbCgpOwogICAgICAgICBBU1NFUlQodGVybWluYWwtPmlzVGVybWluYWwoKSk7
CiAgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luID0gdGVybWluYWwtPm9yaWdp
bjsKLSAgICAgICAgdGVybWluYWwtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgdGVybWlu
YWwtPnJlbW92ZSgpOwogICAgICAgICBBU1NFUlQodGVybWluYWwtPnJlZkNvdW50KCkgPT0gMSk7
CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqZXR0aXNvbmVkQmxvY2tzLnNp
emUoKTsgaS0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIENQU1JldGhyZWFkaW5nUGhhc2UgOiBwdWJsaWMg
UGhhc2UKIHB1YmxpYzoKICAgICBDUFNSZXRocmVhZGluZ1BoYXNlKEdyYXBoJiBncmFwaCkKICAg
ICAgICAgOiBQaGFzZShncmFwaCwgIkNQUyByZXRocmVhZGluZyIpCi0gICAgICAgICwgbV9hdmFp
bGFibGVGb3JPU1IoT3BlcmFuZHNMaWtlLCBncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFk
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMjYsMTQgKzEyNSwxMCBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQoCiAgICAgICAgICAgICBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZUZv
cjxvcGVyYW5kS2luZD4oKQogICAgICAgICAgICAgPT0gbV9ibG9jay0+dmFyaWFibGVzQXRUYWls
LnNpemVGb3I8b3BlcmFuZEtpbmQ+KCkpOwotICAgICAgICBBU1NFUlQoCi0gICAgICAgICAgICBt
X2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKQotICAgICAgICAg
ICAgPT0gbV9hdmFpbGFibGVGb3JPU1Iuc2l6ZUZvcjxvcGVyYW5kS2luZD4oKSk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQuc2l6
ZUZvcjxvcGVyYW5kS2luZD4oKTsgaS0tOykgewogICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFi
bGVzQXRIZWFkLmF0Rm9yPG9wZXJhbmRLaW5kPihpKSA9IG51bGxwdHI7CiAgICAgICAgICAgICBt
X2Jsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXRGb3I8b3BlcmFuZEtpbmQ+KGkpID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NSLmF0Rm9yPG9wZXJhbmRLaW5kPihpKSA9IEVk
Z2UoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTI0Nyw4ICsyNDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIC8vIHJlZHVuZGFudCBhbmQgaW5lZmZpY2llbnQsIHNpbmNlIHJl
YWxseSBpdCBqdXN0IG1lYW5zIHRoYXQgd2Ugd2FudCB0bwogICAgICAgICAgICAgICAgIC8vIGtl
ZXAgdGhlIGxhc3QgTW92SGludGVkIHZhbHVlIG9mIHRoYXQgbG9jYWwgYWxpdmUuCiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKG1fYXZh
aWxhYmxlRm9yT1NSLmF0Rm9yPG9wZXJhbmRLaW5kPihpZHgpKTsKLSAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBA
IC0zNTksMTQgKzM1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2Fub25pY2FsaXpl
U2V0KG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NS
Lm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBab21i
aWVIaW50OgotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NSLm9wZXJhbmQobm9kZS0+
dW5saW5rZWRMb2NhbCgpKSA9IEVkZ2UoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC01MTcsNyArNTAzLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
UGhpU3RhY2tFbnRyeSwgMTI4PiBtX2FyZ3VtZW50UGhpU3RhY2s7CiAgICAgVmVjdG9yPFBoaVN0
YWNrRW50cnksIDEyOD4gbV9sb2NhbFBoaVN0YWNrOwogICAgIFZlY3RvcjxOb2RlKiwgMTI4PiBt
X2ZsdXNoZWRMb2NhbE9wV29ya2xpc3Q7Ci0gICAgT3BlcmFuZHM8RWRnZT4gbV9hdmFpbGFibGVG
b3JPU1I7CiB9OwogCiBib29sIHBlcmZvcm1DUFNSZXRocmVhZGluZyhHcmFwaCYgZ3JhcGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNCw4ICsyMzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBJZGVudGl0eSkgewotICAgICAgICAgICAg
ICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0NoZWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
bm9kZS0+c2V0UmVwbGFjZW1lbnQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHJ1bGUgb25seSBtYWtlcyBzZW5z
ZSBmb3IgbG9jYWwgQ1NFLCBzaW5jZSBpbiBTU0EgZm9ybSB3ZSBoYXZlIGFscmVhZHkKQEAgLTQz
Nyw4ICs0MzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vi
c3RpdHV0aW9uKG1fbm9kZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBJZGVudGl0eSkgewotICAgICAgICAgICAgICAgICAgICBtX25vZGUt
PmNvbnZlcnRUb0NoZWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+c2V0UmVwbGFj
ZW1lbnQobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPnJlcGxhY2VXaXRoKG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgY2xvYmJlcml6ZShtX2dyYXBoLCBtX25vZGUsICp0aGlzKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE4MzIwNSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcDoxODMyMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFu
VXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdfSklU
KQorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIK
KyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitj
bGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGljIFBoYXNlIHsKK3B1YmxpYzoKKyAgICBQ
aGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwg
InBoYW50b20gcmVtb3ZhbCIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIHJ1bigpCisg
ICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJs
b2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQWxsIFBoaXMgbmVlZCB0byBhbHJl
YWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCisgICAgICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
bG9jay0+cGhpcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJsb2Nr
LT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9j
YWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBvbmx5IG5lY2Vzc2FyeSB1bnRpbCB3
ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzA3LgorICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9PU1Io
KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFibG9j
aykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
dW5zaWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5k
ZXggPSAwOworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkg
eworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7
CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxhc3ROb2RlID0gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZUluZGV4ID4gMSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXggLSAyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3IgUGhhbnRvbS4gbGFzdE5vZGUgY291bGQg
YmUgYW55IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVj
dCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBoYW50b20KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZv
ckV4aXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNr
LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZh
bnRUb09TUikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IEFkamFjZW5j
eUxpc3Q6OlNpemU7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5ub2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0t
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBDaGVjazogewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlz
dDo6U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2Rl
LT5jaGlsZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92
ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0gbm9kZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFyZ2V0SW5kZXgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9Cit9OworICAgIAorYm9vbCBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBoKQoreworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgUGhhbnRvbSBSZW1vdmFsIFBoYXNlIik7CisgICAgcmV0dXJuIHJ1blBo
YXNlPFBoYW50b21SZW1vdmFsUGhhc2U+KGdyYXBoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgi
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMzcsMTAgKzM3LDEwIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgUGhhbnRvbVJlbW92YWxQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CitjbGFzcyBDbGVhblVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGlj
OgotICAgIFBoYW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNl
KGdyYXBoLCAicGhhbnRvbSByZW1vdmFsIikKKyAgICBDbGVhblVwUGhhc2UoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAiY2xlYW4gdXAiKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC00OCwxMTggKzQ4LDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGJvb2wgY2hhbmdl
ZCA9IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBp
ZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50
IHRvIE9TUi4KLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPnBoaXNbaV0tPmZsYWdzKCkgJiBOb2Rl
UmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9j
YWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDogLy8gRklYTUU6IFRoZSBHZXRMb2Nh
bCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdlIGRvIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgICAgICAKLSAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4
LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dy
YXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJj
ZUluZGV4ID0gMDsKICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKICAgICAg
ICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAg
ICAgIGJvb2wga2lsbCA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IENoZWNrKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZHJlbiA9IG5vZGUtPmNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRy
OwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGRv
ZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3VsZCBiZSBh
bnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJqZWN0IHRv
IERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4uZm9yRXhp
dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2suCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRv
T1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5TGlz
dDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAgICAg
Y2FzZSBDaGVjazoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGtpbGwgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNr
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgY2FzZSBNdXN0R2VuZXJhdGU6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fs
bG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0gbm9k
ZTsKKyAgICAgICAgICAgICAgICBpZiAoa2lsbCkKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0gbm9kZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFyZ2V0SW5kZXgpOwogICAgICAgICB9CkBA
IC0xNjgsMTAgKzgwLDEwIEBAIHB1YmxpYzoKICAgICB9CiB9OwogICAgIAotYm9vbCBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBoKQorYm9vbCBwZXJmb3JtQ2xlYW5VcChHcmFwaCYg
Z3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9t
IFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbVJlbW92YWxQaGFz
ZT4oZ3JhcGgpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ2xlYW4g
VXAgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8Q2xlYW5VcFBoYXNlPihncmFwaCk7CiB9
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkocmV2aXNpb24gMTgzMjA1KQkoZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuaDoxODMyMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKKyNkZWZpbmUgREZHUGhh
bnRvbVJlbW92YWxQaGFzZV9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworLy8gQ2xlYW5zIHVwIHVubmVj
ZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJlZHVjZXMgbGl2ZSBy
YW5nZXMsIGJ1dCBhbHNvLCBpdAorLy8gZWxpbWluYXRlcyBtYW55IFBoYW50b21zIGVudGlyZWx5
LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lzLgorLy8KKy8vIFRoaXMgc2hvdWxk
IHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3JtIGl0J3MgYmV0dGVy
IHRvIHJ1bgorLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5jZSBpdCdzIG1vcmUg
cG93ZXJmdWwuCisKK2Jvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJik7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5k
aWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIz
LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgREZHUGhhbnRvbVJlbW92YWxQ
aGFzZV9oCi0jZGVmaW5lIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorI2lmbmRlZiBERkdDbGVh
blVwUGhhc2VfaAorI2RlZmluZSBERkdDbGVhblVwUGhhc2VfaAogCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKQEAgLTMyLDE2ICszMiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIGNsYXNzIEdyYXBoOwogCi0vLyBDbGVhbnMgdXAgdW5uZWNlc3NhcnkgUGhhbnRvbXMgYW5k
IFBoYW50b24gY2hpbGRyZW4uIFRoaXMgcmVkdWNlcyBsaXZlIHJhbmdlcywgYnV0IGFsc28sIGl0
Ci0vLyBlbGltaW5hdGVzIG1hbnkgUGhhbnRvbXMgZW50aXJlbHkuIFRoaXMgaW52YWxpZGF0ZXMg
bGl2ZW5lc3MgYW5hbHlzaXMuCi0vLwotLy8gVGhpcyBzaG91bGQgd29yayBvdmVyIGFsbCBJUiBm
b3JtczsgaG93ZXZlciwgaW4gU1NBIGZvcm0gaXQncyBiZXR0ZXIgdG8gcnVuCi0vLyBQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlIHNpbmNlIGl0J3MgbW9yZSBwb3dlcmZ1bC4KKy8vIENsZWFu
cyB1cCB1bm5lZWRlZCBub2RlcywgbGlrZSBlbXB0eSBDaGVja3MgYW5kIFBoYW50b21zLgogCi1i
b29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYpOworYm9vbCBwZXJmb3JtQ2xlYW5VcChH
cmFwaCYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKIAotI2VuZGlmIC8vIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorI2VuZGlmIC8v
IERGR0NsZWFuVXBQaGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAgICAgICAgICBpZiAodmFs
dWUubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBDYXRjaCB0aGUgZmFjdCB0aGF0
IHdlIG1heSBmaWx0ZXIgb24gY2VsbC4KLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTEzMyw4ICsxMzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAg
ICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGRy
ZW4pOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5C
bG9jaywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvQ29uc3RhbnRTdG9yYWdlUG9pbnRlcih2aWV3LT52ZWN0b3IoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNDcsNyArMTQ2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNE
eW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTY3LDcgKzE2Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGFsbEdvb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0
ZShpbmRleEluQmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
UGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzksNyArMTc4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnk6IHsKICAgICAgICAgICAgICAgICBp
ZiAoIW5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xODgsNyArMTg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3N0cnVjdHVyZS5vbmx5U3RydWN0dXJlKCkgIT0gbm9kZS0+dHJhbnNpdGlvbigpLT5u
ZXh0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9k
ZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyArMTk1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSAhPSBub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3Zl
KCk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yMDQsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGNhc2UgQ2hlY2tOb3RFbXB0eTogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNFbXB0eSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgp
OworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MjE0LDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByaWdodCA9
IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKICAgICAgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMyKCkK
ICAgICAgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlZnQuYXNJbnQz
MigpKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihyaWdodC5hc0ludDMyKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC01MTIs
MTQgKzUxMSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCEqdmFsdWUpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGVPcmlnaW4g
b3JpZ2luID0gbm9kZS0+b3JpZ2luOwotICAgICAgICAgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJl
biA9IG5vZGUtPmNoaWxkcmVuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIHZhbHVlKTsKLSAgICAgICAgICAgIGlmICghY2hpbGRyZW4u
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkgewor
ICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gcHJlc2VydmUgYnl0ZWNvZGUgbGl2ZW5lc3MgaW4g
VGhyZWFkZWRDUFMgZm9ybS4gVGhpcyB3b3VsZG4ndCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAg
ICAgICAvLyBpZiBpdCB3YXNuJ3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQwODYuCiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwg
b3JpZ2luLCBjaGlsZHJlbik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b21Mb2NhbCwgbm9kZS0+b3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKKyAgICAg
ICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5vZGUt
Pm9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9D
b25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOwogICAgICAgICB9CkBAIC02NDAsMTAgKzY0MSw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChiYXNlVmFsdWUu
bV90eXBlICYgflNwZWNDZWxsKSB7Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5v
ZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChiYXNl
VmFsdWUubV90eXBlICYgflNwZWNDZWxsKQorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBhZGRDaGVja3MoCkBAIC02ODMsNyArNjgyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKICAgICAgICAgICAgIGNhc2UgRG91Ymxl
Q29uc3RhbnQ6CiAgICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92
ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBVcHNpbG9uIHBoaSgpIHBv
aW50ZXIiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3Bw
CShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjcgKzUwLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIG1fZ3JhcGguY29tcHV0ZVJlZkNvdW50cygpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewotICAgICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQotICAgICAgICAgICAgICAg
IGZpeHVwQmxvY2soYmxvY2spOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGlz
IGxpa2UgY2xlYW5WYXJpYWJsZXMsIGJ1dCBoYXMgYSBtdWNoIHNpbXBsZXIgYXBwcm9hY2ggdG8g
R2V0TG9jYWwuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1l
bnRzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhh
bnRvbSAmJiBub2RlLT5vcCgpICE9IENoZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0gPSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCi0gICAg
ICAgICAgICAgICAgZml4dXBCbG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKLSAgICAg
ICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOwotICAgICAgICB9Cisg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIo
KSkKKyAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKKyAgICAgICAgY2xl
YW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisKICAgICAgICAgLy8gSnVzdCBkbyBh
IGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpAQCAt
MTA0LDIyICs4OCwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKCFibG9jaykKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zv
cm0pIHsKLSAgICAgICAgY2FzZSBTU0E6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAotICAgICAgICBjYXNlIFRocmVhZGVkQ1BTOiB7Ci0gICAgICAgICAgICAvLyBDbGVhbiB1cCB2
YXJpYWJsZSBsaW5rcyBmb3IgdGhlIGJsb2NrLiBXZSBuZWVkIHRvIGRvIHRoaXMgYmVmb3JlIHRo
ZSBhY3R1YWwgRENFCi0gICAgICAgICAgICAvLyBiZWNhdXNlIHdlIG5lZWQgdG8gc2VlIEdldExv
Y2Fscywgc28gd2UgY2FuIGJ5cGFzcyB0aGVtIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlCi0gICAg
ICAgICAgICAvLyB2YXJzLWF0LXRhaWwgcG9pbnQgdG8gYSBHZXRMb2NhbCwgdGhlIEdldExvY2Fs
IGlzIGRlYWQsIGJ1dCB0aGUgUGhpIGl0IHBvaW50cwotICAgICAgICAgICAgLy8gdG8gaXMgYWxp
dmUuCi0gICAgICAgICAgICAKKworICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFk
ZWRDUFMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcGhpSW5kZXggPSAwOyBwaGlJbmRl
eCA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytwaGlJbmRleCkgewotICAgICAgICAgICAgICAgIGlm
ICghYmxvY2stPnBoaXNbcGhpSW5kZXhdLT5zaG91bGRHZW5lcmF0ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBhY3R1YWxseSBmcmVlIG5vZGVzIGhlcmUuIEV4
Y2VwdCB0aGF0IGl0IHByb2JhYmx5Ci0gICAgICAgICAgICAgICAgICAgIC8vIGRvZXNuJ3QgbWF0
dGVyLCBzaW5jZSB3ZSBkb24ndCBhZGQgYW55IG5vZGVzIGFmdGVyIHRoaXMgcGhhc2UuCi0gICAg
ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjYyMzkKKyAgICAgICAgICAgICAgICBOb2RlKiBwaGkgPSBibG9jay0+cGhpc1twaGlJbmRl
eF07CisgICAgICAgICAgICAgICAgaWYgKCFwaGktPnNob3VsZEdlbmVyYXRlKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKHBoaSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrLT5waGlzW3BoaUluZGV4LS1dID0gYmxvY2stPnBoaXMubGFzdCgpOwog
ICAgICAgICAgICAgICAgICAgICBibG9jay0+cGhpcy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTI3LDEyICsxMDEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhibG9jay0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAg
ICAgIGNsZWFuVmFyaWFibGVzKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgaGFzIHRvIGJlIGEgZm9yd2FyZCBsb29wIGJl
Y2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBpbnNlcnRpb24gc2V0LgpAQCAtMTQxLDQwICsxMDksMjQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgICAg
ICBjYXNlIFpvbWJpZUhpbnQ6Ci0gICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIG5vdCBraWxs
YWJsZS4gKFRoZXkgb25jZSB3ZXJlLikKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDogewot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsgY2hpbGRJZHggPCBub2RlLT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1DaGlsZHJlbigp
OyBjaGlsZElkeCsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWVkZ2UgfHwgZWRnZS5pc1Byb3ZlZCgpIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIENoZWNrLCBub2RlLT5vcmlnaW4sIGVkZ2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNldCgpOwotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRSZWZDb3VudCgxKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKLSAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6
ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVu
LmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICBp
ZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2Rl
LT5maXJzdENoaWxkKCkgKyBub2RlLT5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKSB7CisgICAg
ICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltjaGls
ZElkeF07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoIWVk
Z2UgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UuaXNQcm92ZWQoKSB8fCBlZGdl
LndpbGxOb3RIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
cmVuLnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
Q2hlY2ssIG5vZGUtPm9yaWdpbiwgZWRnZSk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNr
KTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNldCgpOwogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlZkNvdW50KDEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfSB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOworICAgICAgICAgICAgbm9kZS0+
c2V0UmVmQ291bnQoMSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKGJsb2NrKTsKQEAgLTE4NywxOSArMTM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSB2YXJpYWJsZXNbaV07CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBQaGFudG9t
ICYmIG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKKyAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpICE9IENoZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBHZXRMb2NhbCkgewotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2Rl
KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkg
PT0gUGhpIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRHZW5lcmF0ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlc1tpXSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhcmlh
Ymxlc1tpXSA9IDA7CisgICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSBudWxscHRyOwogICAgICAg
ICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsOCBAQCBw
cml2YXRlOgogICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleElu
QmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxv
Y2spIHsKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBibG9jay0+YXQobV9pbmRleEluQmxv
Y2spOwotICAgICAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAg
Zml4dXBOb2RlKG1fY3VycmVudE5vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGFkZFBoYW50b21z
SWZOZWNlc3NhcnkoKTsKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAg
ICAgfQogICAgIApAQCAtMTQyLDE0ICsxNDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBW
YWx1ZUFkZDogewogICAgICAgICAgICAgaWYgKGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKG5vZGUp
KSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyT3JCb29sZWFuRXhwZWN0aW5nRGVmaW5lZChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJv
b2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJv
b2xlYW5FZGdlKG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChB
cml0aEFkZCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yNjgsMTIgKzI2NCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gQnV0IHdl
IGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBwaGFudG9tJ2QgdW50aWwgYWZ0
ZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gRG91YmxlQXNJbnQzMiBub2RlLCB3aGljaCBvY2N1
cnMgYWZ0ZXIgdGhlIERpdi9Nb2Qgbm9kZSB0aGF0IHRoZSBjb252ZXJzaW9ucwotICAgICAgICAg
ICAgICAgIC8vIHdpbGwgYmUgaW5zZXJlZCBvbi4KLSAgICAgICAgICAgICAgICBhZGRSZXF1aXJl
ZFBoYW50b20obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgICAgICBhZGRSZXF1
aXJlZFBoYW50b20obm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKLQogICAgICAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hpbGRyZW4gYmVjYXVzZSB3ZSdy
ZSBzdGVhbGluZyB0aGVtIGZyb20KICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZGl2
aXNpb24uCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3RGl2aXNpb24gPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKApAQCAtODQ1LDcgKzgzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hl
Y2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEo
KS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5v
ZGU8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5jb252ZXJ0VG9Db25zdGFudCgKQEAgLTk5Niw3ICs5ODYsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFBoYW50b206CiAgICAg
ICAgIGNhc2UgQ2hlY2s6IHsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEwMTAsNiArOTk5LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgUGhhbnRvbToKKyAgICAgICAgICAgIC8vIFBoYW50b21zIGFyZSBtZWFuaW5nbGVzcyBwYXN0
IEZpeHVwLiBXZSByZWNyZWF0ZSB0aGVtIG9uLWRlbWFuZCBpbiB0aGUgYmFja2VuZC4KKyAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZSgpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBGaWF0SW50NTI6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUludDUyKCkp
OwogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTEwNzMsNyArMTA2
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CiAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIFN0cmluZ1VzZSkp
OwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29s
ZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdV
c2U+KG5vZGUpOwpAQCAtMTA4Myw3ICsxMDc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJ
c09iamVjdDoKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
T2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5v
ZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBDaGVjaywgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgT2JqZWN0VXNlKSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252
ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlPE9iamVjdFVzZT4obm9kZSk7CkBAIC0xMTU2LDI4ICsxMTUwLDI4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBSZWZQdHI8VHlwZVNldD4gdHlwZVNldCA9IG5vZGUt
PnR5cGVMb2NhdGlvbigpLT5tX2luc3RydWN0aW9uVHlwZVNldDsKICAgICAgICAgICAgIFJ1bnRp
bWVUeXBlTWFzayBzZWVuVHlwZXMgPSB0eXBlU2V0LT5zZWVuVHlwZXMoKTsKICAgICAgICAgICAg
IGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlTWFjaGluZUludCkpIHsKLSAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVOdW1iZXIgfCBUeXBlTWFjaGlu
ZUludCkpIHsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVTZXQtPmRv
ZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAg
fSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbikpIHsKLSAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZv
cm1UbyhUeXBlVW5kZWZpbmVkIHwgVHlwZU51bGwpICYmIChzZWVuVHlwZXMgJiBUeXBlVW5kZWZp
bmVkKSAmJiAoc2VlblR5cGVzICYgVHlwZU51bGwpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE90aGVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVPYmplY3QpKSB7CiAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldCA9IHR5cGVTZXQtPnN0cnVjdHVyZVNldCgp
OwogICAgICAgICAgICAgICAgIGlmICghc2V0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9DaGVja1N0cnVjdHVyZShtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrU3RydWN0dXJl
KG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIApAQCAtMTI5NCw3ICsxMjg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8v
IGRlY2lzaW9uIHByb2Nlc3MgbXVjaCBlYXNpZXIuCiAgICAgICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZTxTdHJpbmdVc2U+KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgIEVkZ2UoZWRn
ZS5ub2RlKCksIFN0cmluZ1VzZSkpOwogICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEtub3du
U3RyaW5nVXNlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOTYsOSArMTM5MCw2IEBAIHBy
aXZhdGU6CiAgICAgdGVtcGxhdGU8VXNlS2luZCBsZWZ0VXNlS2luZD4KICAgICBib29sIGF0dGVt
cHRUb01ha2VGYXN0U3RyaW5nQWRkKE5vZGUqIG5vZGUsIEVkZ2UmIGxlZnQsIEVkZ2UmIHJpZ2h0
KQogICAgIHsKLSAgICAgICAgTm9kZSogb3JpZ2luYWxMZWZ0ID0gbGVmdC5ub2RlKCk7Ci0gICAg
ICAgIE5vZGUqIG9yaWdpbmFsUmlnaHQgPSByaWdodC5ub2RlKCk7Ci0gICAgICAgIAogICAgICAg
ICBBU1NFUlQobGVmdFVzZUtpbmQgPT0gU3RyaW5nVXNlIHx8IGxlZnRVc2VLaW5kID09IFN0cmlu
Z09iamVjdFVzZSB8fCBsZWZ0VXNlS2luZCA9PSBTdHJpbmdPclN0cmluZ09iamVjdFVzZSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoaXNTdHJpbmdPYmplY3RVc2U8bGVmdFVzZUtpbmQ+KCkgJiYg
IWNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCkBA
IC0xNDMzLDEyICsxNDI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJpZ2h0LnNldE5vZGUo
dG9TdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSdyZSBkb2luZyBj
aGVja3MgdXAgdGhlcmUsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCi0gICAgICAg
IC8vICpvcmlnaW5hbCogaW5wdXRzIHRvIHRoZSBhZGRpdGlvbiBhcmUgbGl2ZSB1cCB0byBoZXJl
LgotICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBF
ZGdlKG9yaWdpbmFsTGVmdCksIEVkZ2Uob3JpZ2luYWxSaWdodCkpOwotICAgICAgICAKICAgICAg
ICAgY29udmVydFRvTWFrZVJvcGUobm9kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTE1NjIsNyArMTU0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoYXJy
YXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9u
ZSwgUGhhbnRvbSwgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKKyAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIEVkZ2UoYXJyYXks
IFN0cmluZ1VzZSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBhcnJheU1vZGUub3JpZ2luYWxBcnJheVN0cnVjdHVyZShtX2dyYXBoLCBvcmln
aW4uc2VtYW50aWMpOwogICAgICAgICAKQEAgLTE3NzMsNyArMTc1OCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlKG5vZGUsIHVzZUtpbmQpOwogICAgICAgICAKICAg
ICAgICAgZWRnZSA9IEVkZ2UobmV3Tm9kZSwgS25vd25JbnQzMlVzZSk7Ci0gICAgICAgIGFkZFJl
cXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBmaXhJbnRPckJvb2xl
YW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0xNzk1LDcgKzE3NzksNiBAQCBwcml2YXRlOgogICAgICAg
ICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAg
IGVkZ2UgPSBFZGdlKG5ld05vZGUsIEludDMyVXNlKTsKLSAgICAgICAgYWRkUmVxdWlyZWRQaGFu
dG9tKG5vZGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uo
RWRnZSYgZWRnZSkKQEAgLTE4MTcsNyArMTgwMCw2IEBAIHByaXZhdGU6CiAgICAgICAgIG9ic2Vy
dmVVc2VLaW5kT25Ob2RlKG5vZGUsIHVzZUtpbmQpOwogICAgICAgICAKICAgICAgICAgZWRnZSA9
IEVkZ2UobmV3Tm9kZSwgRG91YmxlUmVwVXNlKTsKLSAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9t
KG5vZGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRydW5jYXRlQ29uc3RhbnRUb0ludDMyKEVk
Z2UmIGVkZ2UpCkBAIC0xOTk3LDExICsxOTc5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ibG9j
ayA9IGJsb2NrOwogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxv
Y2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1
cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGFkZFBo
YW50b21zSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIHRyeVRvUmVsYXhSZXByZXNlbnRhdGlv
bihtX2N1cnJlbnROb2RlKTsKICAgICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1f
Z3JhcGgsIG1fY3VycmVudE5vZGUsIGluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOwogICAg
ICAgICB9Ci0gICAgICAgIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKTsKICAgICAgICAgbV9pbnNl
cnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogICAgIApAQCAtMjAxNSw3ICsxOTk1LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAg
ICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2FzZSBD
aGVjazoKICAgICAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fY3Vy
cmVudE5vZGUsIGZpeEVkZ2VSZXByZXNlbnRhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTIwNzYsOCArMjA1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91
YmxlUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0KICAgICAgICAgICAgIGlm
IChlZGdlLT5pc051bWJlckNvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgbm9kZS0+b3JpZ2luLApA
QCAtMjEwMCw4ICsyMDc3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJ
bnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotCiAgICAgICAgICAgICBp
ZiAoZWRnZS0+aXNNYWNoaW5lSW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+b3JpZ2luLApA
QCAtMjEyOCw4ICsyMTAzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghZWRnZS0+aGFz
RG91YmxlUmVzdWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShl
ZGdlLm5vZGUoKSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3Vi
bGVSZXN1bHQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjQnl0ZWNv
ZGVEb3VibGUsIFZhbHVlUmVwLCBub2RlLT5vcmlnaW4sCkBAIC0yMTQ1LDMyICsyMTE4LDExIEBA
IHByaXZhdGU6CiAgICAgICAgIH0gfQogICAgIH0KICAgICAKLSAgICB2b2lkIGFkZFJlcXVpcmVk
UGhhbnRvbShOb2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFw
cGVuZChub2RlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZFBoYW50b21zSWZOZWNlc3NhcnkoKQot
ICAgIHsKLSAgICAgICAgaWYgKG1fcmVxdWlyZWRQaGFudG9tcy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVp
cmVkUGhhbnRvbXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9y
ZXF1aXJlZFBoYW50b21zW2ldOwotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG1f
Y3VycmVudE5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICBub2RlLT5kZWZhdWx0RWRnZSgp
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLnJlc2l6
ZSgwKTsKLSAgICB9Ci0gICAgCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25l
ZCBtX2luZGV4SW5CbG9jazsKICAgICBOb2RlKiBtX2N1cnJlbnROb2RlOwogICAgIEluc2VydGlv
blNldCBtX2luc2VydGlvblNldDsKICAgICBib29sIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQ7Ci0g
ICAgVmVjdG9yPE5vZGUqLCAzPiBtX3JlcXVpcmVkUGhhbnRvbXM7CiB9OwogICAgIAogYm9vbCBw
ZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsMjYgKzU5Myw2IEBAIHZvaWQg
R3JhcGg6OnJlc2V0UmVhY2hhYmlsaXR5KCkKICAgICBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsK
IH0KIAotdm9pZCBHcmFwaDo6bWVyZ2VSZWxldmFudFRvT1NSKCkKLXsKLSAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewotICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewot
ICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
LT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0SGludDoKLSAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZDIoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotfQotCiBuYW1lc3BhY2UgewogCiBjbGFzcyBSZWZDb3VudENhbGN1bGF0b3IgewpAQCAtNjI1
LDEyICs2MDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxjdWxhdGUoKQogICAgIHsKICAgICAg
ICAgLy8gRmlyc3QgcmVzZXQgdGhlIGNvdW50cyB0byAwIGZvciBhbGwgbm9kZXMuCi0gICAgICAg
IC8vCi0gICAgICAgIC8vIEFsc28gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIHByZXRlbmQgdGhh
dCBDaGVjayBub2RlcyBhcmUgbm90IE5vZGVNdXN0R2VuZXJhdGUuIENoZWNrCi0gICAgICAgIC8v
IG5vZGVzIGFyZSBNdXN0R2VuZXJhdGUgYmVjYXVzZSB0aGV5IGFyZSBleGVjdXRlZCBmb3IgZWZm
ZWN0LCBidXQgdGhleSBmb2xsb3cgdGhlIHNhbWUKLSAgICAgICAgLy8gRENFIHJ1bGVzIGFzIG5v
ZGVzIHRoYXQgYXJlbid0IE11c3RHZW5lcmF0ZTogdGhleSBvbmx5IGNvbnRyaWJ1dGUgdG8gdGhl
IHJlZiBjb3VudCBvZgotICAgICAgICAvLyB0aGVpciBjaGlsZHJlbiBpZiB0aGUgZWRnZXMgcmVx
dWlyZSBjaGVja3MuIE5vbi1jaGVja2luZyBlZGdlcyBhcmUgcmVtb3ZlZC4gTm90ZSB0aGF0Ci0g
ICAgICAgIC8vIGZvciBhbnkgQ2hlY2tzIGxlZnQgb3ZlciwgdGhpcyBwaGFzZSB3aWxsIHR1cm4g
dGhlbSBiYWNrIGludG8gTm9kZU11c3RHZW5lcmF0ZS4KICAgICAgICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9j
a0luZGV4KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtNjU0LDExICs2MjgsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFw
aCwgbm9kZSwgZmluZFR5cGVDaGVja1Jvb3QpOwogICAgICAgICAgICAgICAgIGlmICghKG5vZGUt
PmZsYWdzKCkgJiBOb2RlTXVzdEdlbmVyYXRlKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2spIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgdHJlYXQgQ2hlY2sgbm9kZXMgYXMgTXVzdEdlbmVyYXRl
LiBXZSB3aWxsIGdsYWRseQotICAgICAgICAgICAgICAgICAgICAvLyBraWxsIHRoZW0gb2ZmIGlu
IHRoaXMgcGhhc2UuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPnBvc3RmaXhSZWYoKSkKICAgICAgICAg
ICAgICAgICAgICAgbV93b3JrbGlzdC5hcHBlbmQobm9kZSk7CiAgICAgICAgICAgICB9CkBAIC0x
MjYzLDEyICsxMjMyLDYgQEAgdm9pZCBHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQoTm9kZSogbm9k
ZQogewogICAgIGlmICh2YWx1ZS0+c3RydWN0dXJlKCkpCiAgICAgICAgIGFzc2VydElzUmVnaXN0
ZXJlZCh2YWx1ZS0+c3RydWN0dXJlKCkpOwotICAgIGlmIChtX2Zvcm0gPT0gVGhyZWFkZWRDUFMp
IHsKLSAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpCi0gICAgICAgICAgICBkZXRo
cmVhZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmhhc1Zhcmlh
YmxlQWNjZXNzRGF0YSgqdGhpcykpOwotICAgIH0KICAgICBub2RlLT5jb252ZXJ0VG9Db25zdGFu
dCh2YWx1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJl
dmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
d29ya2luZyBjb3B5KQpAQCAtNDUyLDggKzQ1Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVy
bWluZVJlYWNoYWJpbGl0eSgpOwogICAgIHZvaWQgcmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAK
LSAgICB2b2lkIG1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgIAogICAgIHZvaWQgY29tcHV0ZVJl
ZkNvdW50cygpOwogICAgIAogICAgIHVuc2lnbmVkIHZhckFyZ051bUNoaWxkcmVuKE5vZGUqIG5v
ZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gaW5zZXJ0Q29uc3RhbnRGb3JVc2UoaW5kZXgsIG9yaWdpbiwganNVbmRlZmlu
ZWQoKSwgdXNlS2luZCk7CiAgICAgfQogICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVf
dCBpbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4pCisgICAg
eworICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAgICAgaWYg
KGNoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gaW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIGNoaWxk
cmVuKTsKKyAgICB9CisgICAgCisgICAgTm9kZSogaW5zZXJ0Q2hlY2soc2l6ZV90IGluZGV4LCBO
b2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydENoZWNrKGluZGV4LCBub2Rl
LT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICB9CisgICAgCisgICAgTm9kZSogaW5zZXJ0
Q2hlY2soc2l6ZV90IGluZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgRWRnZSBlZGdlKQorICAgIHsK
KyAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgcmV0dXJuIGlu
c2VydE5vZGUoaW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBlZGdlKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2Nr
KiBibG9jaykKICAgICB7CiAgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNl
cnRpb25zKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFycmF5
Qm91bmRzOgotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZS4gQnV0
IGZvciBub3cgd2UganVzdCBhc3NlcnQgdGhhdCdzIHRoZSBjYXNlLgogICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsICEobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSk7CiAg
ICAgICAgIAotICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBQaGFu
dG9tLCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBub2RlUmVmID0g
bV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBDaGVjaywgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNo
aWxkcmVuKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUs
NiArODUsMTUgQEAgYm9vbCBOb2RlOjpoYXNWYXJpYWJsZUFjY2Vzc0RhdGEoR3JhcGgmIAogICAg
IH0KIH0KIAordm9pZCBOb2RlOjpyZW1vdmUoKQoreworICAgIEFTU0VSVCghKGZsYWdzKCkgJiBO
b2RlSGFzVmFyQXJncykpOworICAgIAorICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uanVzdENoZWNr
cygpOworICAgIAorICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENoZWNrKTsKK30KKwogdm9pZCBO
b2RlOjpjb252ZXJ0VG9JZGVudGl0eSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2hpbGQxKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE4MzQwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDcsMTUgKzQwNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9mbGFncyA9IGRlZmF1
bHRGbGFncyhvcCk7CiAgICAgfQogCi0gICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tKCkKLSAgICB7
Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20pOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIGNvbnZlcnRUb0NoZWNrKCkKLSAgICB7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVsdEZs
YWdzKENoZWNrKTsKLSAgICB9CisgICAgdm9pZCByZW1vdmUoKTsKIAogICAgIHZvaWQgY29udmVy
dFRvQ2hlY2tTdHJ1Y3R1cmUoU3RydWN0dXJlU2V0KiBzZXQpCiAgICAgewpAQCAtNDI1LDcgKzQx
Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICB2b2lkIHJlcGxhY2VXaXRoKE5vZGUqIG90
aGVyKQogICAgIHsKLSAgICAgICAgY29udmVydFRvUGhhbnRvbSgpOworICAgICAgICByZW1vdmUo
KTsKICAgICAgICAgc2V0UmVwbGFjZW1lbnQob3RoZXIpOwogICAgIH0KIApAQCAtMTU0NiwyMCAr
MTUzOCw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAg
fQogICAgIAotICAgIGJvb2wgd2lsbEhhdmVDb2RlR2VuT3JPU1IoKQotICAgIHsKLSAgICAgICAg
c3dpdGNoIChvcCgpKSB7Ci0gICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgIGNhc2UgTW92
SGludDoKLSAgICAgICAgY2FzZSBab21iaWVIaW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgIHJldHVybiBjaGlsZDEoKS51c2VL
aW5kVW5jaGVja2VkKCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDIoKS51c2VLaW5kVW5jaGVja2Vk
KCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDMoKS51c2VLaW5kVW5jaGVja2VkKCkgIT0gVW50eXBl
ZFVzZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRHZW5lcmF0
ZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIGJvb2wgaXNTZW1hbnRpY2FsbHlTa2lw
cGFibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ291bnRFeGVjdXRpb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE4
MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY1LDEyICs2NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKICNkZWZpbmUgTm9kZUFyaXRoRmxhZ3NNYXNrICAgICAgICAgICAgICAgKE5vZGVCZWhh
dmlvck1hc2sgfCBOb2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spCiAKLSNkZWZpbmUgTm9kZVJlbGV2
YW50VG9PU1IgICAgICAgICAgICAgICAweDEwMDAwCisjZGVmaW5lIE5vZGVJc0ZsdXNoZWQgICAg
ICAgICAgICAgICAgICAgMHgxMDAwMCAvLyBDb21wdXRlZCBieSBDUFNSZXRocmVhZGluZ1BoYXNl
LCB3aWxsIHRlbGwgeW91IHdoaWNoIGxvY2FsIG5vZGVzIGFyZSBiYWNrd2FyZHMtcmVhY2hhYmxl
IGZyb20gYSBGbHVzaC4KIAotI2RlZmluZSBOb2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAg
IDB4MjAwMDAgLy8gQ29tcHV0ZWQgYnkgQ1BTUmV0aHJlYWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlv
dSB3aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEgRmx1c2gu
Ci0KLSNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAweDQwMDAwCi0jZGVm
aW5lIE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHg4MDAwMAorI2RlZmluZSBOb2Rl
TWlzY0ZsYWcxICAgICAgICAgICAgICAgICAgIDB4MjAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFn
MiAgICAgICAgICAgICAgICAgICAweDQwMDAwCisjZGVmaW5lIE5vZGVNaXNjRmxhZzMgICAgICAg
ICAgICAgICAgICAgMHg4MDAwMAogCiB0eXBlZGVmIHVpbnQzMl90IE5vZGVGbGFnczsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTgzNDA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICAvKiBiYXNpYyBibG9jayBtaWdodCBoYXZlIHJlYWQgYSBsb2NhbCB2YXJpYWJsZSBpbiBieXRl
Y29kZS4gV2Ugb25seSByZW1vdmUgR2V0TG9jYWxzIGlmIGl0ICovXAogICAgIC8qIGlzIHJlZHVu
ZGFudCBiZWNhdXNlIG9mIGFuIGVhcmxpZXIgR2V0TG9jYWwgb3IgU2V0TG9jYWwgaW4gdGhlIHNh
bWUgYmxvY2suIFdlIGNvdWxkIG1ha2UgKi9cCiAgICAgLyogdGhlc2Ugbm90IE11c3RHZW5lcmF0
ZSBhbmQgdXNlIGEgbW9yZSBzb3BoaXN0aWNhdGVkIGFuYWx5c2lzIHRvIGluc2VydCBQaGFudG9t
TG9jYWxzIGluICovXAotICAgIC8qIHRoZSBzYW1lIHdheSB0aGF0IHdlIGluc2VydCBQaGFudG9t
cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDA4NiAqL1wKKyAg
ICAvKiB0aGUgc2FtZSB3YXkgdGhhdCB3ZSBpbnNlcnQgUGhhbnRvbXMuIFRoYXQncyBoYXJkIGFu
ZCBwcm9iYWJseSBub3QgcHJvZml0YWJsZS4gU2VlICovXAorICAgIC8qIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYgKi9cCiAgICAgbWFjcm8oR2V0TG9jYWws
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhTZXRMb2NhbCwg
MCkgXAogICAgIFwKQEAgLTcyLDggKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKFpvbWJpZUhpbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQaGFudG9tLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2ssIE5vZGVNdXN0
R2VuZXJhdGUpIC8qIFVzZWQgaWYgd2Ugd2FudCBqdXN0IGEgdHlwZSBjaGVjayBidXQgbm90IGxp
dmVuZXNzLiBOb24tY2hlY2tpbmcgdXNlcyB3aWxsIGJlIHJlbW92ZWQuICovXAotICAgIG1hY3Jv
KFVwc2lsb24sIE5vZGVSZWxldmFudFRvT1NSKSBcCi0gICAgbWFjcm8oUGhpLCBOb2RlUmVsZXZh
bnRUb09TUikgXAorICAgIG1hY3JvKFVwc2lsb24sIDApIFwKKyAgICBtYWNybyhQaGksIDApIFwK
ICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21M
b2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTI4MSwxMCArMjgyLDEwIEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9u
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8oQ3JlYXRlRGlyZWN0QXJndW1lbnRz
LCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQaGFudG9tRGlyZWN0QXJndW1lbnRzLCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhQaGFudG9tRGlyZWN0QXJndW1lbnRzLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRz
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVS
ZXN1bHRKUykgXAotICAgIG1hY3JvKFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXAorICAgIG1hY3JvKFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRGcm9tQXJndW1lbnRzLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQdXRUb0FyZ3VtZW50cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgxLDcgKzU4MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7CiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlvbigpICYmIG1fc2lu
a0NhbmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIApAQCAtNzk1LDcgKzc5NSw2IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0
OgogICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
Y2FzZSBDaGVjazoKICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgU3Rv
cmVCYXJyaWVyV2l0aE51bGxDaGVjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5o
IgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1
ZGUgIkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAi
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7Ci0KLXN0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9kZU5lZWRzUGhh
bnRvbSA9IE5vZGVNaXNjRmxhZzE7Ci0KLWNsYXNzIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRvbSBjYW5v
bmljYWxpemF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwotICAgICAgICAKLSAgICAg
ICAgbV9ncmFwaC5jbGVhckZsYWdzT25BbGxOb2RlcyhOb2RlTmVlZHNQaGFudG9tIHwgTm9kZVJl
bGV2YW50VG9PU1IpOwotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwotICAg
ICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJs
b2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1bnNpZ25l
ZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7
Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5vZGUtPm9wKCkgPT0gQ2hl
Y2spIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFj
ZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdl
ID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9k
ZS0+b3AoKSA9PSBQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQ
aGFudG9tIG9uIGEgbm9kZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVk
IHRvIGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhp
cyBub2RlIGluc3RlYWQgb2YganVzdCBoYXZpbmcgYSBDaGVjay4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZGdlLT5tZXJnZUZsYWdzKE5vZGVOZWVkc1BoYW50b20pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhh
dmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVw
IHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7
Ci0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkg
ewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVOZWVkc1BoYW50b20pIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZv
cm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIENhbm9uaWNhbGl6YXRpb24gUGhhc2Ui
KTsKLSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZT4oZ3Jh
cGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgJKHJldmlzaW9uIDE4MzQwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9o
Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewotCi1jbGFzcyBHcmFwaDsKLQotLy8gUmVwbGFjZXMgYWxsIHByZS1leGlzdGluZyBQaGFudG9t
cyB3aXRoIENoZWNrcyBvciByZW1vdmVzIHRoZW0gaWYgdGhlIENoZWNrIGlzIHVubmVjZXNzYXJ5
LiBJZgotLy8gdGhlIFBoYW50b20gd2FzIG5lY2Vzc2FyeSAoaXQgdXNlcyBhIG5vZGUgdGhhdCBp
cyByZWxldmFudCB0byBPU1IpIHRoZW4gdGhlIFBoYW50b20gaXMgaG9pc3RlZAotLy8gdG8ganVz
dCBiZWxvdyB0aGUgbm9kZS4KLS8vCi0vLyBUaGlzIHBoYXNlIGlzIG9ubHkgdmFsaWQgaW4gU1NB
LCBiZWNhdXNlIGl0J3Mgb25seSBpbiBTU0EgdGhhdCBQaGFudG9tcyBhcmUgaWdub3JlZCBmb3Ig
dGhlCi0vLyBwdXJwb3NlIG9mIGxpdmVuZXNzLWF0LXNvbWUtcG9pbnQgYW5kIGFyZSBvbmx5IHVz
ZWQgZm9yIGFic29sdXRlIGxpdmVuZXNzLgotLy8KLS8vIFRoaXMgcGhhc2UgbWFrZXMgYSBsb3Qg
b2YgdGhpbmdzIGVhc2llciwgbGlrZSBDRkcgc2ltcGxpZmljYXRpb246IHlvdSBkb24ndCBoYXZl
IHRvIGluc2VydCBhbnkKLS8vIHBoYW50b21zIHdoZW4gamV0dGlzb25pbmcgYSBDRkcgZWRnZS4K
LQotYm9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmKTsKLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRp
ZiAvLyBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2
aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVt
b3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19K
SVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5o
IgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCi0jaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0K
LWNsYXNzIFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAg
IFBoYW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBo
LCAicGhhbnRvbSByZW1vdmFsIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkK
LSAgICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFs
cmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxv
Y2stPnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXpl
KCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRM
b2NhbDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGls
IHdlIGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCi0g
ICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09T
UigpOwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dy
YXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJs
b2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJ
bmRleCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsr
KTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBu
dWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3Vs
ZCBiZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJq
ZWN0IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4u
Zm9yRXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hl
Y2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxl
dmFudFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNl
bmN5TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShp
LS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lM
aXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5v
ZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdl
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVt
b3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
cmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9j
YXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZv
cm1QaGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVu
UGhhc2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgJKHJldmlz
aW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92
YWxQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tUmVtb3Zh
bFBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0KLSNpZiBFTkFCTEUo
REZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFw
aDsKLQotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxk
cmVuLiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRl
cyBtYW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5
c2lzLgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIs
IGluIFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21S
ZW1vdmFsKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE4MzQwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBo
YXNlLmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
LmgiCiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTUxLDEzICs1MiwxMCBAQAogI2luY2x1
ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmgiCiAjaW5jbHVkZSAiREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FDb252ZXJzaW9uUGhhc2Uu
aCIKICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHU3RhY2tM
YXlvdXRQaGFzZS5oIgpAQCAtMzE4LDcgKzMxNiw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKGRm
Zyk7CiAKICAgICAgICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAgICAgICAg
cGVyZm9ybVBoYW50b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7
CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAgICAgICBwZXJmb3JtRENF
KGRmZyk7CiAgICAgICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRmZyk7CkBAIC0zNDQsNyAr
MzQyLDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAg
ICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwZXJm
b3JtUGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgYml0Lgor
ICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBi
aXQuCiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhkZmcpOwogICAgICAgICBw
ZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRo
cmVhZGluZyhkZmcpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsK
ICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5n
KGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOyAvLyBS
ZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7
IC8vIFJlZHVjZSB0aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAgY2hhbmdlZCA9IGZhbHNl
OwogICAgICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAg
ICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSkgewpAQCAt
MzgxLDcgKzM3OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIK
ICAgICAgICAgLy8gdGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1wbGUgU1NBIGZpeC11cC4K
ICAgICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAgICAgIHBlcmZvcm1QaGFu
dG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwog
ICAgICAgICBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7CiAgICAgICAgIHBlcmZv
cm1HbG9iYWxDU0UoZGZnKTsKICAgICAgICAgCkBAIC0zOTAsMTUgKzM4OCwxMSBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGRmZy5tX2ZpeHBvaW50
U3RhdGUgPSBGaXhwb2ludENvbnZlcmdlZDsKICAgICAgICAgCiAgICAgICAgIHBlcmZvcm1TdG9y
ZUJhcnJpZXJFbGlzaW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXph
dGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwogICAgICAg
ICBwZXJmb3JtQ0ZBKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZUTE9TUkV4
aXRMaXZlbmVzcygpKQotICAgICAgICAgICAgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRp
b24oZGZnKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpIHsK
KyAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpCiAgICAgICAgICAg
ICBwZXJmb3JtTW92SGludFJlbW92YWwoZGZnKTsKLSAgICAgICAgICAgIHBlcmZvcm1QaGFudG9t
Q2Fub25pY2FsaXphdGlvbihkZmcpOwotICAgICAgICB9CisgICAgICAgIHBlcmZvcm1DbGVhblVw
KGRmZyk7CiAgICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8gV2UgcmVseSBvbiB0aGlzIHRvIGtp
bGwgZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXplZCBhcyBkZWFkIGJ5IExMVk0uCiAg
ICAgICAgIHBlcmZvcm1TdGFja0xheW91dChkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NB
bmFseXNpcyhkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAg
ICBub2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsU3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG5v
ZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbC5vZmZzZXQoKSkpOwotICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5o
IgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5l
cy5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0Lmgi
Ci0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBSZXN1cnJlY3Rpb25Gb3JW
YWxpZGF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicmVz
dXJyZWN0aW9uIGZvciB2YWxpZGF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
cnVuKCkKLSAgICB7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7
Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2sp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
bm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5v
cmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLWJvb2wgcGVyZm9ybVJl
c3VycmVjdGlvbkZvclZhbGlkYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUmVzdXJyZWN0aW9uIEZvciBWYWxpZGF0aW9uIFBoYXNl
Iik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZT4o
Z3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oCShyZXZpc2lvbiAx
ODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZh
bGlkYXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2VfaAotI2RlZmluZSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21t
b24uaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsK
LQotLy8gUGxhY2VzIGEgUGhhbnRvbSBhZnRlciBldmVyeSB2YWx1ZS1wcm9kdWNpbmcgbm9kZSwg
dGhlcmVieSBkaXNhYmxpbmcgRENFIGZyb20ga2lsbGluZyBpdC4KLS8vIFRoaXMgaXMgdXNlZnVs
IGZvciB2YWxpZGF0aW5nIG91ciBPU1IgZXhpdCBtYWNoaW5lcnkgYnkgaW5zdGl0dXRpbmcgdGhl
IHJlcXVpcmVtZW50IHRoYXQKLS8vIGFueSBsaXZlLWluLWJ5dGVjb2RlIHZhcmlhYmxlIHNob3Vs
ZCBiZSBPU1ItYXZhaWxhYmxlLiBXaXRob3V0IHRoaXMgcGhhc2UsIGl0J3MgaW1wb3NzaWJsZQot
Ly8gdG8gbWFrZSBzdWNoIGFuIGFzc2VydGlvbiBiZWNhdXNlIG91ciBEQ0UgaXMgbW9yZSBhZ2dy
ZXNzaXZlIHRoYW4gdGhlIGJ5dGVjb2RlIGxpdmVuZXNzCi0vLyBhbmFseXNpcy4KLQotYm9vbCBw
ZXJmb3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERG
R1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNl
dCgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JPcGVyYW5k
Lm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxv
Y2FsKCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
UGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZhbHVlRm9y
T3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAg
ICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFNl
dEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgsNiArMTA2OCwxMiBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7
CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCAhPSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAg
ICAgICBERkdfQ1JBU0goCisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50
Tm9kZSwgdG9DU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgIiwgZWRnZSwg
IiB0byBoYXZlIGRvdWJsZSBmb3JtYXQgYnV0IGluc3RlYWQgaXQgaXMgc3BpbGxlZCBhcyAiLAor
ICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybWF0VG9TdHJpbmcoc3BpbGxGb3JtYXQpKS5kYXRh
KCkpOworICAgICAgICB9CiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgIEZQUlJl
ZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxODM0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2RlKiBub2RlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwotICAgICAgICBub2RlLT5j
b252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgIH0KIAogICAg
IHZvaWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRCYXJyaWVycywgTm9kZSog
bm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHlP
cGVyYW5kVmFsdWUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9JZGVudGl0
eU92ZXJDaGlsZDEoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHlPcGVyYW5kVmFsdWUg
PT0gMC41KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9yaWdpbiwgbV9ub2RlLT5j
aGlsZHJlbik7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNr
KG1fbm9kZUluZGV4LCBtX25vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZl
cnRUb0FyaXRoU3FydCgpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTE2Niw4ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9kZSA9IG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1
bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KICAgICAgICAgICAgICAgICAgICAg
Y2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4s
IG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGhhZEludDMyQ2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDb25z
aWRlciBhZGRpbmcgSW50NTJSZXBJbnQzMlVzZSBvciBldmVuIERvdWJsZVJlcEludDMyVXNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggd291bGQgYmUgc3VwZXIgd2VpcmQuIFRo
ZSBsYXR0ZXIgd291bGQgb25seSBhcmlzZSBpbiBzb21lCkBAIC0xNzUsOSArMTc0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1bHRSZXByZXNl
bnRhdGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmln
aW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLCBJbnQzMlVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2soCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBFZGdl
KG5vZGUsIEludDMyVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTIzOSw4ICsyMzcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9JZGVudGl0eU92ZXJD
aGlsZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKLSAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwg
bV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgbV9ub2RlLT5jaGls
ZHJlbi5yZW1vdmVFZGdlKGNoaWxkSW5kZXggXiAxKTsKICAgICAgICAgbV9ub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE4MzQwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsMzEgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRn
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zvcm0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTG9hZFN0b3JlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlZGdlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IFNldExvY2FsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUaHJlYWRlZENQUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU1NB
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBl
ZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xOTYsNyArMTcxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBmb3VuZFRl
cm1pbmFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAx
OyBqIDwgYmxvY2stPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gYmxvY2stPmF0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBub2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tTG9jYWwgfHwg
bm9kZS0+b3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5vcCgpID09IFBoYW50b21Mb2Nh
bCB8fCBub2RlLT5vcCgpID09IEZsdXNoIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2spOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKEVkZ2Ug
ZWRnZSkgewpAQCAtNDM3LDEwICs0MTIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdldExvY2FsOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEZsdXNoOgogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3Rv
cmUgJiYgIWopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgIXBoaXNJblRo
aXNCbG9jay5jb250YWlucyhlZGdlLm5vZGUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC00NjIsNiArNDMzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IEdldFN0YWNrOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBl
Y3RlZCBub2RlIHR5cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0MSw2ICs1
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAg
ICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksICEiYmFkIG5vZGUgdHlwZSBmb3IgU1NBIik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTgzNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxzLmFwcGVuZChu
b2RlLT51bmxpbmtlZExvY2FsKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2FzZSBDaGVj
azoKICAgICAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgudXNlcyhub2RlLCBjYW5kaWRhdGUpKQpAQCAtMjMyLDcgKzIzMSw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gY2FuZGlkYXRlTm9kZUluZGV4ICsg
MTsgbm9kZUluZGV4IDw9IGxhc3RVc2VySW5kZXg7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNh
c2UgQ2hlY2s6CiAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICBjYXNlIFB1
dEhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9u
IDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDggKzk4LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLT53
aWxsSGF2ZUNvZGVHZW5Pck9TUigpICYmICFPcHRpb25zOjpzaG93QWxsREZHTm9kZXMoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwogICAgICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHJldmlzaW9uIDE4MzQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOSArNDYzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgIGNvbXBpbGVQdXRTdGFjaygpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2FzZSBD
aGVjazoKLSAgICAgICAgICAgIGNvbXBpbGVQaGFudG9tKCk7CisgICAgICAgICAgICBjb21waWxl
Tm9PcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAg
ICAgICAgY29tcGlsZVRvVGhpcygpOwpAQCAtMTE2Miw3ICsxMTYxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVQaGFudG9tKCkKKyAgICB2b2lk
IGNvbXBpbGVOb09wKCkKICAgICB7CiAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1f
Z3JhcGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251804</attachid>
            <date>2015-04-27 18:20:42 -0700</date>
            <delta_ts>2015-04-27 20:14:12 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129959</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBA
QAorMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgbm90IHVzZSBvciBwcmVzZXJ2ZSBQaGFudG9tcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDM3MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFNpbmNlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MzIwNyBhbmQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzNDA2LCBpdCBpcworICAgICAgICBu
byBsb25nZXIgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIFBoYW50b21zIGR1cmluZyB0cmFuc2Zvcm1h
dGlvbnMuIFRoZXkgYXJlIHN0aWxsIHVzZWZ1bCBqdXN0CisgICAgICAgIGJlZm9yZSBGaXh1cFBo
YXNlIHRvIHN1cHBvcnQgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGFuYWx5c2VzLiBUaGV5IGFyZSBz
dGlsbCBpbnNlcnRlZCBsYXRlIGluIHRoZQorICAgICAgICBnYW1lIGluIHRoZSBERkcgYmFja2Vu
ZC4gQnV0IHRyYW5zZm9ybWF0aW9ucyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0uIElu
c2lkZSBhIGJhc2ljCisgICAgICAgIGJsb2NrLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHNvIGxvbmcg
YXMgdGhlIElSIHBpbnBvaW50cyB0aGUgcGxhY2Ugd2hlcmUgdGhlIHZhbHVlIGJlY29tZXMKKyAg
ICAgICAgYXZhaWxhYmxlIGluIGEgYnl0ZWNvZGUgcmVnaXN0ZXIgKHVzaW5nIE1vdkhpbnQpIGFu
ZCBzbyBsb25nIGFzIHRoZXJlIGlzIGEgU2V0TG9jYWwgYW55dGltZSBzb21lCisgICAgICAgIG90
aGVyIGJsb2NrIHdvdWxkIG5lZWQgdGhlIHZhbHVlIChlaXRoZXIgZm9yIE9TUiBvciBmb3IgREZH
IGV4ZWN1dGlvbiksIHRoZW4gd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgbGl2ZW5lc3MgbWFy
a2Vycy4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIHJlbW92ZXMgYW55IHBsYWNlcyB3aGVy
ZSB3ZSBpbnNlcnRlZCBQaGFudG9tcyBqdXN0IGZvciBsaXZlbmVzcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb24KKyAgICAgICAgYW5kIGl0IHJlcGxhY2VzIGNvbnZlcnRUb1BoYW50b20oKSB3aXRoIHJl
bW92ZSgpLCB3aGljaCBqdXN0IGNvbnZlcnRzIHRoZSBub2RlIHRvIGEgQ2hlY2suIEEKKyAgICAg
ICAgQ2hlY2sgbm9kZSBvbmx5IGtlZXBzIGl0cyBjaGlsZHJlbiBzbyBsb25nIGFzIHRob3NlIGNo
aWxkcmVuIGhhdmUgY2hlY2tzLgorICAgICAgICAKKyAgICAgICAgVGhlIGZhY3QgdGhhdCB3ZSBu
byBsb25nZXIgY29udmVydFRvUGhhbnRvbSgpIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBiZSBtb3Jl
IGNhcmVmdWwgd2hlbgorICAgICAgICBjb25zdGFudC1mb2xkaW5nIEdldExvY2FsLiBQcmV2aW91
c2x5IHdlIHdvdWxkIGNvbnZlcnRUb1BoYW50b20oKSBhbmQgdXNlIHRoZSBmYWN0IHRoYXQKKyAg
ICAgICAgUGhhbnRvbShQaGkpIHdhcyBhIHZhbGlkIGNvbnN0cnVjdC4gSXQncyBub3QgdmFsaWQg
YW55bW9yZS4gU28sIHdoZW4gY29uc3RhbnQgZm9sZGluZyBlbmNvdW50ZXJzCisgICAgICAgIGEg
R2V0TG9jYWwgaXQgbmVlZHMgdG8gaW5zZXJ0IGEgUGhhbnRvbUxvY2FsIGRpcmVjdGx5LiBUaGlz
IGFsbG93cyB1cyB0byBzaW1wbGlmeQorICAgICAgICBHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQo
KSBhIGJpdC4gTHVja2lseSwgbm9uZSBvZiB0aGUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2Qg
d291bGQgc2VlCisgICAgICAgIEdldExvY2Fscy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5
IFBoYW50b20tbGlrZSBjcnVmdCBsZWZ0IG92ZXIgYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAg
ICAgCisgICAgICAgIC0gUGhhbnRvbXMgYmVmb3JlIEZpeHVwUGhhc2UuIEkga2luZCBvZiBsaWtl
IHRoZXNlLiBJdCBtZWFucyB0aGF0IGJlZm9yZSBGaXh1cFBoYXNlLCB3ZSBjYW4gZG8KKyAgICAg
ICAgICBiYWNrd2FyZHMgYW5hbHlzZXMgYW5kIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgdXNl
cnMgb2YgYSBub2RlIGluIERGRyBJUiBhcmUgYSBzdXBlcnNldCBvZgorICAgICAgICAgIHRoZSB1
c2VycyBvZiB0aGUgb3JpZ2luYWwgbG9jYWwncyBsaXZlIHJhbmdlIGluIGJ5dGVjb2RlLiBUaGlz
IGlzIGVzc2VudGlhbCBmb3Igc3VwcG9ydGluZyBvdXIKKyAgICAgICAgICBCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciB0aGlu
Z3MgbGlrZSBhc20uanMuCisgICAgICAgIAorICAgICAgICAtIFBoYW50b21Mb2NhbHMgYW5kIEdl
dExvY2FscyBiZWluZyBOb2RlTXVzdEdlbmVyYXRlLiBTZWUgZGlzY3Vzc2lvbiBpbgorICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYuIEl0IGFw
cGVhcnMgdGhhdCB0aGlzIGlzIG5vdCBhcyBldmlsIGFzIHRoZQorICAgICAgICAgIGFsdGVybmF0
aXZlcy4gVGhlIGJlc3QgbG9uZy10ZXJtIHBsYW4gaXMgdG8gc2ltcGx5IGRpdGNoIHRoZSBUaHJl
YWRlZENQUyBJUiBlbnRpcmVseSBhbmQgaGF2ZQorICAgICAgICAgIHRoZSBERkcgdXNlIFNTQS4g
Rm9yIG5vdywgc28gbG9uZyBhcyBhbnkgbmV3IERGRyBvcHRpbWl6YXRpb25zIHdlIGFkZCBhcmUg
YmxvY2stbG9jYWwgYW5kCisgICAgICAgICAgdHJlYXQgR2V0TG9jYWwvU2V0TG9jYWwgY29uc2Vy
dmF0aXZlbHksIHRoaXMgc2hvdWxkIGFsbCBiZSBzb3VuZC4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgY2hhbmdlIHNob3VsZCBiZSBwZXJmLW5ldXRyYWwgYWx0aG91Z2ggaXQgZG9lcyByZWR1Y2Ug
dGhlIHRvdGFsIHdvcmsgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgZG9lcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlzdDo6anVzdENoZWNrcyk6CisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpyZXBsYWNlVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRp
b25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpDUFNSZXRo
cmVhZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpj
bGVhclZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6
Y2Fub25pY2FsaXplRmx1c2hPclBoYW50b21Mb2NhbEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcC4KKyAgICAgICAgKEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OkNsZWFuVXBQaGFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q2xlYW5VcFBoYXNlOjpydW4pOgorICAgICAgICAoSlND
OjpERkc6OnBlcmZvcm1DbGVhblVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUmVtb3Zh
bFBoYXNlOjpQaGFudG9tUmVtb3ZhbFBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QaGFudG9tUmVtb3ZhbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NsZWFu
VXBQaGFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21SZW1vdmFsUGhhc2UuaC4KKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6YWRkQmFzZUNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zml4VXBzaWxv
bnMpOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RENFUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVwQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpjbGVhblZhcmlhYmxlcyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFN0cmluZ0FkZFVzZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludENvbnZlcnRpbmdFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXhJbnRPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXhEb3VibGVPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFJlcXVpcmVkUGhhbnRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUGhhbnRvbXNJZk5lY2Vzc2Fy
eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjptZXJnZVJlbGV2YW50VG9PU1IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnNlcnRpb25TZXQ6Omluc2VydENoZWNrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpyZW1vdmUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cmVwbGFjZVdp
dGgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b20pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NoZWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjp3aWxsSGF2ZUNvZGVHZW5Pck9TUik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpsb3dlck5vblJl
YWRpbmdPcGVyYXRpb25zT25QaGFudG9tQWxsb2NhdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6
Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBk
ZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdQ
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToK
KyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2U6OmVsaWRlQmFy
cmllcik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmNvbnZlcnRUb0lkZW50aXR5
T3ZlckNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6
OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVTU0Ep
OgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9PcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQ
aGFudG9tKTogRGVsZXRlZC4KKwogMjAxNS0wNC0yNyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVnRXhwIG1hdGNoZXMgYXJyYXlzIHNob3VsZCB1c2UgY29u
dGlndW91cyBpbmRleGluZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCiAgICAgZGZnL0RGR0NT
RVBoYXNlLmNwcAogICAgIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisgICAgZGZnL0RGR0NsZWFu
VXBQaGFzZS5jcHAKICAgICBkZmcvREZHQ2xvYmJlclNldC5jcHAKICAgICBkZmcvREZHQ2xvYmJl
cml6ZS5jcHAKICAgICBkZmcvREZHQ29tbW9uLmNwcApAQCAtMjAyLDkgKzIwMyw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCiAgICAgZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCiAgICAg
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCi0gICAgZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9u
UGhhc2UuY3BwCiAgICAgZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKLSAgICBkZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKICAgICBkZmcvREZHUGhhc2UuY3BwCiAgICAgZGZn
L0RGR1BoaUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQbGFuLmNwcApAQCAtMjE0LDcgKzIxMyw2
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcAogICAgIGRmZy9ERkdQdXJlVmFsdWUuY3BwCiAgICAgZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAotICAgIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhh
c2UuY3BwCiAgICAgZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCiAgICAgZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAKICAgICBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTgzNDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzgwLDYgKzM4MCw3IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2FwYWJpbGl0aWVzLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDRkFQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyaXplLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdDb21tb24uY3BwIiAvPgpAQCAtNDQ2LDkgKzQ0Nyw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIiAvPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYXNlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGlDaGlsZHJlbi5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUGxhbi5jcHAiIC8+CkBAIC00NTgsNyArNDU3LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUHVyZVZhbHVlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdTYWZlcG9pbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1NwZWN1bGF0aXZlSklULmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCIgLz4KQEAgLTEwNjIsNiArMTA2MCw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ0NhbGxIZWxwZXJzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ0ZBUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xvYmJlcml6ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0Nsb2JiZXJTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdDb21tb24uaCIgLz4KQEAgLTExNDIsOSArMTE0MSw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRQcmVwYXJh
dGlvbi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkZmdcREZHUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdQaGlDaGlsZHJlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1Bs
YW4uaCIgLz4KQEAgLTExNTgsNyArMTE1NSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxkZmdcREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdSZWdpc3RlckJhbmsuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdSZWdpc3RlclNldC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
ZGZnXERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhZmVUb0V4ZWN1dGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdTYWZlcG9pbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIiAvPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsOCArMzY1LDYgQEAKIAkJMEY2NjZFQzExODM1NjZG
OTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVs
bEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2
RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9OwogCQkwRjY2
NkVDNzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMzE4MzU2NzJCMDBEMDE3RjEg
LyogREZHQXZhaWxhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMEY2NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9u
Rm9yVmFsaWRhdGlvblBoYXNlLmNwcCAqLzsgfTsKLQkJMEY2NjZFQ0QxODM2QjM3RTAwRDAxN0Yx
IC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQ0IxODM2QjM3RTAwRDAxN0YxIC8q
IERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAv
KiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZF
MTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NjgyRkIyMTlCQ0IzNjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjgyRkIwMTlCQ0IzNjQwMEZB
M0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCAqLzsgfTsKQEAgLTQxMCw4ICs0MDgsNiBAQAog
CQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzkw
ODU0MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTRC
MTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0
MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMEY3QjM2NjExOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuY3BwICovOyB9OwotCQkwRjdCMzY2MjE5N0M1MjVDMDBFRDFEREMg
LyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjM2NjAxOTdDNTI1QzAwRUQxRERDIC8qIERG
R1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDYyLDYgKzQ1OCw4IEBACiAJCTBGOUQzMzk3MTdGRkM0RTYwMDczQzJCQyAvKiBERkdG
bHVzaGVkQXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlEMzM5QTE4MDNBREI3MDA3
M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk4MTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMu
Y3BwICovOyB9OwogCQkwRjlEMzM5QjE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM5OTE4
MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERG
R0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjlEMzY5MjFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCAq
LzsgfTsKKwkJMEY5RDM2OTUxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDM2OTMxQUU5
Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUZCNEY0MTdGQ0I5MTcwMENCNjdGOCAvKiBE
RkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBo
YXNlLmNwcCAqLzsgfTsKIAkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5
b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5RkM4QzMxNEUx
QjVGRTAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUw
IC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwICovOyB9OwpAQCAtNTE5LDggKzUxNyw2IEBA
CiAJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY3MDE2QzFE
QjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQkYxNThDMTlCN0E1MzEwMDY5NUREMCAv
KiBERkdCbG9ja1NldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkJGMTU4QTE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwICovOyB9
OwogCQkwRkJGMTU4RDE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJGMTU4QjE5QjdB
NTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCRkREMDQxOTZDOTJCRjAwN0E1QkZBIC8q
IERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCRkREMDIxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21S
ZW1vdmFsUGhhc2UuY3BwICovOyB9OwotCQkwRkJGREQwNTE5NkM5MkJGMDA3QTVCRkEgLyogREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCRkREMDMxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1vdmFs
UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQy
IC8qIERGR09TUkV4aXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2
RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NzIxNDY5M0FGOTAwQ0Yy
NDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAgKi87IH07CkBAIC0yMTAyLDggKzIwOTgsNiBAQAogCQkwRjY2NkVC
RjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzIxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJp
bGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBdmFpbGFi
aWxpdHkuY3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjY2RUMzMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXZhaWxhYmlsaXR5Lmg7
IHBhdGggPSBkZmcvREZHQXZhaWxhYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGNjY2RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUmVz
dXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBo
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Jlc3VycmVjdGlvbkZv
clZhbGlkYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRp
b25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2RTE2ODE0REYzRjEz
MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdBZGphY2VuY3lMaXN0Lmg7IHBhdGggPSBkZmcvREZHQWRqYWNlbmN5TGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQg
LyogREZHRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlLmg7
IHBhdGggPSBkZmcvREZHRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY4
MkZCMDE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTU0FDYWxjdWxhdG9yLmNwcDsgcGF0aCA9IGRm
Zy9ERkdTU0FDYWxjdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
NDUsOCArMjEzOSw2IEBACiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdD
b3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3OTA4NTMxOUEyOTBC
MjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzkwODU0MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
N0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1BoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjdCMzY2MDE5N0M1
MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE5Nyw2ICsyMTg5LDggQEAKIAkJ
MEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0aCA9IGRmZy9ERkdGbHVzaGVk
QXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTgxODAzQURCNzAwNzND
MkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGVExTdGFja01hcHMuY3BwOyBwYXRoID0gZnRsL0ZUTFN0YWNrTWFwcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzk5MTgwM0FEQjcwMDczQzJCQyAvKiBGVExT
dGFja01hcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU3RhY2tNYXBz
Lmg7IHBhdGggPSBmdGwvRlRMU3RhY2tNYXBzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUQzNjkyMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xlYW5VcFBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdDbGVhblVwUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjlEMzY5MzFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NsZWFuVXBQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0NsZWFuVXBQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQjRGMjE3
RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBwYXRoID0g
ZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY0LDggKzIyNTgsNiBAQAog
CQkwRkJFMEY3MDE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdVbmlmaWNhdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkJGMTU4QTE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tTZXQuY3BwOyBwYXRoID0gZGZnL0RG
R0Jsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCRjE1OEIxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdCbG9ja1NldElubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja1Nl
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCRkREMDIxOTZDOTJC
RjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA7IHBhdGggPSBk
ZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTBGQkZERDAzMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoYW50b21SZW1vdmFsUGhhc2Uu
aDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXQuaDsgcGF0aCA9IGRmZy9E
RkdPU1JFeGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzZGMTQ2OTNB
RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENv
bXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzcwMTQ2OTNBRUYw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHBhdGggPSBkZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg4
MCw2ICs0ODcyLDggQEAKIAkJCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCAqLywKIAkJCQkwRjNCM0EyNDE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjlEMzY5MjFBRTlDQzMzMDAwRDRERkIg
LyogREZHQ2xlYW5VcFBoYXNlLmNwcCAqLywKKwkJCQkwRjlEMzY5MzFBRTlDQzMzMDAwRDRERkIg
LyogREZHQ2xlYW5VcFBoYXNlLmggKi8sCiAJCQkJQTc3QTQyMzgxN0EwQkJGRDAwQThEQjgxIC8q
IERGR0Nsb2JiZXJpemUuY3BwICovLAogCQkJCUE3N0E0MjM5MTdBMEJCRkQwMEE4REI4MSAvKiBE
RkdDbG9iYmVyaXplLmggKi8sCiAJCQkJQTc3QTQyM0ExN0EwQkJGRDAwQThEQjgxIC8qIERGR0Ns
b2JiZXJTZXQuY3BwICovLApAQCAtNTAyNiwxMiArNTAyMCw4IEBACiAJCQkJMEZFRkM5QTgxNjgx
QTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLywKIAkJCQkwRjIz
NUJFOTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCAqLywKIAkJ
CQkwRjIzNUJFQTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggKi8s
Ci0JCQkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwICovLAotCQkJCTBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFu
dG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8sCiAJCQkJMEY2MjM3OTUxQUU0NUNBNzAwRDQw
MkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEY2MjM3OTYxQUU0
NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oICovLAotCQkJCTBGQkZE
RDAyMTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCAqLywKLQkJ
CQkwRkJGREQwMzE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oICov
LAogCQkJCTBGRkZDOTRGMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgKi8sCiAJCQkJ
MEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1BoYXNlLmggKi8sCiAJCQkJMEYyQjlDREUx
OUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmNwcCAqLywKQEAgLTUwNTMsOCArNTA0
Myw2IEBACiAJCQkJMEYzQTFCRjcxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2lu
Z1BoYXNlLmNwcCAqLywKIAkJCQkwRjNBMUJGODFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2UuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZH
UmVnaXN0ZXJCYW5rLmggKi8sCi0JCQkJMEY2NjZFQ0ExODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi8sCi0JCQkJMEY2NjZFQ0IxODM2QjM3
RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oICovLAogCQkJ
CTBGMkZDQ0Y0MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuY3BwICovLAogCQkJCTBG
MkZDQ0Y1MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCAqLywKIAkJCQlBNzdBNDIz
QzE3QTBCQkZEMDBBOERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovLApAQCAtNTg2OCw3ICs1
ODU2LDYgQEAKIAkJCQkwRkJFMEY3NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1
MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JW
YWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZDMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjQzMTdBMEJC
RkQwMEE4REI4MSAvKiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQx
MDE3RjE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNTk0Myw2ICs1OTMwLDcgQEAKIAkJCQkwRjIzNUJE
NjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyMzVCRDcxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudExp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ5MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExF
eGl0VGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUQzNjk1MUFFOUNDMzMw
MDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRC
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
M0NFMDg2MThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02MDUzLDcgKzYwNDEsNiBAQAogCQkJCTg2MDZEREVBMThEQTQ0QUIwMEEzODNEMCAv
KiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMz
NTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21S
ZW1vdmFsUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERF
RCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4
MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtNjE0Miw3ICs2MTI5LDYgQEAKIAkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjdCMzY2MjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QTEyNzQxOTJEOUZERjAwODc2NEEzIC8qIERG
R0RvZXNHQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjUxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTcxMTAsNiArNzA5Niw3IEBACiAJCQkJMEYy
QkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEMTIwMzMxQThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRB
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZH
Q2xlYW5VcFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNBMUJGOTFB
OUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNzE1Miw3ICs3MTM5LDYgQEAKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3
NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4
MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjY2NkVDQzE4MzZCMzdFMDBEMDE3RjEgLyog
REZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkZDQ0ZCMThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFQzlERDIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzM2Nyw3ICs3MzUzLDYgQEAK
IAkJCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODc1MTA3RUMxM0UwMDEzRTdCMiAv
KiBKU0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5
IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY3QjM2
NjExOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdl
ZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8q
IEpTTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjk1MTgyRDk5MTQwMDUyMkMyMiAv
KiBKU01hcEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU0MCw3ICs3NTI1LDYgQEAK
IAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkJGREQwNDE5NkM5MkJGMDA3QTVCRkEgLyogREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBD
QUQzMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ5
REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQ0Q0QzQxNUY2QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FkamFjZW5jeUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FkamFjZW5jeUxpc3QuaAkocmV2aXNpb24gMTgzNDQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1Niw2ICsxNTYsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQWRqYWNlbmN5TGlzdChG
aXhlZCwgY2hpbGQxKCkuc2FuaXRpemVkKCksIGNoaWxkMigpLnNhbml0aXplZCgpLCBjaGlsZDMo
KS5zYW5pdGl6ZWQoKSk7CiAgICAgfQogICAgIAorICAgIEFkamFjZW5jeUxpc3QganVzdENoZWNr
cygpIGNvbnN0CisgICAgeworICAgICAgICBBZGphY2VuY3lMaXN0IHJlc3VsdChGaXhlZCk7Cisg
ICAgICAgIHVuc2lnbmVkIHNvdXJjZUluZGV4ID0gMDsKKyAgICAgICAgdW5zaWduZWQgdGFyZ2V0
SW5kZXggPSAwOworICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBBZGphY2VuY3lMaXN0OjpT
aXplKSB7CisgICAgICAgICAgICBFZGdlIGVkZ2UgPSBjaGlsZChzb3VyY2VJbmRleCsrKTsKKyAg
ICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuY2hpbGQo
dGFyZ2V0SW5kZXgrKykgPSBlZGdlOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAg
ICAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAg
ICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKQEAgLTM1Myw3ICszNTIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tRGlyZWN0
QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgRWRnZShub2Rl
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKQEAgLTM2MSw3ICszNTks
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFn
cyhQaGFudG9tQ2xvbmVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9y
aWdpbiwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6IHsKQEAg
LTQ4NSw3ICs0ODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlSW5kZXgsIFNwZWNOb25lLCBQdXRTdGFjaywgbm9kZS0+b3JpZ2luLCBPcEluZm8oZGF0
YSksIEVkZ2UodmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAKQEAgLTUzNiw3ICs1MzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9jYW5kaWRh
dGVzLmNvbnRhaW5zKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgp
OworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24g
MTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEJhc2ljQmxvY2s6OnJlcGxhY2VU
ZXJtaW5hbChOb2RlKiBuCiAgICAgICAgIGFwcGVuZChub2RlKTsKICAgICBlbHNlIHsKICAgICAg
ICAgbV9ub2Rlcy5pbnNlcnQocmVzdWx0LmluZGV4ICsgMSwgbm9kZSk7Ci0gICAgICAgIHJlc3Vs
dC5ub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIHJlc3VsdC5ub2RlLT5yZW1vdmUo
KTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKHRlcm1pbmFsKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw3ICs5NCw4IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MK
ICAgICAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToK
ICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOwotICAgICAgICAg
ICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBU
aGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVy
bWluYWwuCisgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQaGFudG9t
cyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3IgdHdvIG5v
ZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2lsbCBub3Qg
aGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGNhc2UgQ2hlY2s6IC8vIFRo
aXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICAg
ICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcyLDggKzI3MiwxMyBAQCBwcml2YXRlOgogICAgICAgICBOb2Rl
VHlwZSBub2RlVHlwZTsKICAgICAgICAgaWYgKGxpdmVuZXNzTm9kZS0+ZmxhZ3MoKSAmIE5vZGVJ
c0ZsdXNoZWQpCiAgICAgICAgICAgICBub2RlVHlwZSA9IEZsdXNoOwotICAgICAgICBlbHNlCisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZG4n
dCBiZSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjb3VsZCBqdXN0IHJlbWF0ZXJpYWxpemUKKyAgICAg
ICAgICAgIC8vIFBoYW50b21Mb2NhbHMgb3Igc29tZXRoaW5nIHNpbWlsYXIgdXNpbmcgYnl0ZWNv
ZGUgbGl2ZW5lc3MuIEhvd2V2ZXIsIGluIFRocmVhZGVkQ1BTLCBpdCdzCisgICAgICAgICAgICAv
LyB3b3J0aCB0aGUgc2FuaXR5IHRvIG1haW50YWluIHRoaXMgZWFnZXJseS4gU2VlCisgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDg2CiAg
ICAgICAgICAgICBub2RlVHlwZSA9IFBoYW50b21Mb2NhbDsKKyAgICAgICAgfQogICAgICAgICBi
bG9jay0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBub2RlVHlw
ZSwgbm9kZU9yaWdpbiwgCiAgICAgICAgICAgICBPcEluZm8obGl2ZW5lc3NOb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkpOwpAQCAtMzE3LDExICszMjIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8ga2VwdCBhbGl2ZS4KICAgICAgICAgCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgdGVybWluYWwg
b2YgZmlyc3RCbG9jayBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0IGFueW1vcmUuIFdlbGwsIHdlIGRv
bid0Ci0gICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFjdHVhbGx5IHR1cm4gaXQgaW50
byBhIFBoYW50b20uCisgICAgICAgIC8vIHJlYWxseSByZW1vdmUgaXQ7IHdlIGFjdHVhbGx5IHR1
cm4gaXQgaW50byBhIGNoZWNrLgogICAgICAgICBOb2RlKiB0ZXJtaW5hbCA9IGZpcnN0QmxvY2st
PnRlcm1pbmFsKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+aXNUZXJtaW5hbCgpKTsKICAg
ICAgICAgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4gPSB0ZXJtaW5hbC0+b3JpZ2luOwot
ICAgICAgICB0ZXJtaW5hbC0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICB0ZXJtaW5hbC0+
cmVtb3ZlKCk7CiAgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+cmVmQ291bnQoKSA9PSAxKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29uZWRCbG9ja3Muc2l6ZSgp
OyBpLS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgQ1BTUmV0aHJlYWRpbmdQaGFzZSA6IHB1YmxpYyBQaGFz
ZQogcHVibGljOgogICAgIENQU1JldGhyZWFkaW5nUGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAg
ICA6IFBoYXNlKGdyYXBoLCAiQ1BTIHJldGhyZWFkaW5nIikKLSAgICAgICAgLCBtX2F2YWlsYWJs
ZUZvck9TUihPcGVyYW5kc0xpa2UsIGdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQpCiAg
ICAgewogICAgIH0KICAgICAKQEAgLTEyNiwxNCArMTI1LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
IEFTU0VSVCgKICAgICAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplRm9yPG9w
ZXJhbmRLaW5kPigpCiAgICAgICAgICAgICA9PSBtX2Jsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2l6
ZUZvcjxvcGVyYW5kS2luZD4oKSk7Ci0gICAgICAgIEFTU0VSVCgKLSAgICAgICAgICAgIG1fYmxv
Y2stPnZhcmlhYmxlc0F0SGVhZC5zaXplRm9yPG9wZXJhbmRLaW5kPigpCi0gICAgICAgICAgICA9
PSBtX2F2YWlsYWJsZUZvck9TUi5zaXplRm9yPG9wZXJhbmRLaW5kPigpKTsKICAgICAgICAgCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zaXplRm9y
PG9wZXJhbmRLaW5kPigpOyBpLS07KSB7CiAgICAgICAgICAgICBtX2Jsb2NrLT52YXJpYWJsZXNB
dEhlYWQuYXRGb3I8b3BlcmFuZEtpbmQ+KGkpID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5hdEZvcjxvcGVyYW5kS2luZD4oaSkgPSBudWxscHRyOwotICAg
ICAgICAgICAgbV9hdmFpbGFibGVGb3JPU1IuYXRGb3I8b3BlcmFuZEtpbmQ+KGkpID0gRWRnZSgp
OwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMjQ3LDggKzI0Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgLy8gcmVkdW5kYW50IGFuZCBpbmVmZmljaWVudCwgc2luY2UgcmVhbGx5
IGl0IGp1c3QgbWVhbnMgdGhhdCB3ZSB3YW50IHRvCiAgICAgICAgICAgICAgICAgLy8ga2VlcCB0
aGUgbGFzdCBNb3ZIaW50ZWQgdmFsdWUgb2YgdGhhdCBsb2NhbCBhbGl2ZS4KICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEobV9hdmFpbGFi
bGVGb3JPU1IuYXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkpOwotICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTM1
OSwxNCArMzUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYW5vbmljYWxpemVTZXQo
bm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFibGVGb3JPU1Iub3Bl
cmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpID0gbm9kZS0+Y2hpbGQxKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFpvbWJpZUhp
bnQ6Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFibGVGb3JPU1Iub3BlcmFuZChub2RlLT51bmxp
bmtlZExvY2FsKCkpID0gRWRnZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KQEAgLTUxNyw3ICs1MDMsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQaGlT
dGFja0VudHJ5LCAxMjg+IG1fYXJndW1lbnRQaGlTdGFjazsKICAgICBWZWN0b3I8UGhpU3RhY2tF
bnRyeSwgMTI4PiBtX2xvY2FsUGhpU3RhY2s7CiAgICAgVmVjdG9yPE5vZGUqLCAxMjg+IG1fZmx1
c2hlZExvY2FsT3BXb3JrbGlzdDsKLSAgICBPcGVyYW5kczxFZGdlPiBtX2F2YWlsYWJsZUZvck9T
UjsKIH07CiAKIGJvb2wgcGVyZm9ybUNQU1JldGhyZWFkaW5nKEdyYXBoJiBncmFwaCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM0LDggKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1fbm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IElkZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
LT5zZXRSZXBsYWNlbWVudChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAg
ICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcnVsZSBvbmx5IG1ha2VzIHNlbnNlIGZv
ciBsb2NhbCBDU0UsIHNpbmNlIGluIFNTQSBmb3JtIHdlIGhhdmUgYWxyZWFkeQpAQCAtNDM3LDgg
KzQzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0
dXRpb24obV9ub2RlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobV9u
b2RlLT5vcCgpID09IElkZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29u
dmVydFRvQ2hlY2soKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5zZXRSZXBsYWNlbWVu
dChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+
cmVwbGFjZVdpdGgobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjbG9iYmVyaXplKG1fZ3JhcGgsIG1fbm9kZSwgKnRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkocmV2aXNpb24gMTgz
MjA1KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhh
c2UuY3BwOjE4MzIwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
KyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2lu
Y2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNz
IFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIFBoYW50
b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhh
bnRvbSByZW1vdmFsIikKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7
CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07
KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJ
bmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVhZHkg
YmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KKyAgICAgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2Nr
LT5waGlzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPnBo
aXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDog
Ly8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdlIGRv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwor
ICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51
bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNp
Z25lZCBzb3VyY2VJbmRleCA9IDA7CisgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9
IDA7CisgICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b206IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRy
OworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGRv
ZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3VsZCBiZSBh
bnkgbm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJqZWN0IHRv
IERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4uZm9yRXhp
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2suCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRv
T1NSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5TGlz
dDo6U2l6ZTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWZvdW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpT
aXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNo
aWxkcmVuLmNoaWxkKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRn
ZShpLS0pOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5m
cmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KK307CisgICAgCitib29sIHBlcmZvcm1QaGFu
dG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8
UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRG
R1BoYW50b21SZW1vdmFsUGhhc2UuaCIKKyNpbmNsdWRlICJERkdDbGVhblVwUGhhc2UuaCIKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCkBAIC0zNywxMCArMzcsMTAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKK2NsYXNzIENsZWFuVXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6Ci0g
ICAgUGhhbnRvbVJlbW92YWxQaGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJwaGFudG9tIHJlbW92YWwiKQorICAgIENsZWFuVXBQaGFzZShHcmFwaCYgZ3JhcGgpCisg
ICAgICAgIDogUGhhc2UoZ3JhcGgsICJjbGVhbiB1cCIpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTQ4LDExOCArNDgsMzAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICgh
YmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIEFsbCBQaGlzIG5lZWQgdG8gYWxyZWFkeSBiZSBtYXJrZWQgYXMgcmVsZXZhbnQgdG8g
T1NSLgotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+cGhpc1tpXS0+ZmxhZ3MoKSAmIE5vZGVSZWxl
dmFudFRvT1NSKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoK
LSAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOiAvLyBGSVhNRTogVGhlIEdldExvY2FsIGNh
c2UgaXMgb25seSBuZWNlc3NhcnkgdW50aWwgd2UgZG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjcwNy4KLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NSKCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5k
ZXggPSAwOwogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOwogICAgICAgICAg
ICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewogICAgICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7CisgICAgICAgICAgICAgICAg
Ym9vbCBraWxsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVu
ID0gbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpOworICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbTogewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VJbmRleCA+IDEpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxhc3ROb2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4IC0gMik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24n
dCBuZWVkIHRvIHNwZWNpYWxpemUgZm9yIFBoYW50b20uIGxhc3ROb2RlIGNvdWxkIGJlIGFueSBu
b2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGlzbid0IHN1YmplY3QgdG8gRENF
LiBCdXQgd2Uga2VlcCBpdCBzaW1wbGUgZm9yIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChsYXN0Tm9kZS0+b3AoKSAhPSBQaGFudG9tCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgbGFzdE5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IG5vZGUtPm9yaWdpbi5mb3JFeGl0KQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBF
ZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBjaGVjay4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1Ip
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBBZGphY2VuY3lMaXN0OjpT
aXplOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0
Tm9kZS0+Y2hpbGRyZW4uY2hpbGQoaikubm9kZSgpID09IGVkZ2Uubm9kZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghZm91bmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fs
bG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICBjYXNl
IENoZWNrOgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAga2lsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2FzZSBDaGVjazogewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBj
YXNlIE11c3RHZW5lcmF0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRy
ZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2Nh
dG9yLmZyZWUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwor
ICAgICAgICAgICAgICAgIGlmIChraWxsKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
YWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7CiAgICAgICAgIH0KQEAgLTE2
OCwxMCArODAsMTAgQEAgcHVibGljOgogICAgIH0KIH07CiAgICAgCi1ib29sIHBlcmZvcm1QaGFu
dG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCitib29sIHBlcmZvcm1DbGVhblVwKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBoYW50b20gUmVt
b3ZhbCBQaGFzZSIpOwotICAgIHJldHVybiBydW5QaGFzZTxQaGFudG9tUmVtb3ZhbFBoYXNlPihn
cmFwaCk7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDbGVhbiBVcCBQ
aGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxDbGVhblVwUGhhc2U+KGdyYXBoKTsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbGVhblVwUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NsZWFuVXBQaGFzZS5oCShyZXZpc2lvbiAxODMyMDUpCShmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOjE4MzIwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorI2RlZmluZSBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBDbGVhbnMgdXAgdW5uZWNlc3Nh
cnkgUGhhbnRvbXMgYW5kIFBoYW50b24gY2hpbGRyZW4uIFRoaXMgcmVkdWNlcyBsaXZlIHJhbmdl
cywgYnV0IGFsc28sIGl0CisvLyBlbGltaW5hdGVzIG1hbnkgUGhhbnRvbXMgZW50aXJlbHkuIFRo
aXMgaW52YWxpZGF0ZXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisvLworLy8gVGhpcyBzaG91bGQgd29y
ayBvdmVyIGFsbCBJUiBmb3JtczsgaG93ZXZlciwgaW4gU1NBIGZvcm0gaXQncyBiZXR0ZXIgdG8g
cnVuCisvLyBQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlIHNpbmNlIGl0J3MgbW9yZSBwb3dl
cmZ1bC4KKworYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdQaGFudG9tUmVtb3ZhbFBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xlYW5VcFBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbGVhblVwUGhhc2UuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBoYXNl
X2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCisjaWZuZGVmIERGR0NsZWFuVXBQ
aGFzZV9oCisjZGVmaW5lIERGR0NsZWFuVXBQaGFzZV9oCiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IApAQCAtMzIsMTYgKzMyLDEyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
Y2xhc3MgR3JhcGg7CiAKLS8vIENsZWFucyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhh
bnRvbiBjaGlsZHJlbi4gVGhpcyByZWR1Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKLS8v
IGVsaW1pbmF0ZXMgbWFueSBQaGFudG9tcyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZl
bmVzcyBhbmFseXNpcy4KLS8vCi0vLyBUaGlzIHNob3VsZCB3b3JrIG92ZXIgYWxsIElSIGZvcm1z
OyBob3dldmVyLCBpbiBTU0EgZm9ybSBpdCdzIGJldHRlciB0byBydW4KLS8vIFBoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2Ugc2luY2UgaXQncyBtb3JlIHBvd2VyZnVsLgorLy8gQ2xlYW5zIHVw
IHVubmVlZGVkIG5vZGVzLCBsaWtlIGVtcHR5IENoZWNrcyBhbmQgUGhhbnRvbXMuCiAKLWJvb2wg
cGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJik7Citib29sIHBlcmZvcm1DbGVhblVwKEdyYXBo
Jik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCisjZW5kaWYgLy8gREZH
Q2xlYW5VcFBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5t
X3N0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbnRl
cnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIENhdGNoIHRoZSBmYWN0IHRoYXQgd2Ug
bWF5IGZpbHRlciBvbiBjZWxsLgotICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Q
aGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAg
ICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzLDggKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAg
ICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhJ
bkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZHJlbik7
CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJsb2Nr
LCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9Db25zdGFudFN0b3JhZ2VQb2ludGVyKHZpZXctPnZlY3RvcigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0Nyw3ICsxNDYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0R5bmFt
aWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjcsNyArMTY2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICBpZiAoYWxs
R29vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGlu
ZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFu
dG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE3OSw3ICsxNzgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheWlmeTogewogICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE4OCw3ICsxODcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fc3RydWN0dXJlLm9ubHlTdHJ1Y3R1cmUoKSAhPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsK
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTIwNCw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgY2FzZSBDaGVja05vdEVtcHR5OiB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0VtcHR5KQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgZWxpbWluYXRl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yMTQs
NyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlm
IChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYmIHJpZ2h0LmlzSW50MzIoKQogICAg
ICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVmdC5hc0ludDMyKCkp
IDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJpZ2h0LmFzSW50MzIoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTUxMiwxNCAr
NTExLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoISp2YWx1ZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmln
aW4gPSBub2RlLT5vcmlnaW47Ci0gICAgICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuID0g
bm9kZS0+Y2hpbGRyZW47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQobm9kZSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKCFjaGlsZHJlbi5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldExvY2FsKSB7CisgICAg
ICAgICAgICAgICAgLy8gTmVlZCB0byBwcmVzZXJ2ZSBieXRlY29kZSBsaXZlbmVzcyBpbiBUaHJl
YWRlZENQUyBmb3JtLiBUaGlzIHdvdWxkbid0IGJlIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAg
IC8vIGlmIGl0IHdhc24ndCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDA4Ni4KICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBvcmln
aW4sIGNoaWxkcmVuKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJ
bkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbUxvY2FsLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIE9wSW5mbyhub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5CbG9jaywgbm9kZS0+b3Jp
Z2luLCBub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0
YW50KG5vZGUsIHZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTY0MCwxMCArNjQxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3R5
cGUgJiB+U3BlY0NlbGwpIHsKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
Ci0gICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VWYWx1
ZS5tX3R5cGUgJiB+U3BlY0NlbGwpCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRD
aGVjayhpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOwogICAgIH0K
ICAgICAKICAgICB2b2lkIGFkZENoZWNrcygKQEAgLTY4Myw3ICs2ODIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICAgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKICAgICAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKLSAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIFVwc2lsb24gcGhpKCkgcG9pbnRl
ciIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJl
dmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyNyArNTAsMTEgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAgIAotICAgICAgICBp
ZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCi0gICAgICAgICAgICAgICAgZml4
dXBCbG9jayhibG9jayk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgbGlr
ZSBjbGVhblZhcmlhYmxlcywgYnV0IGhhcyBhIG11Y2ggc2ltcGxlciBhcHByb2FjaCB0byBHZXRM
b2NhbC4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9h
cmd1bWVudHNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBQaGFudG9t
ICYmIG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsg
YmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKLSAgICAgICAg
ICAgICAgICBmaXh1cEJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwotICAgICAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQor
ICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAorICAgICAgICBjbGVhblZh
cmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKwogICAgICAgICAvLyBKdXN0IGRvIGEgYmFz
aWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CkBAIC0xMDQs
MjIgKzg4LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChtX2dyYXBoLm1fZm9ybSkg
ewotICAgICAgICBjYXNlIFNTQToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgVGhyZWFkZWRDUFM6IHsKLSAgICAgICAgICAgIC8vIENsZWFuIHVwIHZhcmlh
YmxlIGxpbmtzIGZvciB0aGUgYmxvY2suIFdlIG5lZWQgdG8gZG8gdGhpcyBiZWZvcmUgdGhlIGFj
dHVhbCBEQ0UKLSAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBzZWUgR2V0TG9jYWxz
LCBzbyB3ZSBjYW4gYnlwYXNzIHRoZW0gaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUKLSAgICAgICAg
ICAgIC8vIHZhcnMtYXQtdGFpbCBwb2ludCB0byBhIEdldExvY2FsLCB0aGUgR2V0TG9jYWwgaXMg
ZGVhZCwgYnV0IHRoZSBQaGkgaXQgcG9pbnRzCi0gICAgICAgICAgICAvLyB0byBpcyBhbGl2ZS4K
LSAgICAgICAgICAgIAorCisgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQ
UykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwaGlJbmRleCA9IDA7IHBoaUluZGV4IDwg
YmxvY2stPnBoaXMuc2l6ZSgpOyArK3BoaUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFi
bG9jay0+cGhpc1twaGlJbmRleF0tPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGFjdHVhbGx5IGZyZWUgbm9kZXMgaGVyZS4gRXhjZXB0
IHRoYXQgaXQgcHJvYmFibHkKLSAgICAgICAgICAgICAgICAgICAgLy8gZG9lc24ndCBtYXR0ZXIs
IHNpbmNlIHdlIGRvbid0IGFkZCBhbnkgbm9kZXMgYWZ0ZXIgdGhpcyBwaGFzZS4KLSAgICAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjIzOQorICAgICAgICAgICAgICAgIE5vZGUqIHBoaSA9IGJsb2NrLT5waGlzW3BoaUluZGV4XTsK
KyAgICAgICAgICAgICAgICBpZiAoIXBoaS0+c2hvdWxkR2VuZXJhdGUoKSkgeworICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUocGhpKTsKICAgICAgICAgICAgICAg
ICAgICAgYmxvY2stPnBoaXNbcGhpSW5kZXgtLV0gPSBibG9jay0+cGhpcy5sYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLT5waGlzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC0xMjcsMTIgKzEwMSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNsZWFuVmFyaWFibGVzKGJsb2NrLT52YXJpYWJsZXNBdEhlYWQpOwogICAgICAgICAgICAg
Y2xlYW5WYXJpYWJsZXMoYmxvY2stPnZhcmlhYmxlc0F0VGFpbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGhpcyBoYXMgdG8gYmUgYSBmb3J3YXJkIGxvb3AgYmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgdGhlIGluc2VydGlvbiBzZXQuCkBAIC0xNDEsNDAgKzEwOSwyNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgICAgIGNh
c2UgWm9tYmllSGludDoKLSAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgbm90IGtpbGxhYmxl
LiAoVGhleSBvbmNlIHdlcmUuKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0OiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgewotICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxkcmVuKCk7IGNo
aWxkSWR4KyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghZWRnZSB8fCBlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
Q2hlY2ssIG5vZGUtPm9yaWdpbiwgZWRnZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldFJlZkNvdW50KDEpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hp
bGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgIGlmIChu
b2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZp
cnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4
XTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSB8
fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS5pc1Byb3ZlZCgpIHx8IGVkZ2Uud2ls
bE5vdEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4u
cmVtb3ZlRWRnZShpLS0pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVj
aywgbm9kZS0+b3JpZ2luLCBlZGdlKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2spOwor
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0UmVmQ291bnQoMSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9IH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAgICAgICBub2RlLT5zZXRS
ZWZDb3VudCgxKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
YmxvY2spOwpAQCAtMTg3LDE5ICsxMzksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSog
bm9kZSA9IHZhcmlhYmxlc1tpXTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYg
bm9kZS0+b3AoKSAhPSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQorICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdl
dExvY2FsKSB7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBQ
aGkgfHwgbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGVzW2ldID0gbm9kZTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyaWFibGVz
W2ldID0gMDsKKyAgICAgICAgICAgIHZhcmlhYmxlc1tpXSA9IG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw4IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9yIChtX2luZGV4SW5CbG9j
ayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5CbG9jaykg
ewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7
Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBmaXh1
cE5vZGUobV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgYWRkUGhhbnRvbXNJZk5l
Y2Vzc2FyeSgpOwogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9
CiAgICAgCkBAIC0xNDIsMTQgKzE0MCwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFZhbHVl
QWRkOiB7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQobm9kZSkpIHsK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChBcml0aEFkZCk7Ci0gICAgICAgICAgICAgICAg
bm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVO
dW1iZXJPckJvb2xlYW5FeHBlY3RpbmdEZWZpbmVkKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVh
bkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVh
bkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKEFyaXRo
QWRkKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OwogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI2OCwxMiArMjY0LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVPckJvb2xlYW5FZGdlKG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBCdXQgd2UgaGF2
ZSB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIHBoYW50b20nZCB1bnRpbCBhZnRlciB0
aGUKLSAgICAgICAgICAgICAgICAvLyBEb3VibGVBc0ludDMyIG5vZGUsIHdoaWNoIG9jY3VycyBh
ZnRlciB0aGUgRGl2L01vZCBub2RlIHRoYXQgdGhlIGNvbnZlcnNpb25zCi0gICAgICAgICAgICAg
ICAgLy8gd2lsbCBiZSBpbnNlcmVkIG9uLgotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhh
bnRvbShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwotICAgICAgICAgICAgICAgIGFkZFJlcXVpcmVk
UGhhbnRvbShub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwotCiAgICAgICAgICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBkbyByZWYnaW5nIG9uIHRoZSBjaGlsZHJlbiBiZWNhdXNlIHdlJ3JlIHN0
ZWFsaW5nIHRoZW0gZnJvbQogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBkaXZpc2lv
bi4KICAgICAgICAgICAgICAgICBOb2RlKiBuZXdEaXZpc2lvbiA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCkBAIC04NDUsNyArODM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywg
bm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgT3RoZXJVc2UpKTsKICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxP
dGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBo
LmNvbnZlcnRUb0NvbnN0YW50KApAQCAtOTk2LDcgKzk4Niw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
Y2FzZSBDaGVjazogewogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKICAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgpAQCAtMTAxMCw2ICs5OTksMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBQ
aGFudG9tOgorICAgICAgICAgICAgLy8gUGhhbnRvbXMgYXJlIG1lYW5pbmdsZXNzIHBhc3QgRml4
dXAuIFdlIHJlY3JlYXRlIHRoZW0gb24tZGVtYW5kIGluIHRoZSBiYWNrZW5kLgorICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEZp
YXRJbnQ1MjogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CiAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwpAQCAtMTA3Myw3ICsxMDY3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1N0cmluZzoKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAogICAgICAg
ICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgU3RyaW5nVXNlKSk7CiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4o
dHJ1ZSkpOwogICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPFN0cmluZ1VzZT4o
bm9kZSk7CkBAIC0xMDgzLDcgKzEwNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzT2Jq
ZWN0OgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmpl
Y3QoKSkgewogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENo
ZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBPYmplY3RVc2UpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRU
b0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2
ZVVzZUtpbmRPbk5vZGU8T2JqZWN0VXNlPihub2RlKTsKQEAgLTExNTYsMjggKzExNTAsMjggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIFJlZlB0cjxUeXBlU2V0PiB0eXBlU2V0ID0gbm9kZS0+dHlw
ZUxvY2F0aW9uKCktPm1faW5zdHJ1Y3Rpb25UeXBlU2V0OwogICAgICAgICAgICAgUnVudGltZVR5
cGVNYXNrIHNlZW5UeXBlcyA9IHR5cGVTZXQtPnNlZW5UeXBlcygpOwogICAgICAgICAgICAgaWYg
KHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVNYWNoaW5lSW50KSkgewotICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVNYWNoaW5lSW50
KSkgewotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5
cGVDb25mb3JtVG8oVHlwZVN0cmluZykpIHsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFuKSkgewotICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVt
b3ZlKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVVbmRlZmluZWQgfCBUeXBlTnVsbCkgJiYgKHNlZW5UeXBlcyAmIFR5cGVVbmRlZmluZWQp
ICYmIChzZWVuVHlwZXMgJiBUeXBlTnVsbCkpIHsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9DaGVjaygpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8T3RoZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCkpIHsKICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgc2V0ID0gdHlwZVNldC0+c3RydWN0dXJlU2V0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNl
dCkpOwogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUobV9n
cmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCkBAIC0xMjk0LDcgKzEyODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gZGVj
aXNpb24gcHJvY2VzcyBtdWNoIGVhc2llci4KICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25O
b2RlPFN0cmluZ1VzZT4oZWRnZS5ub2RlKCkpOwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBo
YW50b20sIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5v
ZGUoKSwgU3RyaW5nVXNlKSk7CiAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoS25vd25TdHJp
bmdVc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM5Niw5ICsxMzkwLDYgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIGxlZnRVc2VLaW5kPgogICAgIGJvb2wgYXR0ZW1wdFRv
TWFrZUZhc3RTdHJpbmdBZGQoTm9kZSogbm9kZSwgRWRnZSYgbGVmdCwgRWRnZSYgcmlnaHQpCiAg
ICAgewotICAgICAgICBOb2RlKiBvcmlnaW5hbExlZnQgPSBsZWZ0Lm5vZGUoKTsKLSAgICAgICAg
Tm9kZSogb3JpZ2luYWxSaWdodCA9IHJpZ2h0Lm5vZGUoKTsKLSAgICAgICAgCiAgICAgICAgIEFT
U0VSVChsZWZ0VXNlS2luZCA9PSBTdHJpbmdVc2UgfHwgbGVmdFVzZUtpbmQgPT0gU3RyaW5nT2Jq
ZWN0VXNlIHx8IGxlZnRVc2VLaW5kID09IFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChpc1N0cmluZ09iamVjdFVzZTxsZWZ0VXNlS2luZD4oKSAmJiAhY2Fu
T3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKQEAgLTE0
MzMsMTIgKzE0MjQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmlnaHQuc2V0Tm9kZSh0b1N0
cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIFdlJ3JlIGRvaW5nIGNoZWNr
cyB1cCB0aGVyZSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUKLSAgICAgICAgLy8g
Km9yaWdpbmFsKiBpbnB1dHMgdG8gdGhlIGFkZGl0aW9uIGFyZSBsaXZlIHVwIHRvIGhlcmUuCi0g
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIEVkZ2Uo
b3JpZ2luYWxMZWZ0KSwgRWRnZShvcmlnaW5hbFJpZ2h0KSk7Ci0gICAgICAgIAogICAgICAgICBj
b252ZXJ0VG9NYWtlUm9wZShub2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTU2Miw3ICsxNTQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmIChhcnJheU1v
ZGUudHlwZSgpID09IEFycmF5OjpTdHJpbmcpIHsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQ
aGFudG9tLCBvcmlnaW4sIEVkZ2UoYXJyYXksIFN0cmluZ1VzZSkpOworICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbiwgRWRnZShhcnJheSwgU3Ry
aW5nVXNlKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGFycmF5TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3JhcGgsIG9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIApAQCAtMTc3Myw3ICsxNzU4LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIAogICAgICAg
ICBlZGdlID0gRWRnZShuZXdOb2RlLCBLbm93bkludDMyVXNlKTsKLSAgICAgICAgYWRkUmVxdWly
ZWRQaGFudG9tKG5vZGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIGZpeEludE9yQm9vbGVhbkVk
Z2UoRWRnZSYgZWRnZSkKQEAgLTE3OTUsNyArMTc3OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlKG5vZGUsIHVzZUtpbmQpOwogICAgICAgICAKICAgICAgICAgZWRn
ZSA9IEVkZ2UobmV3Tm9kZSwgSW50MzJVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20o
bm9kZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4RG91YmxlT3JCb29sZWFuRWRnZShFZGdl
JiBlZGdlKQpAQCAtMTgxNyw3ICsxODAwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVz
ZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRn
ZShuZXdOb2RlLCBEb3VibGVSZXBVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9k
ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdHJ1bmNhdGVDb25zdGFudFRvSW50MzIoRWRnZSYg
ZWRnZSkKQEAgLTE5OTcsMTEgKzE5NzksOSBAQCBwcml2YXRlOgogICAgICAgICBtX2Jsb2NrID0g
YmxvY2s7CiAgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8
IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKICAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUgPSBibG9jay0+YXQobV9pbmRleEluQmxvY2spOwotICAgICAgICAgICAgYWRkUGhhbnRv
bXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgdHJ5VG9SZWxheFJlcHJlc2VudGF0aW9uKG1f
Y3VycmVudE5vZGUpOwogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFw
aCwgbV9jdXJyZW50Tm9kZSwgaW5qZWN0VHlwZUNvbnZlcnNpb25zRm9yRWRnZSk7CiAgICAgICAg
IH0KLSAgICAgICAgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpOwogICAgICAgICBtX2luc2VydGlv
blNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCkBAIC0yMDE1LDcgKzE5OTUsNiBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAg
IGNhc2UgTW92SGludDoKLSAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNr
OgogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50
Tm9kZSwgZml4RWRnZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjA3
Niw4ICsyMDU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVS
ZXN1bHQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uubm9kZSgpKTsKLQogICAgICAgICAgICAgaWYgKGVk
Z2UtPmlzTnVtYmVyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZUNvbnN0YW50LCBub2RlLT5vcmlnaW4sCkBAIC0y
MTAwLDggKzIwNzcsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUy
UmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7Ci0KICAgICAgICAgICAgIGlmIChl
ZGdlLT5pc01hY2hpbmVJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCkBAIC0y
MTI4LDggKzIxMDMsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFlZGdlLT5oYXNEb3Vi
bGVSZXN1bHQoKSAmJiAhZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uu
bm9kZSgpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJl
c3VsdCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURv
dWJsZSwgVmFsdWVSZXAsIG5vZGUtPm9yaWdpbiwKQEAgLTIxNDUsMzIgKzIxMTgsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgfSB9CiAgICAgfQogICAgIAotICAgIHZvaWQgYWRkUmVxdWlyZWRQaGFu
dG9tKE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICBtX3JlcXVpcmVkUGhhbnRvbXMuYXBwZW5k
KG5vZGUpOwotICAgIH0KLQotICAgIHZvaWQgYWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSgpCi0gICAg
ewotICAgICAgICBpZiAobV9yZXF1aXJlZFBoYW50b21zLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcmVxdWlyZWRQ
aGFudG9tcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX3JlcXVp
cmVkUGhhbnRvbXNbaV07Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX3JlcXVpcmVkUGhhbnRvbXMucmVzaXplKDAp
OwotICAgIH0KLSAgICAKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIHVuc2lnbmVkIG1f
aW5kZXhJbkJsb2NrOwogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CiAgICAgSW5zZXJ0aW9uU2V0
IG1faW5zZXJ0aW9uU2V0OwogICAgIGJvb2wgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZDsKLSAgICBW
ZWN0b3I8Tm9kZSosIDM+IG1fcmVxdWlyZWRQaGFudG9tczsKIH07CiAgICAgCiBib29sIHBlcmZv
cm1GaXh1cChHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MywyNiArNTkzLDYgQEAgdm9pZCBHcmFw
aDo6cmVzZXRSZWFjaGFiaWxpdHkoKQogICAgIGRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogfQog
Ci12b2lkIEdyYXBoOjptZXJnZVJlbGV2YW50VG9PU1IoKQotewotICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Ci0gICAgICAgIGZvciAoTm9kZSog
bm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1l
cmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRIaW50OgotICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlZkNvdW50Q2FsY3VsYXRvciB7CkBAIC02MjUsMTIg
KzYwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGN1bGF0ZSgpCiAgICAgewogICAgICAgICAv
LyBGaXJzdCByZXNldCB0aGUgY291bnRzIHRvIDAgZm9yIGFsbCBub2Rlcy4KLSAgICAgICAgLy8K
LSAgICAgICAgLy8gQWxzbyB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcHJldGVuZCB0aGF0IENo
ZWNrIG5vZGVzIGFyZSBub3QgTm9kZU11c3RHZW5lcmF0ZS4gQ2hlY2sKLSAgICAgICAgLy8gbm9k
ZXMgYXJlIE11c3RHZW5lcmF0ZSBiZWNhdXNlIHRoZXkgYXJlIGV4ZWN1dGVkIGZvciBlZmZlY3Qs
IGJ1dCB0aGV5IGZvbGxvdyB0aGUgc2FtZQotICAgICAgICAvLyBEQ0UgcnVsZXMgYXMgbm9kZXMg
dGhhdCBhcmVuJ3QgTXVzdEdlbmVyYXRlOiB0aGV5IG9ubHkgY29udHJpYnV0ZSB0byB0aGUgcmVm
IGNvdW50IG9mCi0gICAgICAgIC8vIHRoZWlyIGNoaWxkcmVuIGlmIHRoZSBlZGdlcyByZXF1aXJl
IGNoZWNrcy4gTm9uLWNoZWNraW5nIGVkZ2VzIGFyZSByZW1vdmVkLiBOb3RlIHRoYXQKLSAgICAg
ICAgLy8gZm9yIGFueSBDaGVja3MgbGVmdCBvdmVyLCB0aGlzIHBoYXNlIHdpbGwgdHVybiB0aGVt
IGJhY2sgaW50byBOb2RlTXVzdEdlbmVyYXRlLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5k
ZXgpIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9j
a0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2spCkBAIC02NTQsMTEgKzYyOCw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBu
b2RlLCBmaW5kVHlwZUNoZWNrUm9vdCk7CiAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+Zmxh
Z3MoKSAmIE5vZGVNdXN0R2VuZXJhdGUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVjaykgewotICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCB0cmVhdCBDaGVjayBub2RlcyBhcyBNdXN0R2VuZXJhdGUuIFdl
IHdpbGwgZ2xhZGx5Ci0gICAgICAgICAgICAgICAgICAgIC8vIGtpbGwgdGhlbSBvZmYgaW4gdGhp
cyBwaGFzZS4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmICghbm9kZS0+cG9zdGZpeFJlZigpKQogICAgICAgICAgICAg
ICAgICAgICBtX3dvcmtsaXN0LmFwcGVuZChub2RlKTsKICAgICAgICAgICAgIH0KQEAgLTEyNjMs
MTIgKzEyMzIsNiBAQCB2b2lkIEdyYXBoOjpjb252ZXJ0VG9Db25zdGFudChOb2RlKiBub2RlCiB7
CiAgICAgaWYgKHZhbHVlLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVk
KHZhbHVlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgaWYgKG1fZm9ybSA9PSBUaHJlYWRlZENQUykgewot
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkKLSAgICAgICAgICAgIGRldGhyZWFk
KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+aGFzVmFyaWFibGVB
Y2Nlc3NEYXRhKCp0aGlzKSk7Ci0gICAgfQogICAgIG5vZGUtPmNvbnZlcnRUb0NvbnN0YW50KHZh
bHVlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTIsOCArNDUyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGV0ZXJtaW5l
UmVhY2hhYmlsaXR5KCk7CiAgICAgdm9pZCByZXNldFJlYWNoYWJpbGl0eSgpOwogICAgIAotICAg
IHZvaWQgbWVyZ2VSZWxldmFudFRvT1NSKCk7Ci0gICAgCiAgICAgdm9pZCBjb21wdXRlUmVmQ291
bnRzKCk7CiAgICAgCiAgICAgdW5zaWduZWQgdmFyQXJnTnVtQ2hpbGRyZW4oTm9kZSogbm9kZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2
aXNpb24gMTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25T
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSwyNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBpbnNlcnRDb25zdGFudEZvclVzZShpbmRleCwgb3JpZ2luLCBqc1VuZGVmaW5lZCgp
LCB1c2VLaW5kKTsKICAgICB9CiAgICAgCisgICAgTm9kZSogaW5zZXJ0Q2hlY2soc2l6ZV90IGlu
ZGV4LCBOb2RlT3JpZ2luIG9yaWdpbiwgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbikKKyAgICB7Cisg
ICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uanVzdENoZWNrcygpOworICAgICAgICBpZiAoY2hp
bGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBpbnNlcnROb2RlKGluZGV4LCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbiwgY2hpbGRyZW4p
OworICAgIH0KKyAgICAKKyAgICBOb2RlKiBpbnNlcnRDaGVjayhzaXplX3QgaW5kZXgsIE5vZGUq
IG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0Q2hlY2soaW5kZXgsIG5vZGUtPm9y
aWdpbiwgbm9kZS0+Y2hpbGRyZW4pOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBpbnNlcnRDaGVj
ayhzaXplX3QgaW5kZXgsIE5vZGVPcmlnaW4gb3JpZ2luLCBFZGdlIGVkZ2UpCisgICAgeworICAg
ICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCisgICAgICAgICAgICByZXR1cm4gaW5zZXJ0
Tm9kZShpbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIGVkZ2UpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJs
b2NrKQogICAgIHsKICAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlv
bnMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21i
aW5pbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQXJyYXlCb3Vu
ZHM6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlLiBCdXQgZm9y
IG5vdyB3ZSBqdXN0IGFzc2VydCB0aGF0J3MgdGhlIGNhc2UuCiAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbm9kZSwgIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICAg
ICAgCi0gICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFBoYW50b20s
IG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CisgICAgICAgIG5vZGVSZWYgPSBtX2dy
YXBoLmFkZE5vZGUoU3BlY05vbmUsIENoZWNrLCBvcmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRy
ZW4pOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSwxNSBAQCBib29sIE5vZGU6Omhhc1ZhcmlhYmxlQWNjZXNzRGF0YShHcmFwaCYgCiAgICAgfQog
fQogCit2b2lkIE5vZGU6OnJlbW92ZSgpCit7CisgICAgQVNTRVJUKCEoZmxhZ3MoKSAmIE5vZGVI
YXNWYXJBcmdzKSk7CisgICAgCisgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5qdXN0Q2hlY2tzKCk7
CisgICAgCisgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2spOworfQorCiB2b2lkIE5vZGU6
OmNvbnZlcnRUb0lkZW50aXR5KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjaGlsZDEoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTgzNDQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
NywxNSArNDA3LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX2ZsYWdzID0gZGVmYXVsdEZs
YWdzKG9wKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbnZlcnRUb1BoYW50b20oKQotICAgIHsKLSAg
ICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgY29udmVydFRvQ2hlY2soKQotICAgIHsKLSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
Q2hlY2spOwotICAgIH0KKyAgICB2b2lkIHJlbW92ZSgpOwogCiAgICAgdm9pZCBjb252ZXJ0VG9D
aGVja1N0cnVjdHVyZShTdHJ1Y3R1cmVTZXQqIHNldCkKICAgICB7CkBAIC00MjUsNyArNDE3LDcg
QEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGgoTm9kZSogb3RoZXIp
CiAgICAgewotICAgICAgICBjb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIHJlbW92ZSgpOwog
ICAgICAgICBzZXRSZXBsYWNlbWVudChvdGhlcik7CiAgICAgfQogCkBAIC0xNTU3LDIwICsxNTQ5
LDYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCB3aWxsSGF2ZUNvZGVHZW5Pck9TUigpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBTZXRMb2NhbDoKLSAgICAgICAgY2FzZSBNb3ZIaW50
OgotICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgY2FzZSBQaGFudG9tOgotICAgICAgICAgICAgcmV0dXJuIGNoaWxkMSgpLnVzZUtpbmRV
bmNoZWNrZWQoKSAhPSBVbnR5cGVkVXNlIHx8IGNoaWxkMigpLnVzZUtpbmRVbmNoZWNrZWQoKSAh
PSBVbnR5cGVkVXNlIHx8IGNoaWxkMygpLnVzZUtpbmRVbmNoZWNrZWQoKSAhPSBVbnR5cGVkVXNl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHNob3VsZEdlbmVyYXRlKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgYm9vbCBpc1NlbWFudGljYWxseVNraXBwYWJs
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBDb3VudEV4ZWN1dGlvbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTgzNDQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsMTIgKzY1LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAogI2RlZmluZSBOb2RlQXJpdGhGbGFnc01hc2sgICAgICAgICAgICAgICAoTm9kZUJlaGF2aW9y
TWFzayB8IE5vZGVCeXRlY29kZUJhY2tQcm9wTWFzaykKIAotI2RlZmluZSBOb2RlUmVsZXZhbnRU
b09TUiAgICAgICAgICAgICAgIDB4MTAwMDAKKyNkZWZpbmUgTm9kZUlzRmx1c2hlZCAgICAgICAg
ICAgICAgICAgICAweDEwMDAwIC8vIENvbXB1dGVkIGJ5IENQU1JldGhyZWFkaW5nUGhhc2UsIHdp
bGwgdGVsbCB5b3Ugd2hpY2ggbG9jYWwgbm9kZXMgYXJlIGJhY2t3YXJkcy1yZWFjaGFibGUgZnJv
bSBhIEZsdXNoLgogCi0jZGVmaW5lIE5vZGVJc0ZsdXNoZWQgICAgICAgICAgICAgICAgICAgMHgy
MDAwMCAvLyBDb21wdXRlZCBieSBDUFNSZXRocmVhZGluZ1BoYXNlLCB3aWxsIHRlbGwgeW91IHdo
aWNoIGxvY2FsIG5vZGVzIGFyZSBiYWNrd2FyZHMtcmVhY2hhYmxlIGZyb20gYSBGbHVzaC4KLQot
I2RlZmluZSBOb2RlTWlzY0ZsYWcxICAgICAgICAgICAgICAgICAgIDB4NDAwMDAKLSNkZWZpbmUg
Tm9kZU1pc2NGbGFnMiAgICAgICAgICAgICAgICAgICAweDgwMDAwCisjZGVmaW5lIE5vZGVNaXNj
RmxhZzEgICAgICAgICAgICAgICAgICAgMHgyMDAwMAorI2RlZmluZSBOb2RlTWlzY0ZsYWcyICAg
ICAgICAgICAgICAgICAgIDB4NDAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMyAgICAgICAgICAg
ICAgICAgICAweDgwMDAwCiAKIHR5cGVkZWYgdWludDMyX3QgTm9kZUZsYWdzOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxODM0NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8q
IGJhc2ljIGJsb2NrIG1pZ2h0IGhhdmUgcmVhZCBhIGxvY2FsIHZhcmlhYmxlIGluIGJ5dGVjb2Rl
LiBXZSBvbmx5IHJlbW92ZSBHZXRMb2NhbHMgaWYgaXQgKi9cCiAgICAgLyogaXMgcmVkdW5kYW50
IGJlY2F1c2Ugb2YgYW4gZWFybGllciBHZXRMb2NhbCBvciBTZXRMb2NhbCBpbiB0aGUgc2FtZSBi
bG9jay4gV2UgY291bGQgbWFrZSAqL1wKICAgICAvKiB0aGVzZSBub3QgTXVzdEdlbmVyYXRlIGFu
ZCB1c2UgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgYW5hbHlzaXMgdG8gaW5zZXJ0IFBoYW50b21Mb2Nh
bHMgaW4gKi9cCi0gICAgLyogdGhlIHNhbWUgd2F5IHRoYXQgd2UgaW5zZXJ0IFBoYW50b21zLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDg2ICovXAorICAgIC8q
IHRoZSBzYW1lIHdheSB0aGF0IHdlIGluc2VydCBQaGFudG9tcy4gVGhhdCdzIGhhcmQgYW5kIHBy
b2JhYmx5IG5vdCBwcm9maXRhYmxlLiBTZWUgKi9cCisgICAgLyogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDA4NiAqL1wKICAgICBtYWNybyhHZXRMb2NhbCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFNldExvY2FsLCAwKSBc
CiAgICAgXApAQCAtNzIsOCArNzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oWm9tYmllSGludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBo
YW50b20sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVjaywgTm9kZU11c3RHZW5l
cmF0ZSkgLyogVXNlZCBpZiB3ZSB3YW50IGp1c3QgYSB0eXBlIGNoZWNrIGJ1dCBub3QgbGl2ZW5l
c3MuIE5vbi1jaGVja2luZyB1c2VzIHdpbGwgYmUgcmVtb3ZlZC4gKi9cCi0gICAgbWFjcm8oVXBz
aWxvbiwgTm9kZVJlbGV2YW50VG9PU1IpIFwKLSAgICBtYWNybyhQaGksIE5vZGVSZWxldmFudFRv
T1NSKSBcCisgICAgbWFjcm8oVXBzaWxvbiwgMCkgXAorICAgIG1hY3JvKFBoaSwgMCkgXAogICAg
IG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbUxvY2Fs
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApAQCAtMjgxLDEwICsyODIsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZUFjdGl2YXRpb24sIE5v
ZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhDcmVhdGVEaXJlY3RBcmd1bWVudHMsIE5v
ZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKFBoYW50b21EaXJlY3RBcmd1bWVudHMsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKFBoYW50b21EaXJlY3RBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3Vs
dEpTKSBcCi0gICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01ODUsNyArNTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0LT5pc1BoYW50b21PYmplY3RBbGxvY2F0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpA
QCAtNzk1LDcgKzc5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2FzZSBDaGVj
azoKICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVk
ZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKLSNpbmNsdWRlICJE
RkdQaGFzZS5oIgotI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCi0j
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgotI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1zdGF0aWMgY29uc3Qg
Tm9kZUZsYWdzIE5vZGVOZWVkc1BoYW50b20gPSBOb2RlTWlzY0ZsYWcxOwotCi1jbGFzcyBQaGFu
dG9tQ2Fub25pY2FsaXphdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFz
ZShncmFwaCwgInBoYW50b20gY2Fub25pY2FsaXphdGlvbiIpCi0gICAgewotICAgIH0KLSAgICAK
LSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBKTsKLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguY2xlYXJGbGFnc09uQWxsTm9kZXMoTm9k
ZU5lZWRzUGhhbnRvbSB8IE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgbV9ncmFwaC5tZXJn
ZVJlbGV2YW50VG9PU1IoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAg
ICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOwotICAgICAgICAgICAgdW5z
aWduZWQgdGFyZ2V0SW5kZXggPSAwOwotICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwg
YmxvY2stPnNpemUoKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQo
c291cmNlSW5kZXgrKyk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUGhhbnRv
bSB8fCBub2RlLT5vcCgpID09IENoZWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlZGdlLT5mbGFncygpICYgTm9k
ZVJlbGV2YW50VG9PU1IpICYmIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEEgUGhhbnRvbSBvbiBhIG5vZGUgdGhhdCBpcyBSZWxldmFudFRv
T1NSIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBrZWVwCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gYSBQaGFudG9tIG9uIHRoaXMgbm9kZSBpbnN0ZWFkIG9mIGp1c3QgaGF2aW5nIGEgQ2hl
Y2suCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZS0+bWVyZ2VGbGFncyhOb2RlTmVl
ZHNQaGFudG9tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBjaGVjay4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRn
ZShpLS0pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2so
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldElu
ZGV4KyspID0gbm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJsb2NrLT5yZXNpemUo
dGFyZ2V0SW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBJbnNlcnRpb25TZXQg
aW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAg
IGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2st
PnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxv
Y2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBO
b2RlTmVlZHNQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUs
IFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
YmxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci19OwotICAgIAotYm9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmIGdy
YXBoKQotewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBD
YW5vbmljYWxpemF0aW9uIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21DYW5v
bmljYWxpemF0aW9uUGhhc2U+KGdyYXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5oCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9oCi0jZGVmaW5lIERGR1BoYW50b21D
YW5vbmljYWxpemF0aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIFJlcGxhY2VzIGFs
bCBwcmUtZXhpc3RpbmcgUGhhbnRvbXMgd2l0aCBDaGVja3Mgb3IgcmVtb3ZlcyB0aGVtIGlmIHRo
ZSBDaGVjayBpcyB1bm5lY2Vzc2FyeS4gSWYKLS8vIHRoZSBQaGFudG9tIHdhcyBuZWNlc3Nhcnkg
KGl0IHVzZXMgYSBub2RlIHRoYXQgaXMgcmVsZXZhbnQgdG8gT1NSKSB0aGVuIHRoZSBQaGFudG9t
IGlzIGhvaXN0ZWQKLS8vIHRvIGp1c3QgYmVsb3cgdGhlIG5vZGUuCi0vLwotLy8gVGhpcyBwaGFz
ZSBpcyBvbmx5IHZhbGlkIGluIFNTQSwgYmVjYXVzZSBpdCdzIG9ubHkgaW4gU1NBIHRoYXQgUGhh
bnRvbXMgYXJlIGlnbm9yZWQgZm9yIHRoZQotLy8gcHVycG9zZSBvZiBsaXZlbmVzcy1hdC1zb21l
LXBvaW50IGFuZCBhcmUgb25seSB1c2VkIGZvciBhYnNvbHV0ZSBsaXZlbmVzcy4KLS8vCi0vLyBU
aGlzIHBoYXNlIG1ha2VzIGEgbG90IG9mIHRoaW5ncyBlYXNpZXIsIGxpa2UgQ0ZHIHNpbXBsaWZp
Y2F0aW9uOiB5b3UgZG9uJ3QgaGF2ZSB0byBpbnNlcnQgYW55Ci0vLyBwaGFudG9tcyB3aGVuIGpl
dHRpc29uaW5nIGEgQ0ZHIGVkZ2UuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21DYW5vbmljYWxpemF0
aW9uKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRv
bVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2Uu
aCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLSNpbmNs
dWRlICJERkdJbnNlcnRpb25TZXQuaCIKLSNpbmNsdWRlICJERkdQaGFzZS5oIgotI2luY2x1ZGUg
IkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHVmFyaWFibGVB
Y2Nlc3NEYXRhRHVtcC5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBQaGFudG9tUmVtb3ZhbFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKLXB1YmxpYzoKLSAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdyYXBoJiBncmFwaCkK
LSAgICAgICAgOiBQaGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9j
aykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Ly8gQWxsIFBoaXMgbmVlZCB0byBhbHJlYWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1Iu
Ci0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50
VG9PU1IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSog
bm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgotICAg
ICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBp
cyBvbmx5IG5lY2Vzc2FyeSB1bnRpbCB3ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NzA3LgotICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhO
b2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9n
cmFwaC5tZXJnZVJlbGV2YW50VG9PU1IoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewot
ICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOwotICAgICAg
ICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXggPSAwOwotICAgICAgICAgICAgd2hpbGUgKHNvdXJj
ZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBi
bG9jay0+YXQoc291cmNlSW5kZXgrKyk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNv
dXJjZUluZGV4ID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9j
ay0+YXQoc291cmNlSW5kZXggLSAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3Ig
UGhhbnRvbS4gbGFzdE5vZGUgY291bGQgYmUgYW55IG5vZGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBm
b3Igbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBo
YW50b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZv
ckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVu
LmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGFzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5u
b2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2FzZSBDaGVjazogewotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghZWRnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYmxvY2stPmF0KHRhcmdldEluZGV4KyspID0g
bm9kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJsb2NrLT5yZXNpemUodGFyZ2V0SW5k
ZXgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gY2hhbmdlZDsKLSAgICB9
Ci19OwotICAgIAotYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3JhcGgmIGdyYXBoKQotewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBSZW1vdmFsIFBo
YXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21SZW1vdmFsUGhhc2U+KGdyYXBoKTsK
LX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQ
aGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRv
bVJlbW92YWxQaGFzZS5oCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0jZGVmaW5lIERGR1BoYW50b21SZW1vdmFs
UGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIENsZWFucyB1cCB1bm5lY2Vzc2FyeSBQaGFu
dG9tcyBhbmQgUGhhbnRvbiBjaGlsZHJlbi4gVGhpcyByZWR1Y2VzIGxpdmUgcmFuZ2VzLCBidXQg
YWxzbywgaXQKLS8vIGVsaW1pbmF0ZXMgbWFueSBQaGFudG9tcyBlbnRpcmVseS4gVGhpcyBpbnZh
bGlkYXRlcyBsaXZlbmVzcyBhbmFseXNpcy4KLS8vCi0vLyBUaGlzIHNob3VsZCB3b3JrIG92ZXIg
YWxsIElSIGZvcm1zOyBob3dldmVyLCBpbiBTU0EgZm9ybSBpdCdzIGJldHRlciB0byBydW4KLS8v
IFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ugc2luY2UgaXQncyBtb3JlIHBvd2VyZnVsLgot
Ci1ib29sIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR1Bo
YW50b21SZW1vdmFsUGhhc2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
aCIKICNpbmNsdWRlICJERkdDU0VQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0NsZWFuVXBQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ3Jp
dGljYWxFZGdlQnJlYWtpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0RDRVBoYXNlLmgiCkBAIC01
MSwxMyArNTIsMTAgQEAKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYW50b21JbnNlcnRpb25Q
aGFzZS5oIgotI2luY2x1ZGUgIkRGR1BoYW50b21SZW1vdmFsUGhhc2UuaCIKICNpbmNsdWRlICJE
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmgiCi0j
aW5jbHVkZSAiREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAi
REZHU1NBQ29udmVyc2lvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1N0YWNrTGF5b3V0UGhhc2UuaCIKQEAgLTMxOCw3ICszMTYsNyBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIHBlcmZvcm1U
aWVyVXBDaGVja0luamVjdGlvbihkZmcpOwogCiAgICAgICAgIHBlcmZvcm1TdG9yZUJhcnJpZXJF
bGlzaW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChkZmcpOworICAgICAg
ICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmcoZGZn
KTsKICAgICAgICAgcGVyZm9ybURDRShkZmcpOwogICAgICAgICBwZXJmb3JtUGhhbnRvbUluc2Vy
dGlvbihkZmcpOwpAQCAtMzQ0LDcgKzM0Miw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgcGVyZm9ybVBoYW50b21SZW1vdmFsKGRmZyk7IC8vIFJlZHVjZSB0
aGUgZ3JhcGggc2l6ZSBhIGJpdC4KKyAgICAgICAgcGVyZm9ybUNsZWFuVXAoZGZnKTsgLy8gUmVk
dWNlIHRoZSBncmFwaCBzaXplIGEgYml0LgogICAgICAgICBwZXJmb3JtQ3JpdGljYWxFZGdlQnJl
YWtpbmcoZGZnKTsKICAgICAgICAgcGVyZm9ybUxvb3BQcmVIZWFkZXJDcmVhdGlvbihkZmcpOwog
ICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmcoZGZnKTsKQEAgLTM1OSw3ICszNTcsNyBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIHBlcmZvcm1M
aXZlbmVzc0FuYWx5c2lzKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAg
cGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwotICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb24oZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgbG90LgorICAgICAg
ICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCiAg
ICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgY2hhbmdlZCB8PSBwZXJmb3JtU3RyZW5n
dGhSZWR1Y3Rpb24oZGZnKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU9iamVjdEFsbG9j
YXRpb25TaW5raW5nKCkpIHsKQEAgLTM4MSw3ICszNzksNyBAQCBQbGFuOjpDb21waWxhdGlvblBh
dGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIC8vIHRoZW4gd2UnZCBuZWVkIHRvIGRvIHNv
bWUgc2ltcGxlIFNTQSBmaXgtdXAuCiAgICAgICAgIHBlcmZvcm1MSUNNKGRmZyk7CiAgICAgICAg
IAotICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oZGZnKTsKKyAgICAgICAg
cGVyZm9ybUNsZWFuVXAoZGZnKTsKICAgICAgICAgcGVyZm9ybUludGVnZXJDaGVja0NvbWJpbmlu
ZyhkZmcpOwogICAgICAgICBwZXJmb3JtR2xvYmFsQ1NFKGRmZyk7CiAgICAgICAgIApAQCAtMzkw
LDE1ICszODgsMTEgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgog
ICAgICAgICBkZmcubV9maXhwb2ludFN0YXRlID0gRml4cG9pbnRDb252ZXJnZWQ7CiAgICAgICAg
IAogICAgICAgICBwZXJmb3JtU3RvcmVCYXJyaWVyRWxpc2lvbihkZmcpOwotICAgICAgICBwZXJm
b3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oZGZnKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNz
QW5hbHlzaXMoZGZnKTsKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwotICAgICAgICBpZiAoT3B0
aW9uczo6dmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3MoKSkKLSAgICAgICAgICAgIHBlcmZvcm1S
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjplbmFi
bGVNb3ZIaW50UmVtb3ZhbCgpKSB7CisgICAgICAgIGlmIChPcHRpb25zOjplbmFibGVNb3ZIaW50
UmVtb3ZhbCgpKQogICAgICAgICAgICAgcGVyZm9ybU1vdkhpbnRSZW1vdmFsKGRmZyk7Ci0gICAg
ICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oZGZnKTsKLSAgICAgICAgfQor
ICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtRENFKGRmZyk7IC8v
IFdlIHJlbHkgb24gdGhpcyB0byBraWxsIGRlYWQgY29kZSB0aGF0IHdvbid0IGJlIHJlY29nbml6
ZWQgYXMgZGVhZCBieSBMTFZNLgogICAgICAgICBwZXJmb3JtU3RhY2tMYXlvdXQoZGZnKTsKICAg
ICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgS2lsbFN0YWNrLCBu
b2RlLT5vcmlnaW4sIE9wSW5mbyhub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwub2Zmc2V0
KCkpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZh
bGlkYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVk
ZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1
ZGUgIkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNz
IFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci1wdWJsaWM6
Ci0gICAgUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAg
ICAgOiBQaGFzZShncmFwaCwgInJlc3VycmVjdGlvbiBmb3IgdmFsaWRhdGlvbiIpCi0gICAgewot
ICAgIH0KLSAgICAKLSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICBJbnNlcnRpb25TZXQg
aW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0g
ICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5z
aXplKCk7ICsrbm9kZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2Nr
LT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGluc2VydGlv
blNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVj
Tm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
YmxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci19OwotCi1ib29sIHBlcmZvcm1SZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uKEdyYXBoJiBncmFw
aCkKLXsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFJlc3VycmVjdGlv
biBGb3IgVmFsaWRhdGlvbiBQaGFzZSIpOwotICAgIHJldHVybiBydW5QaGFzZTxSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2U+KGdyYXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuaAkocmV2aXNpb24gMTgzNDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlX2gKLSNkZWZpbmUg
REZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlX2gKLQotI2lmIEVOQUJMRShERkdfSklU
KQotCi0jaW5jbHVkZSAiREZHQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIFBsYWNlcyBhIFBoYW50b20gYWZ0ZXIgZXZlcnkg
dmFsdWUtcHJvZHVjaW5nIG5vZGUsIHRoZXJlYnkgZGlzYWJsaW5nIERDRSBmcm9tIGtpbGxpbmcg
aXQuCi0vLyBUaGlzIGlzIHVzZWZ1bCBmb3IgdmFsaWRhdGluZyBvdXIgT1NSIGV4aXQgbWFjaGlu
ZXJ5IGJ5IGluc3RpdHV0aW5nIHRoZSByZXF1aXJlbWVudCB0aGF0Ci0vLyBhbnkgbGl2ZS1pbi1i
eXRlY29kZSB2YXJpYWJsZSBzaG91bGQgYmUgT1NSLWF2YWlsYWJsZS4gV2l0aG91dCB0aGlzIHBo
YXNlLCBpdCdzIGltcG9zc2libGUKLS8vIHRvIG1ha2Ugc3VjaCBhbiBhc3NlcnRpb24gYmVjYXVz
ZSBvdXIgRENFIGlzIG1vcmUgYWdncmVzc2l2ZSB0aGFuIHRoZSBieXRlY29kZSBsaXZlbmVzcwot
Ly8gYW5hbHlzaXMuCi0KLWJvb2wgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24oR3Jh
cGgmKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCi0KLSNlbmRpZiAvLyBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2VfaAot
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICsz
MDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4ucmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVwbGFjaW5nIG5vZGUgIiwgbm9kZSwgIiB3
aXRoICIsIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlcGxhY2VtZW50KHZhbHVlRm9yT3BlcmFu
ZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSk7CkBAIC0zMDksNyArMzA5LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEZsdXNoOiB7CiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCkBAIC0zMTcsMTIgKzMxNywxMiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGQxKCkgPSB2YWx1ZUZvck9wZXJhbmQub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkt
PmRlZmF1bHRFZGdlKCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50
b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDogewotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92
ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDY4LDYgKzEwNjgsMTIgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
RG91YgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0
ID0gaW5mby5zcGlsbEZvcm1hdCgpOworICAgICAgICBpZiAoc3BpbGxGb3JtYXQgIT0gRGF0YUZv
cm1hdERvdWJsZSkgeworICAgICAgICAgICAgREZHX0NSQVNIKAorICAgICAgICAgICAgICAgIG1f
aml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHRvQ1N0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkICIsIGVkZ2UsICIgdG8gaGF2ZSBkb3VibGUgZm9ybWF0IGJ1dCBpbnN0ZWFk
IGl0IGlzIHNwaWxsZWQgYXMgIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YUZvcm1hdFRvU3Ry
aW5nKHNwaWxsRm9ybWF0KSkuZGF0YSgpKTsKKyAgICAgICAgfQogICAgICAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsIHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRE
b3VibGUpOwogICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBm
cHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGlkZUJhcnJp
ZXIoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChub2RlLT5pc1N0b3JlQmFycmll
cigpKTsKLSAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKICAgICB9CiAKICAgICB2b2lkIGhhbmRsZU5vZGUoSGFzaFNldDxOb2RlKj4mIGRv
bnROZWVkQmFycmllcnMsIE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE4MzQ0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGlmICh5T3BlcmFuZFZhbHVlID09IDEpIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udmVydFRvSWRlbnRpdHlPdmVyQ2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh5T3BlcmFuZFZhbHVlID09IDAuNSkgewotICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9u
b2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9Bcml0aFNxcnQoKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjYsOCArMTY2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+Y2hpbGQx
KCkubm9kZSgpOyA7IG5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obm9kZS0+cmVzdWx0KCkpID09
CiAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbFJlc3VsdFJlcHJlc2VudGF0aW9uKG1fbm9k
ZS0+cmVzdWx0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFBo
YW50b20sIG1fbm9kZS0+b3JpZ2luLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2sobV9ub2RlSW5kZXgsIG1fbm9kZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChoYWRJbnQzMkNoZWNrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYWRkaW5nIEludDUyUmVwSW50MzJVc2Ugb3IgZXZl
biBEb3VibGVSZXBJbnQzMlVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdv
dWxkIGJlIHN1cGVyIHdlaXJkLiBUaGUgbGF0dGVyIHdvdWxkIG9ubHkgYXJpc2UgaW4gc29tZQpA
QCAtMTc1LDkgKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obm9kZS0+cmVzdWx0KCkpICE9IE5vZGVSZXN1
bHRKUykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUs
IFBoYW50b20sIG1fbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVk
Z2Uobm9kZSwgSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENoZWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBtX25vZGUtPm9yaWdpbiwgRWRnZShub2RlLCBJbnQzMlVzZSkpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCkgPSBub2RlLT5kZWZh
dWx0RWRnZSgpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CkBAIC0yMzksOCArMjM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgIHZvaWQg
Y29udmVydFRvSWRlbnRpdHlPdmVyQ2hpbGQodW5zaWduZWQgY2hpbGRJbmRleCkKICAgICB7Ci0g
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIFBoYW50b20sIG1fbm9kZS0+b3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuKTsK
KyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2sobV9ub2RlSW5kZXgsIG1fbm9kZSk7
CiAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShjaGlsZEluZGV4IF4gMSk7CiAg
ICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShy
ZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDMxICsxNDYsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSwgZWRnZSksIGVkZ2UtPnZhcmlhYmxlQWNjZXNzRGF0YSgpID09IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIExv
YWRTdG9yZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jl
c3VsdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoZWRnZS0+b3AoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUGhpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdl
LT5oYXNSZXN1bHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGhyZWFkZWRDUFM6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNS
ZXN1bHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFNTQToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2LDcgKzE3MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgZm91bmRUZXJtaW5hbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGJsb2NrLT5zaXplKCk7ICsraikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IGJsb2NrLT5hdChqKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5vZGUtPm9w
KCkgPT0gUGhhbnRvbUxvY2FsIHx8IG5vZGUtPm9wKCkgPT0gRmx1c2gpOworICAgICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9k
ZS0+b3AoKSA9PSBQaGFudG9tTG9jYWwgfHwgbm9kZS0+b3AoKSA9PSBGbHVzaCB8fCBub2RlLT5v
cCgpID09IENoZWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKQEAgLTQzNywxMCArNDEyLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b206Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlICYmICFqKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSwgZWRnZSksICFwaGlzSW5UaGlzQmxvY2suY29udGFpbnMoZWRnZS5ub2RlKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDYyLDYgKzQzMyw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0g
Rml4cG9pbnROb3RDb252ZXJnZWQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CkBAIC01NDEsNiArNTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBj
YXNlIFNldExvY2FsOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoKICAg
ICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgorICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhImJhZCBub2RlIHR5
cGUgZm9yIFNTQSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw3ICsxMDEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZWxldmFudExvY2Fscy5hcHBlbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToK
ICAgICAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgog
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkKQEAgLTIz
Miw3ICsyMzEsNiBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9
IGNhbmRpZGF0ZU5vZGVJbmRleCArIDE7IG5vZGVJbmRleCA8PSBsYXN0VXNlckluZGV4OyArK25v
ZGVJbmRleCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBo
YW50b206CiAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgY2FzZSBNb3ZIaW50
OgogICAgICAgICAgICAgY2FzZSBQdXRIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCw2IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IG5v
ZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+d2lsbEhhdmVDb2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9uczo6
c2hvd0FsbERGR05vZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjayBzdGFjazsK
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxODM0NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYz
LDkgKzQ2Myw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAg
ICBjb21waWxlUHV0U3RhY2soKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBo
YW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgICAgICBjb21waWxlUGhhbnRvbSgp
OworICAgICAgICAgICAgY29tcGlsZU5vT3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVUb1RoaXMoKTsKQEAgLTExNjIsNyAr
MTE2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlUGhhbnRvbSgpCisgICAgdm9pZCBjb21waWxlTm9PcCgpCiAgICAgewogICAgICAgICBERkdf
Tk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIHNwZWN1bGF0ZSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251810</attachid>
            <date>2015-04-27 20:14:12 -0700</date>
            <delta_ts>2015-04-27 20:28:47 -0700</delta_ts>
            <desc>trying another rebase</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129991</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBA
QAorMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgbm90IHVzZSBvciBwcmVzZXJ2ZSBQaGFudG9tcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDM3MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFNpbmNlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MzIwNyBhbmQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzNDA2LCBpdCBpcworICAgICAgICBu
byBsb25nZXIgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIFBoYW50b21zIGR1cmluZyB0cmFuc2Zvcm1h
dGlvbnMuIFRoZXkgYXJlIHN0aWxsIHVzZWZ1bCBqdXN0CisgICAgICAgIGJlZm9yZSBGaXh1cFBo
YXNlIHRvIHN1cHBvcnQgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGFuYWx5c2VzLiBUaGV5IGFyZSBz
dGlsbCBpbnNlcnRlZCBsYXRlIGluIHRoZQorICAgICAgICBnYW1lIGluIHRoZSBERkcgYmFja2Vu
ZC4gQnV0IHRyYW5zZm9ybWF0aW9ucyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0uIElu
c2lkZSBhIGJhc2ljCisgICAgICAgIGJsb2NrLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHNvIGxvbmcg
YXMgdGhlIElSIHBpbnBvaW50cyB0aGUgcGxhY2Ugd2hlcmUgdGhlIHZhbHVlIGJlY29tZXMKKyAg
ICAgICAgYXZhaWxhYmxlIGluIGEgYnl0ZWNvZGUgcmVnaXN0ZXIgKHVzaW5nIE1vdkhpbnQpIGFu
ZCBzbyBsb25nIGFzIHRoZXJlIGlzIGEgU2V0TG9jYWwgYW55dGltZSBzb21lCisgICAgICAgIG90
aGVyIGJsb2NrIHdvdWxkIG5lZWQgdGhlIHZhbHVlIChlaXRoZXIgZm9yIE9TUiBvciBmb3IgREZH
IGV4ZWN1dGlvbiksIHRoZW4gd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgbGl2ZW5lc3MgbWFy
a2Vycy4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIHJlbW92ZXMgYW55IHBsYWNlcyB3aGVy
ZSB3ZSBpbnNlcnRlZCBQaGFudG9tcyBqdXN0IGZvciBsaXZlbmVzcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb24KKyAgICAgICAgYW5kIGl0IHJlcGxhY2VzIGNvbnZlcnRUb1BoYW50b20oKSB3aXRoIHJl
bW92ZSgpLCB3aGljaCBqdXN0IGNvbnZlcnRzIHRoZSBub2RlIHRvIGEgQ2hlY2suIEEKKyAgICAg
ICAgQ2hlY2sgbm9kZSBvbmx5IGtlZXBzIGl0cyBjaGlsZHJlbiBzbyBsb25nIGFzIHRob3NlIGNo
aWxkcmVuIGhhdmUgY2hlY2tzLgorICAgICAgICAKKyAgICAgICAgVGhlIGZhY3QgdGhhdCB3ZSBu
byBsb25nZXIgY29udmVydFRvUGhhbnRvbSgpIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBiZSBtb3Jl
IGNhcmVmdWwgd2hlbgorICAgICAgICBjb25zdGFudC1mb2xkaW5nIEdldExvY2FsLiBQcmV2aW91
c2x5IHdlIHdvdWxkIGNvbnZlcnRUb1BoYW50b20oKSBhbmQgdXNlIHRoZSBmYWN0IHRoYXQKKyAg
ICAgICAgUGhhbnRvbShQaGkpIHdhcyBhIHZhbGlkIGNvbnN0cnVjdC4gSXQncyBub3QgdmFsaWQg
YW55bW9yZS4gU28sIHdoZW4gY29uc3RhbnQgZm9sZGluZyBlbmNvdW50ZXJzCisgICAgICAgIGEg
R2V0TG9jYWwgaXQgbmVlZHMgdG8gaW5zZXJ0IGEgUGhhbnRvbUxvY2FsIGRpcmVjdGx5LiBUaGlz
IGFsbG93cyB1cyB0byBzaW1wbGlmeQorICAgICAgICBHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQo
KSBhIGJpdC4gTHVja2lseSwgbm9uZSBvZiB0aGUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2Qg
d291bGQgc2VlCisgICAgICAgIEdldExvY2Fscy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5
IFBoYW50b20tbGlrZSBjcnVmdCBsZWZ0IG92ZXIgYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAg
ICAgCisgICAgICAgIC0gUGhhbnRvbXMgYmVmb3JlIEZpeHVwUGhhc2UuIEkga2luZCBvZiBsaWtl
IHRoZXNlLiBJdCBtZWFucyB0aGF0IGJlZm9yZSBGaXh1cFBoYXNlLCB3ZSBjYW4gZG8KKyAgICAg
ICAgICBiYWNrd2FyZHMgYW5hbHlzZXMgYW5kIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgdXNl
cnMgb2YgYSBub2RlIGluIERGRyBJUiBhcmUgYSBzdXBlcnNldCBvZgorICAgICAgICAgIHRoZSB1
c2VycyBvZiB0aGUgb3JpZ2luYWwgbG9jYWwncyBsaXZlIHJhbmdlIGluIGJ5dGVjb2RlLiBUaGlz
IGlzIGVzc2VudGlhbCBmb3Igc3VwcG9ydGluZyBvdXIKKyAgICAgICAgICBCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciB0aGlu
Z3MgbGlrZSBhc20uanMuCisgICAgICAgIAorICAgICAgICAtIFBoYW50b21Mb2NhbHMgYW5kIEdl
dExvY2FscyBiZWluZyBOb2RlTXVzdEdlbmVyYXRlLiBTZWUgZGlzY3Vzc2lvbiBpbgorICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYuIEl0IGFw
cGVhcnMgdGhhdCB0aGlzIGlzIG5vdCBhcyBldmlsIGFzIHRoZQorICAgICAgICAgIGFsdGVybmF0
aXZlcy4gVGhlIGJlc3QgbG9uZy10ZXJtIHBsYW4gaXMgdG8gc2ltcGx5IGRpdGNoIHRoZSBUaHJl
YWRlZENQUyBJUiBlbnRpcmVseSBhbmQgaGF2ZQorICAgICAgICAgIHRoZSBERkcgdXNlIFNTQS4g
Rm9yIG5vdywgc28gbG9uZyBhcyBhbnkgbmV3IERGRyBvcHRpbWl6YXRpb25zIHdlIGFkZCBhcmUg
YmxvY2stbG9jYWwgYW5kCisgICAgICAgICAgdHJlYXQgR2V0TG9jYWwvU2V0TG9jYWwgY29uc2Vy
dmF0aXZlbHksIHRoaXMgc2hvdWxkIGFsbCBiZSBzb3VuZC4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgY2hhbmdlIHNob3VsZCBiZSBwZXJmLW5ldXRyYWwgYWx0aG91Z2ggaXQgZG9lcyByZWR1Y2Ug
dGhlIHRvdGFsIHdvcmsgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgZG9lcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlzdDo6anVzdENoZWNrcyk6CisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpyZXBsYWNlVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRp
b25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpDUFNSZXRo
cmVhZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpj
bGVhclZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6
Y2Fub25pY2FsaXplRmx1c2hPclBoYW50b21Mb2NhbEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcC4KKyAgICAgICAgKEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OkNsZWFuVXBQaGFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q2xlYW5VcFBoYXNlOjpydW4pOgorICAgICAgICAoSlND
OjpERkc6OnBlcmZvcm1DbGVhblVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUmVtb3Zh
bFBoYXNlOjpQaGFudG9tUmVtb3ZhbFBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QaGFudG9tUmVtb3ZhbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NsZWFu
VXBQaGFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21SZW1vdmFsUGhhc2UuaC4KKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6YWRkQmFzZUNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zml4VXBzaWxv
bnMpOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RENFUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVwQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpjbGVhblZhcmlhYmxlcyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFN0cmluZ0FkZFVzZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludENvbnZlcnRpbmdFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXhJbnRPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXhEb3VibGVPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFJlcXVpcmVkUGhhbnRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUGhhbnRvbXNJZk5lY2Vzc2Fy
eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjptZXJnZVJlbGV2YW50VG9PU1IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnNlcnRpb25TZXQ6Omluc2VydENoZWNrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpyZW1vdmUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cmVwbGFjZVdp
dGgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b20pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NoZWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjp3aWxsSGF2ZUNvZGVHZW5Pck9TUik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpsb3dlck5vblJl
YWRpbmdPcGVyYXRpb25zT25QaGFudG9tQWxsb2NhdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6
Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBk
ZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdQ
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToK
KyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2U6OmVsaWRlQmFy
cmllcik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmNvbnZlcnRUb0lkZW50aXR5
T3ZlckNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6
OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVTU0Ep
OgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9PcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQ
aGFudG9tKTogRGVsZXRlZC4KKwogMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIxODM0MzggIlJlZ0V4cCBt
YXRjaGVzIGFycmF5cyBzaG91bGQgdXNlIGNvbnRpZ3VvdXMgaW5kZXhpbmciLiBJdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NiArMTM4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHQ1NFUGhhc2UuY3BwCiAgICAgZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKyAgICBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAogICAgIGRmZy9ERkdD
bG9iYmVyU2V0LmNwcAogICAgIGRmZy9ERkdDbG9iYmVyaXplLmNwcAogICAgIGRmZy9ERkdDb21t
b24uY3BwCkBAIC0yMDIsOSArMjAzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKICAgICBkZmcvREZHT3BlcmF0aW9ucy5jcHAKLSAg
ICBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUGhh
bnRvbUluc2VydGlvblBoYXNlLmNwcAotICAgIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNw
cAogICAgIGRmZy9ERkdQaGFzZS5jcHAKICAgICBkZmcvREZHUGhpQ2hpbGRyZW4uY3BwCiAgICAg
ZGZnL0RGR1BsYW4uY3BwCkBAIC0yMTQsNyArMjEzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCiAgICAgZGZnL0RGR1B1
cmVWYWx1ZS5jcHAKICAgICBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCi0gICAgZGZn
L0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHU1NBQ2Fs
Y3VsYXRvci5jcHAKICAgICBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9E
RkdTU0FMb3dlcmluZ1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zODAsNiArMzgwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdD
YXBhYmlsaXRpZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0NG
QVBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdDbGVhblVwUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERG
R0Nsb2JiZXJpemUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Ns
b2JiZXJTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbW1v
bi5jcHAiIC8+CkBAIC00NDYsOSArNDQ3LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3Bw
IiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21DYW5vbmljYWxp
emF0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1Bo
YW50b21JbnNlcnRpb25QaGFzZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxk
ZmdcREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1BoaUNoaWxkcmVuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdQbGFuLmNwcCIgLz4KQEAgLTQ1OCw3ICs0NTcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXJlVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCIgLz4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhZmVwb2ludC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHU3BlY3VsYXRpdmVKSVQuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIiAvPgpAQCAtMTA2Miw2ICsxMDYwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdDQ2FsbEhlbHBlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdDRkFQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdDbGVhblVwUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdDbG9iYmVyaXplLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xv
YmJlclNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbW1vbi5o
IiAvPgpAQCAtMTE0Miw5ICsxMTQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdFByZXBhcmF0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21SZW1vdmFsUGhh
c2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFzZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoaUNoaWxkcmVuLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGxhbi5oIiAvPgpAQCAtMTE1OCw3ICsxMTU1
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1JlZ2lzdGVyQmFu
ay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1JlZ2lzdGVyU2V0Lmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU2Fm
ZVRvRXhlY3V0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhZmVw
b2ludC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2
NSw4ICszNjUsNiBAQAogCQkwRjY2NkVDMTE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjY2RUM2MTgz
NTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzIxODM1NjcyQjAwRDAxN0YxIC8qIERG
R0F2YWlsYWJpbGl0eS5jcHAgKi87IH07CiAJCTBGNjY2RUM3MTgzNTY3MkIwMEQwMTdGMSAvKiBE
RkdBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjY2RUMzMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjY2NkVDQzE4
MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUNBMTgz
NkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICov
OyB9OwotCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNG
MTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERG
R0VkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2ODJGQjIxOUJDQjM2NDAwRkEzQkFEIC8q
IERGR1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2ODJGQjAxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3Iu
Y3BwICovOyB9OwpAQCAtNDEwLDggKzQwOCw2IEBACiAJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEw
QyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4NTQxOUEyOTBCMjAwRjYzMTBDIC8qIERG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0Nh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTREMTRDM0NE
NEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjdCMzY2
MTE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdCMzY1RjE5
N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgKi87
IH07Ci0JCTBGN0IzNjYyMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgz
MzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07
CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2
MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NjIsNiArNDU4LDggQEAKIAkJ
MEY5RDMzOTcxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJD
IC8qIERGR0ZsdXNoZWRBdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTgx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgKi87IH07CiAJCTBGOUQzMzlCMTgw
M0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk5MTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFj
a01hcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzNjkyMUFFOUNDMzMw
MDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICovOyB9OworCQkwRjlEMzY5NTFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzY5MzFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5V
cFBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjIxN0ZD
QjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovOyB9OwogCQkwRjlGQjRG
NTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4
IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5jcHAgKi87IH07CkBAIC01MTksOCArNTE3LDYgQEAKIAkJMEZCRTBGNzcxNkMxREIxMjAwODJD
NUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUwRjcwMTZDMURCMDEwMDgyQzVFOCAvKiBERkdVbmlmaWNh
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZCRjE1OEMxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkYxNThBMTlCN0E1MzEw
MDY5NUREMCAvKiBERkdCbG9ja1NldC5jcHAgKi87IH07CiAJCTBGQkYxNThEMTlCN0E1MzEwMDY5
NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkYxNThCMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1Nl
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRkJGREQwNDE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJGREQw
MjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgKi87IH07Ci0J
CTBGQkZERDA1MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJGREQwMzE5NkM5
MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcxMTQ2OTNB
RjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkMwOTc3MjE0NjkzQUY5MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLzsgfTsK
QEAgLTIxMDIsOCArMjA5OCw2IEBACiAJCTBGNjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2NkVD
MjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5jcHA7IHBhdGggPSBkZmcvREZH
QXZhaWxhYmlsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzMx
ODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuaDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxp
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2NjZFQ0ExODM2QjM3RTAwRDAx
N0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhh
c2UuY3BwOyBwYXRoID0gZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAv
KiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FkamFjZW5jeUxpc3Qu
aDsgcGF0aCA9IGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0VkZ2UuaDsgcGF0aCA9IGRmZy9ERkdFZGdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjgyRkIwMTlCQ0IzNjQwMEZBM0JBRCAvKiBE
RkdTU0FDYWxjdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NTQUNhbGN1bGF0b3IuY3BwOyBwYXRoID0gZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0NSw4ICsyMTM5LDYgQEAKIAkJMEY3NzAw
OTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjc5MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3OTA4NTQxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8q
IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTk3LDYgKzIxODksOCBAQAogCQkwRjlEMzM5NTE3RkZDNEU2MDA3M0MyQkMg
LyogREZHRmx1c2hlZEF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Zs
dXNoZWRBdC5oOyBwYXRoID0gZGZnL0RGR0ZsdXNoZWRBdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjlEMzM5ODE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFN0YWNrTWFwcy5jcHA7IHBh
dGggPSBmdGwvRlRMU3RhY2tNYXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RDMzOTkxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTdGFja01hcHMuaDsgcGF0aCA9IGZ0bC9GVExTdGFja01h
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0
REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzNjkzMUFFOUNDMzMwMDBENERG
QiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQ2xlYW5VcFBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ2xlYW5VcFBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFj
a0xheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3Rjgg
LyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTdGFja0xheW91dFBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAg
LyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyNjQsOCArMjI1OCw2IEBACiAJCTBGQkUwRjcwMTZDMURCMDEwMDgyQzVF
OCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1VuaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkYxNThBMTlCN0E1MzEwMDY5NURE
MCAvKiBERkdCbG9ja1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdCbG9ja1NldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tTZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkJGMTU4QjE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tT
ZXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrU2V0
SW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrU2V0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRkJGREQwMjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCRkREMDMxOTZDOTJCRjAwN0E1
QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1BoYW50b21S
ZW1vdmFsUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NjgxNDY4
QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRD
b21waWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29t
cGlsZXIuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlcjY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4
aXRDb21waWxlcjY0LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODgwLDYgKzQ4NzIsOCBAQAogCQkJCTBGRkZD
OTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovLAogCQkJCTBGM0IzQTI0MTU0
NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkw
RjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICov
LAorCQkJCTBGOUQzNjkyMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICov
LAorCQkJCTBGOUQzNjkzMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLywK
IAkJCQlBNzdBNDIzODE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5jcHAgKi8sCiAJ
CQkJQTc3QTQyMzkxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuaCAqLywKIAkJCQlB
NzdBNDIzQTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNldC5jcHAgKi8sCkBAIC01MDI2
LDEyICs1MDIwLDggQEAKIAkJCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlci5oICovLAogCQkJCTBGMjM1QkU5MTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovLAogCQkJCTBGMjM1QkVBMTcxNzhFNzMwMDY5MEM3
RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCAqLywKLQkJCQkwRjdCMzY1RjE5N0M1MjVDMDBF
RDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgKi8sCi0JCQkJMEY3
QjM2NjAxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
aCAqLywKIAkJCQkwRjYyMzc5NTFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlv
blBoYXNlLmNwcCAqLywKIAkJCQkwRjYyMzc5NjFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRv
bUluc2VydGlvblBoYXNlLmggKi8sCi0JCQkJMEZCRkREMDIxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwICovLAotCQkJCTBGQkZERDAzMTk2QzkyQkYwMDdBNUJG
QSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NEYxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR1BoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUGhhc2UuaCAqLywKIAkJCQkwRjJCOUNERTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhp
Q2hpbGRyZW4uY3BwICovLApAQCAtNTA1Myw4ICs1MDQzLDYgQEAKIAkJCQkwRjNBMUJGNzFBOUVD
QjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwICovLAogCQkJCTBGM0Ex
QkY4MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oICovLAogCQkJ
CTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAqLywKLQkJCQkw
RjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBo
YXNlLmNwcCAqLywKLQkJCQkwRjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4
IC8qIERGR1NhZmVwb2ludC5jcHAgKi8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1NhZmVwb2ludC5oICovLAogCQkJCUE3N0E0MjNDMTdBMEJCRkQwMEE4REI4MSAvKiBERkdT
YWZlVG9FeGVjdXRlLmggKi8sCkBAIC01ODY4LDcgKzU4NTYsNiBAQAogCQkJCTBGQkUwRjc1MTZD
MURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlERDExMzI4REY4MjAwMkIyQUQ3
IC8qIERGR1JlZ2lzdGVyQmFuay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2NjZFQ0QxODM2QjM3
RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyRkNDRkMxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyNDMxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4
ZWN1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBE
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC01OTQzLDYgKzU5MzAsNyBAQAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExF
eGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRDkxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY5RDM2OTUxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREIxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4
aXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzQ0UwODYxOEJDMUE1NjAwQkVERjc2IC8q
IENvbnNvbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RjI5OTZDMTdBMEJCNjcw
MDEwNDE3QSAvKiBGVExGYWlsLmggaW4gSGVhZGVycyAqLywKQEAgLTYwNTMsNyArNjA0MSw2IEBA
CiAJCQkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0
NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkJGREQw
NTE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4
MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTQyLDcgKzYxMjksNiBAQAog
CQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMzE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0IzNjYyMTk3QzUyNUMwMEVEMURE
QyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjVBMTI3NDE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY2MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzExMCw2ICs3MDk2LDcgQEAKIAkJCQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyog
REZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAw
RjUyODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5
NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEzMjhERjgy
MDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MTUyLDcgKzcxMzks
NiBAQAogCQkJCUE3OEE5NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcy
NTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTBGNjY2RUNDMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkIxOEE2MDA3MDAwMUEyN0Y4
IC8qIERGR1NhZmVwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOUREMjEzMjhERjgy
MDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4
ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03MzY3LDcgKzczNTMsNiBAQAogCQkJCUE1MDNGQTFEMTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNEMEJCQzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjdCMzY2MTE5N0M1MjVDMDBFRDFEREMgLyogREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjVE
NzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTc0REVGOTUxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03NTQwLDcgKzc1MjUsNiBAQAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3
NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYy
QjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRDNDE1RjZC
NkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCShyZXZp
c2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5jeUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDYgKzE1NiwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBBZGphY2VuY3lMaXN0KEZpeGVkLCBjaGlsZDEoKS5zYW5pdGl6ZWQo
KSwgY2hpbGQyKCkuc2FuaXRpemVkKCksIGNoaWxkMygpLnNhbml0aXplZCgpKTsKICAgICB9CiAg
ICAgCisgICAgQWRqYWNlbmN5TGlzdCBqdXN0Q2hlY2tzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFkamFjZW5jeUxpc3QgcmVzdWx0KEZpeGVkKTsKKyAgICAgICAgdW5zaWduZWQgc291cmNlSW5k
ZXggPSAwOworICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7CisgICAgICAgIHdoaWxl
IChzb3VyY2VJbmRleCA8IEFkamFjZW5jeUxpc3Q6OlNpemUpIHsKKyAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IGNoaWxkKHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5jaGlsZCh0YXJnZXRJbmRleCsrKSA9IGVkZ2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXNj
YXBlKG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKICAg
ICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50
OgpAQCAtMzUzLDcgKzM1Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNl
dE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21EaXJlY3RBcmd1bWVudHMpOwotICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgpAQCAtMzYxLDcgKzM1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21DbG9uZWRBcmd1bWVudHMp
OwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgg
KyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewpAQCAtNDg1LDcgKzQ4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIFB1
dFN0YWNrLCBub2RlLT5vcmlnaW4sIE9wSW5mbyhkYXRhKSwgRWRnZSh2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNTM2LDcgKzUz
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hpbGQx
KCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgQmFzaWNCbG9jazo6cmVwbGFjZVRlcm1pbmFsKE5vZGUqIG4KICAgICAgICAg
YXBwZW5kKG5vZGUpOwogICAgIGVsc2UgewogICAgICAgICBtX25vZGVzLmluc2VydChyZXN1bHQu
aW5kZXggKyAxLCBub2RlKTsKLSAgICAgICAgcmVzdWx0Lm5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgcmVzdWx0Lm5vZGUtPnJlbW92ZSgpOwogICAgIH0KICAgICAKICAgICBBU1NF
UlQodGVybWluYWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDggQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICAgICAgY2FzZSBSZXR1cm46
CiAgICAgICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAgICAgICAgIHJldHVybiBO
b2RlQW5kSW5kZXgobm9kZSwgaSk7Ci0gICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4g
Y29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBi
ZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4KKyAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgorICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsOCAr
MjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlOwogICAgICAgICBp
ZiAobGl2ZW5lc3NOb2RlLT5mbGFncygpICYgTm9kZUlzRmx1c2hlZCkKICAgICAgICAgICAgIG5v
ZGVUeXBlID0gRmx1c2g7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvLyBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBiZWNhdXNlIHdl
IGNvdWxkIGp1c3QgcmVtYXRlcmlhbGl6ZQorICAgICAgICAgICAgLy8gUGhhbnRvbUxvY2FscyBv
ciBzb21ldGhpbmcgc2ltaWxhciB1c2luZyBieXRlY29kZSBsaXZlbmVzcy4gSG93ZXZlciwgaW4g
VGhyZWFkZWRDUFMsIGl0J3MKKyAgICAgICAgICAgIC8vIHdvcnRoIHRoZSBzYW5pdHkgdG8gbWFp
bnRhaW4gdGhpcyBlYWdlcmx5LiBTZWUKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYKICAgICAgICAgICAgIG5vZGVUeXBlID0gUGhh
bnRvbUxvY2FsOworICAgICAgICB9CiAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAogICAgICAg
ICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIG5vZGVUeXBlLCBub2RlT3JpZ2luLCAKICAgICAgICAg
ICAgIE9wSW5mbyhsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CkBAIC0zMTcs
MTEgKzMyMiwxMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBrZXB0IGFsaXZlLgogICAgICAgICAK
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2NrIHNpbmNlIHdlIGRv
bid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKLSAgICAgICAgLy8gcmVhbGx5IHJl
bW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4KKyAgICAgICAgLy8g
cmVhbGx5IHJlbW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgY2hlY2suCiAgICAg
ICAgIE5vZGUqIHRlcm1pbmFsID0gZmlyc3RCbG9jay0+dGVybWluYWwoKTsKICAgICAgICAgQVNT
RVJUKHRlcm1pbmFsLT5pc1Rlcm1pbmFsKCkpOwogICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5
Tm9kZU9yaWdpbiA9IHRlcm1pbmFsLT5vcmlnaW47Ci0gICAgICAgIHRlcm1pbmFsLT5jb252ZXJ0
VG9QaGFudG9tKCk7CisgICAgICAgIHRlcm1pbmFsLT5yZW1vdmUoKTsKICAgICAgICAgQVNTRVJU
KHRlcm1pbmFsLT5yZWZDb3VudCgpID09IDEpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gamV0dGlzb25lZEJsb2Nrcy5zaXplKCk7IGktLTspIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQCBjbGFzcyBD
UFNSZXRocmVhZGluZ1BoYXNlIDogcHVibGljIFBoYXNlCiBwdWJsaWM6CiAgICAgQ1BTUmV0aHJl
YWRpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJDUFMgcmV0
aHJlYWRpbmciKQotICAgICAgICAsIG1fYXZhaWxhYmxlRm9yT1NSKE9wZXJhbmRzTGlrZSwgZ3Jh
cGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtMTI2
LDE0ICsxMjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgbV9i
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCkKICAgICAgICAgICAg
ID09IG1fYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zaXplRm9yPG9wZXJhbmRLaW5kPigpKTsKLSAg
ICAgICAgQVNTRVJUKAotICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkKLSAgICAgICAgICAgID09IG1fYXZhaWxhYmxlRm9yT1NSLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCk7IGktLTspIHsK
ICAgICAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4o
aSkgPSBudWxscHRyOwogICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRUYWlsLmF0Rm9y
PG9wZXJhbmRLaW5kPihpKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9T
Ui5hdEZvcjxvcGVyYW5kS2luZD4oaSkgPSBFZGdlKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
CkBAIC0yNDcsOCArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyByZWR1bmRh
bnQgYW5kIGluZWZmaWNpZW50LCBzaW5jZSByZWFsbHkgaXQganVzdCBtZWFucyB0aGF0IHdlIHdh
bnQgdG8KICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZSBsYXN0IE1vdkhpbnRlZCB2YWx1ZSBv
ZiB0aGF0IGxvY2FsIGFsaXZlLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMShtX2F2YWlsYWJsZUZvck9TUi5hdEZvcjxvcGVyYW5kS2lu
ZD4oaWR4KSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAg
ICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzU5LDE0ICszNTMsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZVNldChub2RlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAg
ICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwo
KSkgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDoKLSAgICAgICAgICAgICAgICBtX2F2
YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSkgPSBFZGdlKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTE3LDcgKzUw
Myw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBoaVN0YWNrRW50cnksIDEyOD4gbV9hcmd1bWVu
dFBoaVN0YWNrOwogICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+IG1fbG9jYWxQaGlTdGFj
azsKICAgICBWZWN0b3I8Tm9kZSosIDEyOD4gbV9mbHVzaGVkTG9jYWxPcFdvcmtsaXN0OwotICAg
IE9wZXJhbmRzPEVkZ2U+IG1fYXZhaWxhYmxlRm9yT1NSOwogfTsKIAogYm9vbCBwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOCArMjM0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0dXRpb24o
bV9ub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkg
PT0gSWRlbnRpdHkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9DaGVj
aygpOwotICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnNldFJlcGxhY2VtZW50KG1fbm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0
aChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBydWxlIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGxvY2FsIENTRSwgc2luY2UgaW4gU1NB
IGZvcm0gd2UgaGF2ZSBhbHJlYWR5CkBAIC00MzcsOCArNDM2LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gSWRlbnRpdHkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPnNldFJlcGxhY2VtZW50KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChtX25vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNsb2JiZXJpemUobV9ncmFw
aCwgbV9ub2RlLCAqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbGVhblVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODMyMDUpCShmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHA6MTgzMjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdQaGFudG9tUmVtb3ZhbFBo
YXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisj
aW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgorI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgUGhhbnRvbVJlbW92YWxQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgUGhhbnRvbVJlbW92YWxQaGFzZShHcmFwaCYgZ3Jh
cGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJwaGFudG9tIHJlbW92YWwiKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBydW4oKQorICAgIHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0g
ZmFsc2U7CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICgh
YmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIEFsbCBQaGlzIG5lZWQgdG8gYWxyZWFkeSBiZSBtYXJrZWQgYXMgcmVsZXZhbnQgdG8g
T1NSLgorICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+cGhpc1tpXS0+ZmxhZ3MoKSAmIE5vZGVSZWxl
dmFudFRvT1NSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoK
KyAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOiAvLyBGSVhNRTogVGhlIEdldExvY2FsIGNh
c2UgaXMgb25seSBuZWNlc3NhcnkgdW50aWwgd2UgZG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjcwNy4KKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlUmVsZXZhbnRUb09TUik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG1fZ3JhcGgubWVyZ2VSZWxldmFudFRvT1NSKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZUluZGV4ID0gMDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChz
b3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbTogeworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzb3VyY2VJbmRleCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0g
YmxvY2stPmF0KHNvdXJjZUluZGV4IC0gMik7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBuZWVkIHRvIHNwZWNpYWxpemUg
Zm9yIFBoYW50b20uIGxhc3ROb2RlIGNvdWxkIGJlIGFueSBub2RlCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB0aGF0IGlzbid0IHN1YmplY3QgdG8gRENFLiBCdXQgd2Uga2VlcCBpdCBzaW1w
bGUgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+b3AoKSAh
PSBQaGFudG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGFzdE5vZGUtPm9yaWdp
bi5mb3JFeGl0ICE9IG5vZGUtPm9yaWdpbi5mb3JFeGl0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3ROb2RlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6
ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGls
ZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLndpbGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBjaGVjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxhc3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2opIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+Y2hpbGRyZW4uY2hpbGQo
aikubm9kZSgpID09IGVkZ2Uubm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsr
KSA9IG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibG9jay0+cmVzaXplKHRhcmdl
dEluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Cisg
ICAgfQorfTsKKyAgICAKK2Jvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJiBncmFwaCkK
K3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBoYW50b20gUmVtb3Zh
bCBQaGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxQaGFudG9tUmVtb3ZhbFBoYXNlPihncmFw
aCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVw
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NsZWFuVXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgor
I2luY2x1ZGUgIkRGR0NsZWFuVXBQaGFzZS5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAg
LTM3LDEwICszNywxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNs
YXNzIFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworY2xhc3MgQ2xlYW5VcFBo
YXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKLSAgICBQaGFudG9tUmVtb3ZhbFBoYXNlKEdy
YXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgInBoYW50b20gcmVtb3ZhbCIpCisg
ICAgQ2xlYW5VcFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNs
ZWFuIHVwIikKICAgICB7CiAgICAgfQogICAgIApAQCAtNDgsMTE4ICs0OCwzMCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJ
bmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2Nr
KGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQWxsIFBoaXMgbmVlZCB0byBh
bHJlYWR5IGJlIG1hcmtlZCBhcyByZWxldmFudCB0byBPU1IuCi0gICAgICAgICAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJs
b2NrLT5waGlzW2ldLT5mbGFncygpICYgTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgotICAgICAgICAgICAgICAgIGNhc2UgR2V0
TG9jYWw6IC8vIEZJWE1FOiBUaGUgR2V0TG9jYWwgY2FzZSBpcyBvbmx5IG5lY2Vzc2FyeSB1bnRp
bCB3ZSBkbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzA3Lgot
ICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlUmVsZXZhbnRUb09TUik7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9P
U1IoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFi
bG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7CiAgICAgICAgICAgICB1bnNp
Z25lZCB0YXJnZXRJbmRleCA9IDA7CiAgICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBi
bG9jay0+c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChz
b3VyY2VJbmRleCsrKTsKKyAgICAgICAgICAgICAgICBib29sIGtpbGwgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVjaykKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbi5qdXN0Q2hl
Y2tzKCk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOiB7Ci0gICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNv
dXJjZUluZGV4ID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBibG9j
ay0+YXQoc291cmNlSW5kZXggLSAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbGl6ZSBmb3Ig
UGhhbnRvbS4gbGFzdE5vZGUgY291bGQgYmUgYW55IG5vZGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBEQ0UuIEJ1dCB3ZSBrZWVwIGl0IHNpbXBsZSBm
b3Igbm93LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5vcCgpICE9IFBo
YW50b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0Tm9kZS0+b3JpZ2luLmZv
ckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdE5vZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVu
LmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGFzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5jaGlsZHJlbi5jaGlsZChqKS5u
b2RlKCkgPT0gZWRnZS5ub2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tOgorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBraWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lM
aXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5v
ZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdl
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVt
b3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
cmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9j
YXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGJs
b2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7CisgICAgICAgICAgICAgICAgaWYgKGtpbGwp
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJ
bmRleCsrKSA9IG5vZGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBibG9jay0+cmVzaXpl
KHRhcmdldEluZGV4KTsKICAgICAgICAgfQpAQCAtMTY4LDEwICs4MCwxMCBAQCBwdWJsaWM6CiAg
ICAgfQogfTsKICAgICAKLWJvb2wgcGVyZm9ybVBoYW50b21SZW1vdmFsKEdyYXBoJiBncmFwaCkK
K2Jvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgUGhhbnRvbSBSZW1vdmFsIFBoYXNlIik7Ci0gICAgcmV0dXJu
IHJ1blBoYXNlPFBoYW50b21SZW1vdmFsUGhhc2U+KGdyYXBoKTsKKyAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbigiREZHIENsZWFuIFVwIFBoYXNlIik7CisgICAgcmV0dXJuIHJ1blBo
YXNlPENsZWFuVXBQaGFzZT4oZ3JhcGgpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJKHJl
dmlzaW9uIDE4MzIwNSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9t
UmVtb3ZhbFBoYXNlLmg6MTgzMjA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bGVhblVwUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHUGhhbnRvbVJl
bW92YWxQaGFzZV9oCisjZGVmaW5lIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3Mg
R3JhcGg7CisKKy8vIENsZWFucyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhhbnRvbiBj
aGlsZHJlbi4gVGhpcyByZWR1Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKKy8vIGVsaW1p
bmF0ZXMgbWFueSBQaGFudG9tcyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZlbmVzcyBh
bmFseXNpcy4KKy8vCisvLyBUaGlzIHNob3VsZCB3b3JrIG92ZXIgYWxsIElSIGZvcm1zOyBob3dl
dmVyLCBpbiBTU0EgZm9ybSBpdCdzIGJldHRlciB0byBydW4KKy8vIFBoYW50b21DYW5vbmljYWxp
emF0aW9uUGhhc2Ugc2luY2UgaXQncyBtb3JlIHBvd2VyZnVsLgorCitib29sIHBlcmZvcm1QaGFu
dG9tUmVtb3ZhbChHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1BoYW50b21SZW1vdmFsUGhhc2Vf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5oCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaWZuZGVmIERGR1BoYW50b21SZW1vdmFsUGhhc2VfaAotI2RlZmluZSBERkdQaGFudG9tUmVt
b3ZhbFBoYXNlX2gKKyNpZm5kZWYgREZHQ2xlYW5VcFBoYXNlX2gKKyNkZWZpbmUgREZHQ2xlYW5V
cFBoYXNlX2gKIAogI2lmIEVOQUJMRShERkdfSklUKQogCkBAIC0zMiwxNiArMzIsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBHcmFwaDsKIAotLy8gQ2xlYW5z
IHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVuLiBUaGlzIHJlZHVj
ZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRlcyBtYW55IFBoYW50b21z
IGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lzLgotLy8KLS8vIFRo
aXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGluIFNTQSBmb3JtIGl0
J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZSBzaW5jZSBp
dCdzIG1vcmUgcG93ZXJmdWwuCisvLyBDbGVhbnMgdXAgdW5uZWVkZWQgbm9kZXMsIGxpa2UgZW1w
dHkgQ2hlY2tzIGFuZCBQaGFudG9tcy4KIAotYm9vbCBwZXJmb3JtUGhhbnRvbVJlbW92YWwoR3Jh
cGgmKTsKK2Jvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNlbmRpZiAvLyBERkdQaGFu
dG9tUmVtb3ZhbFBoYXNlX2gKKyNlbmRpZiAvLyBERkdDbGVhblVwUGhhc2VfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0
KCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0
KSkgewogICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJs
b2NrKTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0x
MzMsOCArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4
ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9t
LCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hp
bGRyZW4pOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NvbnN0YW50U3RvcmFnZVBv
aW50ZXIodmlldy0+dmVjdG9yKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtMTQ3LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlm
IChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzRHluYW1pY0Nhc3Q8U3RydWN0dXJlKj4odmFsdWUu
dmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3Ry
dWN0dXJlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhl
Y3V0ZShpbmRleEluQmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTE2Nyw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxHb29kKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTc5LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEFy
cmF5aWZ5OiB7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5
Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAg
ICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtMTg4LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYg
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUub25seVN0cnVjdHVy
ZSgpICE9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAg
IGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMTk2LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENoZWNrQ2Vs
bDogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
LnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0
ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjA0
LDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENoZWNrTm90RW1wdHk6IHsK
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5
cGUgJiBTcGVjRW1wdHkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIxNCw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5p
c0ludDMyKCkgJiYgcmlnaHQuaXNJbnQzMigpCiAgICAgICAgICAgICAgICAgICAgICYmIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihsZWZ0LmFzSW50MzIoKSkgPCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cmlnaHQuYXNJbnQzMigpKSkgewotICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Q
aGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAg
ICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtNTEyLDE0ICs1MTEsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGlmICghKnZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAg
ICAgICAgIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbjsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCB2YWx1ZSk7
Ci0gICAgICAgICAgICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIHBy
ZXNlcnZlIGJ5dGVjb2RlIGxpdmVuZXNzIGluIFRocmVhZGVkQ1BTIGZvcm0uIFRoaXMgd291bGRu
J3QgYmUgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgLy8gaWYgaXQgd2Fzbid0IGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDg2LgogICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRyZW4pOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9t
TG9jYWwsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgdmFsdWUpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjQwLDEw
ICs2NDEsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoYmFzZVZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkgewotICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBpbmRleElu
QmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoYmFzZVZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkKKyAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5CbG9jaywgbm9kZS0+
b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkQ2hlY2tz
KApAQCAtNjgzLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CiAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OgotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG5vZGUsICJCYWQgVXBzaWxvbiBwaGkoKSBwb2ludGVyIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDI3ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNvbXB1dGVS
ZWZDb3VudHMoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0Ep
IHsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKSkKLSAgICAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgLy8gVGhpcyBpcyBsaWtlIGNsZWFuVmFyaWFibGVzLCBidXQgaGFz
IGEgbXVjaCBzaW1wbGVyIGFwcHJvYWNoIHRvIEdldExvY2FsLgotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYgbm9kZS0+b3AoKSAhPSBDaGVjayAm
JiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
Z3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1C
bG9ja3MoKTsgKytibG9ja0luZGV4KQotICAgICAgICAgICAgICAgIGZpeHVwQmxvY2sobV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KSk7Ci0gICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBo
Lm1fYXJndW1lbnRzKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCisgICAgICAgICAgICBmaXh1cEJsb2NrKGJs
b2NrKTsKICAgICAgICAgCisgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVu
dHMpOworCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVw
LgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTEwNCwyMiArODgsMTIgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAot
ICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7Ci0gICAgICAgIGNhc2UgU1NBOgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBUaHJlYWRlZENQUzog
ewotICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdmFyaWFibGUgbGlua3MgZm9yIHRoZSBibG9jay4g
V2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSB0aGUgYWN0dWFsIERDRQotICAgICAgICAgICAgLy8g
YmVjYXVzZSB3ZSBuZWVkIHRvIHNlZSBHZXRMb2NhbHMsIHNvIHdlIGNhbiBieXBhc3MgdGhlbSBp
biBzaXR1YXRpb25zIHdoZXJlIHRoZQotICAgICAgICAgICAgLy8gdmFycy1hdC10YWlsIHBvaW50
IHRvIGEgR2V0TG9jYWwsIHRoZSBHZXRMb2NhbCBpcyBkZWFkLCBidXQgdGhlIFBoaSBpdCBwb2lu
dHMKLSAgICAgICAgICAgIC8vIHRvIGlzIGFsaXZlLgotICAgICAgICAgICAgCisKKyAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKSB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIHBoaUluZGV4ID0gMDsgcGhpSW5kZXggPCBibG9jay0+cGhpcy5zaXplKCk7ICsrcGhp
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrLT5waGlzW3BoaUluZGV4XS0+c2hv
dWxkR2VuZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQg
YWN0dWFsbHkgZnJlZSBub2RlcyBoZXJlLiBFeGNlcHQgdGhhdCBpdCBwcm9iYWJseQotICAgICAg
ICAgICAgICAgICAgICAvLyBkb2Vzbid0IG1hdHRlciwgc2luY2Ugd2UgZG9uJ3QgYWRkIGFueSBu
b2RlcyBhZnRlciB0aGlzIHBoYXNlLgotICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjM5CisgICAgICAgICAgICAgICAgTm9k
ZSogcGhpID0gYmxvY2stPnBoaXNbcGhpSW5kZXhdOworICAgICAgICAgICAgICAgIGlmICghcGhp
LT5zaG91bGRHZW5lcmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxv
Y2F0b3IuZnJlZShwaGkpOwogICAgICAgICAgICAgICAgICAgICBibG9jay0+cGhpc1twaGlJbmRl
eC0tXSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgYmxvY2stPnBo
aXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyNywxMiArMTAxLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYmxvY2st
PnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhibG9jay0+dmFy
aWFibGVzQXRUYWlsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGlz
IGhhcyB0byBiZSBhIGZvcndhcmQgbG9vcCBiZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgaW5zZXJ0
aW9uIHNldC4KQEAgLTE0MSw0MCArMTA5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgY2FzZSBab21iaWVIaW50OgotICAgICAgICAg
ICAgICAgIC8vIFRoZXNlIGFyZSBub3Qga2lsbGFibGUuIChUaGV5IG9uY2Ugd2VyZS4pCi0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Zmxh
Z3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RD
aGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4
XTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2UuaXNQcm92ZWQo
KSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLCBlZGdl
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb1BoYW50b20oKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVz
ZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVmQ291bnQoMSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFy
QXJncykgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hp
bGRyZW4oKTsgY2hpbGRJZHgrKykgeworICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygp
KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sIGVkZ2UpOwog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDaGVjayk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4ucmVzZXQoKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZWZDb3VudCgxKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gfQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlZkNvdW50KDEpOwogICAgICAgICB9CiAK
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkBAIC0xODcsMTkgKzEzOSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gdmFyaWFibGVzW2ldOwogICAg
ICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhhbnRvbSAmJiBub2RlLT5vcCgpICE9IENoZWNrICYmIG5v
ZGUtPnNob3VsZEdlbmVyYXRlKCkpCisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBDaGVj
ayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKLSAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoaSB8fCBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hv
dWxkR2VuZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSBub2Rl
OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSAwOworICAgICAgICAgICAgdmFy
aWFibGVzW2ldID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsMTAgKzgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgbV9ibG9jayA9IGJs
b2NrOwogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBi
bG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRO
b2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGFkZFBoYW50b21z
SWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIGZpeHVwTm9kZShtX2N1cnJlbnROb2RlKTsKICAg
ICAgICAgfQotICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKQEAgLTE0MiwxNCArMTQwLDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKICAgICAgICAgICAgIGlmIChh
dHRlbXB0VG9NYWtlSW50ZWdlckFkZChub2RlKSkgewogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dE9wKEFyaXRoQWRkKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0
R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlck9yQm9vbGVhbkV4cGVjdGluZ0Rl
ZmluZWQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAg
ICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMjY4LDEyICsyNjQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5
dGhpbmcgaXMgcGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQotICAgICAgICAgICAgICAgIC8vIERv
dWJsZUFzSW50MzIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYvTW9kIG5vZGUgdGhh
dCB0aGUgY29udmVyc2lvbnMKLSAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGluc2VyZWQgb24u
Ci0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSk7Ci0KICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHJlZidpbmcg
b24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9tCiAgICAgICAg
ICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAgICAgIE5vZGUq
IG5ld0RpdmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTg0NSw3ICs4MzUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAg
ICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkpOwogICAgICAg
ICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKS5u
b2RlKCkpOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQoCkBAIC05
OTYsNyArOTg2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOiB7CiAgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CkBAIC0xMDEwLDYgKzk5OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAgICAgICAvLyBQ
aGFudG9tcyBhcmUgbWVhbmluZ2xlc3MgcGFzdCBGaXh1cC4gV2UgcmVjcmVhdGUgdGhlbSBvbi1k
ZW1hbmQgaW4gdGhlIGJhY2tlbmQuCisgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgRmlhdEludDUyOiB7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7CkBAIC0xMDczLDcgKzEwNjcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IElzU3RyaW5nOgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSkgewogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
Ci0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAg
b2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihub2RlKTsKQEAgLTEwODMsNyArMTA3Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAg
ICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE9iamVjdFVzZSkpOwog
ICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFu
KHRydWUpKTsKICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPYmplY3RVc2U+
KG5vZGUpOwpAQCAtMTE1NiwyOCArMTE1MCwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUmVm
UHRyPFR5cGVTZXQ+IHR5cGVTZXQgPSBub2RlLT50eXBlTG9jYXRpb24oKS0+bV9pbnN0cnVjdGlv
blR5cGVTZXQ7CiAgICAgICAgICAgICBSdW50aW1lVHlwZU1hc2sgc2VlblR5cGVzID0gdHlwZVNl
dC0+c2VlblR5cGVzKCk7CiAgICAgICAgICAgICBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3Jt
VG8oVHlwZU1hY2hpbmVJbnQpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hl
Y2soKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZv
cm1UbyhUeXBlTnVtYmVyIHwgVHlwZU1hY2hpbmVJbnQpKSB7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nKSkg
ewotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5cGVD
b25mb3JtVG8oVHlwZUJvb2xlYW4pKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
Q2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCB8IFR5cGVOdWxs
KSAmJiAoc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkgJiYgKHNlZW5UeXBlcyAmIFR5cGVOdWxs
KSkgewotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlw
ZUNvbmZvcm1UbyhUeXBlT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCBz
ZXQgPSB0eXBlU2V0LT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNldC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2tTdHJ1
Y3R1cmUobV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSk7CiAgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9DaGVja1N0cnVjdHVyZShtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzZXQp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTEyOTQsNyArMTI4OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBkZWNpc2lvbiBwcm9jZXNzIG11Y2ggZWFzaWVy
LgogICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihlZGdlLm5vZGUo
KSk7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdp
biwKICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAg
ICAgICAgIGVkZ2Uuc2V0VXNlS2luZChLbm93blN0cmluZ1VzZSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMzk2LDkgKzEzOTAsNiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQg
bGVmdFVzZUtpbmQ+CiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlRmFzdFN0cmluZ0FkZChOb2RlKiBu
b2RlLCBFZGdlJiBsZWZ0LCBFZGdlJiByaWdodCkKICAgICB7Ci0gICAgICAgIE5vZGUqIG9yaWdp
bmFsTGVmdCA9IGxlZnQubm9kZSgpOwotICAgICAgICBOb2RlKiBvcmlnaW5hbFJpZ2h0ID0gcmln
aHQubm9kZSgpOwotICAgICAgICAKICAgICAgICAgQVNTRVJUKGxlZnRVc2VLaW5kID09IFN0cmlu
Z1VzZSB8fCBsZWZ0VXNlS2luZCA9PSBTdHJpbmdPYmplY3RVc2UgfHwgbGVmdFVzZUtpbmQgPT0g
U3RyaW5nT3JTdHJpbmdPYmplY3RVc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzU3RyaW5n
T2JqZWN0VXNlPGxlZnRVc2VLaW5kPigpICYmICFjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vz
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKQpAQCAtMTQzMywxMiArMTQyNCw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgLy8gV2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBzbyB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAgICAvLyAqb3JpZ2luYWwqIGlucHV0cyB0byB0aGUg
YWRkaXRpb24gYXJlIGxpdmUgdXAgdG8gaGVyZS4KLSAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwg
bm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQpLCBFZGdlKG9yaWdp
bmFsUmlnaHQpKTsKLSAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VSb3BlKG5vZGUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTYyLDcgKzE1NDcsNyBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OlN0cmlu
ZykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgRWRnZShhcnJh
eSwgU3RyaW5nVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlNb2RlLm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCkBAIC0x
NzczLDcgKzE3NTgsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShu
b2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIEtu
b3duSW50MzJVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgZml4SW50T3JCb29sZWFuRWRnZShFZGdlJiBlZGdlKQpAQCAtMTc5NSw3
ICsxNzc5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwg
dXNlS2luZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2RlLCBJbnQzMlVz
ZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBmaXhEb3VibGVPckJvb2xlYW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0xODE3LDcgKzE4MDAs
NiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2RlLCB1c2VLaW5k
KTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIERvdWJsZVJlcFVzZSk7
Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQpAQCAtMTk5NywxMSArMTk3OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgZm9yIChtX2lu
ZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4
SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4
SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAg
ICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSk7CiAgICAgICAgICAg
ICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCBpbmplY3RU
eXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQotICAgICAgICBhZGRQaGFudG9tc0lm
TmVjZXNzYXJ5KCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAg
IH0KICAgICAKQEAgLTIwMTUsNyArMTk5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICBj
YXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCBmaXhFZGdlUmVwcmVzZW50YXRp
b24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDc2LDggKzIwNTUsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRn
ZS5ub2RlKCkpOwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+aXNOdW1iZXJDb25zdGFudCgpKSB7
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAg
ICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURvdWJsZSwgRG91
YmxlQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMDAsOCArMjA3Nyw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVk
Z2Uubm9kZSgpKTsKLQogICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTWFjaGluZUludENvbnN0YW50
KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJbnQsIElu
dDUyQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMjgsOCArMjEwMyw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJ
bnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwgbm9kZS0+b3Jp
Z2luLApAQCAtMjE0NSwzMiArMjExOCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9IH0KICAgICB9
CiAgICAgCi0gICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkKLSAgICB7Ci0g
ICAgICAgIG1fcmVxdWlyZWRQaGFudG9tcy5hcHBlbmQobm9kZSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3JlcXVpcmVk
UGhhbnRvbXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21zLnNpemUoKTsgaS0tOykgewot
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fcmVxdWlyZWRQaGFudG9tc1tpXTsKLSAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCi0gICAgICAg
ICAgICAgICAgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG1fcmVxdWlyZWRQaGFudG9tcy5yZXNpemUoMCk7Ci0gICAgfQotICAgIAogICAgIEJhc2lj
QmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAgICAgTm9kZSog
bV9jdXJyZW50Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgYm9v
bCBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkOwotICAgIFZlY3RvcjxOb2RlKiwgMz4gbV9yZXF1aXJl
ZFBoYW50b21zOwogfTsKICAgICAKIGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxODM0NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTkzLDI2ICs1OTMsNiBAQCB2b2lkIEdyYXBoOjpyZXNldFJlYWNoYWJpbGl0eSgpCiAg
ICAgZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiB9CiAKLXZvaWQgR3JhcGg6Om1lcmdlUmVsZXZh
bnRUb09TUigpCi17Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2Nrc0luTmF0dXJh
bE9yZGVyKCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlUmVsZXZhbnRUb09T
Uik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjYXNlIFB1dEhpbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxh
Z3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3Mg
UmVmQ291bnRDYWxjdWxhdG9yIHsKQEAgLTYyNSwxMiArNjA1LDYgQEAgcHVibGljOgogICAgIHZv
aWQgY2FsY3VsYXRlKCkKICAgICB7CiAgICAgICAgIC8vIEZpcnN0IHJlc2V0IHRoZSBjb3VudHMg
dG8gMCBmb3IgYWxsIG5vZGVzLgotICAgICAgICAvLwotICAgICAgICAvLyBBbHNvIHRha2UgdGhp
cyBvcHBvcnR1bml0eSB0byBwcmV0ZW5kIHRoYXQgQ2hlY2sgbm9kZXMgYXJlIG5vdCBOb2RlTXVz
dEdlbmVyYXRlLiBDaGVjawotICAgICAgICAvLyBub2RlcyBhcmUgTXVzdEdlbmVyYXRlIGJlY2F1
c2UgdGhleSBhcmUgZXhlY3V0ZWQgZm9yIGVmZmVjdCwgYnV0IHRoZXkgZm9sbG93IHRoZSBzYW1l
Ci0gICAgICAgIC8vIERDRSBydWxlcyBhcyBub2RlcyB0aGF0IGFyZW4ndCBNdXN0R2VuZXJhdGU6
IHRoZXkgb25seSBjb250cmlidXRlIHRvIHRoZSByZWYgY291bnQgb2YKLSAgICAgICAgLy8gdGhl
aXIgY2hpbGRyZW4gaWYgdGhlIGVkZ2VzIHJlcXVpcmUgY2hlY2tzLiBOb24tY2hlY2tpbmcgZWRn
ZXMgYXJlIHJlbW92ZWQuIE5vdGUgdGhhdAotICAgICAgICAvLyBmb3IgYW55IENoZWNrcyBsZWZ0
IG92ZXIsIHRoaXMgcGhhc2Ugd2lsbCB0dXJuIHRoZW0gYmFjayBpbnRvIE5vZGVNdXN0R2VuZXJh
dGUuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCFibG9jaykKQEAgLTY1NCwxMSArNjI4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIERG
R19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUsIGZpbmRUeXBlQ2hlY2tSb290KTsK
ICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZU11c3RHZW5lcmF0ZSkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IENoZWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHRyZWF0
IENoZWNrIG5vZGVzIGFzIE11c3RHZW5lcmF0ZS4gV2Ugd2lsbCBnbGFkbHkKLSAgICAgICAgICAg
ICAgICAgICAgLy8ga2lsbCB0aGVtIG9mZiBpbiB0aGlzIHBoYXNlLgotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT5wb3N0Zml4UmVmKCkpCiAgICAgICAgICAgICAgICAgICAgIG1fd29ya2xpc3QuYXBwZW5k
KG5vZGUpOwogICAgICAgICAgICAgfQpAQCAtMTI2MywxMiArMTIzMiw2IEBAIHZvaWQgR3JhcGg6
OmNvbnZlcnRUb0NvbnN0YW50KE5vZGUqIG5vZGUKIHsKICAgICBpZiAodmFsdWUtPnN0cnVjdHVy
ZSgpKQogICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQodmFsdWUtPnN0cnVjdHVyZSgpKTsKLSAg
ICBpZiAobV9mb3JtID09IFRocmVhZGVkQ1BTKSB7Ci0gICAgICAgIGlmIChub2RlLT5vcCgpID09
IEdldExvY2FsKQotICAgICAgICAgICAgZGV0aHJlYWQoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgQVNTRVJUKCFub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMpKTsKLSAgICB9
CiAgICAgbm9kZS0+Y29udmVydFRvQ29uc3RhbnQodmFsdWUpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw4ICs0NTIs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICB2b2lk
IHJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgCi0gICAgdm9pZCBtZXJnZVJlbGV2YW50VG9PU1Io
KTsKLSAgICAKICAgICB2b2lkIGNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAKICAgICB1bnNpZ25l
ZCB2YXJBcmdOdW1DaGlsZHJlbihOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjUsNiArMTI1LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluc2VydENvbnN0YW50Rm9y
VXNlKGluZGV4LCBvcmlnaW4sIGpzVW5kZWZpbmVkKCksIHVzZUtpbmQpOwogICAgIH0KICAgICAK
KyAgICBOb2RlKiBpbnNlcnRDaGVjayhzaXplX3QgaW5kZXgsIE5vZGVPcmlnaW4gb3JpZ2luLCBB
ZGphY2VuY3lMaXN0IGNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJl
bi5qdXN0Q2hlY2tzKCk7CisgICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoaW5kZXgsIFNw
ZWNOb25lLCBDaGVjaywgb3JpZ2luLCBjaGlsZHJlbik7CisgICAgfQorICAgIAorICAgIE5vZGUq
IGluc2VydENoZWNrKHNpemVfdCBpbmRleCwgTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBpbnNlcnRDaGVjayhpbmRleCwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZHJlbik7Cisg
ICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVfdCBpbmRleCwgTm9kZU9yaWdp
biBvcmlnaW4sIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hl
Y2soKSkKKyAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGluZGV4LCBTcGVjTm9uZSwgQ2hl
Y2ssIG9yaWdpbiwgZWRnZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBleGVj
dXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3
ICsyOTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheUJvdW5kczoKLSAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElD
TVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJ
Q01QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDcgKzI2Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGNvZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3QgYXNzZXJ0IHRoYXQn
cyB0aGUgY2FzZS4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAhKG5vZGUtPmZs
YWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICAKLSAgICAgICAgbm9kZVJlZiA9IG1f
Z3JhcGguYWRkTm9kZShTcGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luYWxPcmlnaW4sIG5vZGUtPmNo
aWxkcmVuKTsKKyAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgQ2hl
Y2ssIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5j
cHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDE1IEBAIGJvb2wgTm9kZTo6aGFzVmFy
aWFibGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6cmVtb3ZlKCkK
K3sKKyAgICBBU1NFUlQoIShmbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAgICAKKyAgICBj
aGlsZHJlbiA9IGNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAKKyAgICBzZXRPcEFuZERlZmF1
bHRGbGFncyhDaGVjayk7Cit9CisKIHZvaWQgTm9kZTo6Y29udmVydFRvSWRlbnRpdHkoKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDE1ICs0MDcsNyBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIG1fZmxhZ3MgPSBkZWZhdWx0RmxhZ3Mob3ApOwogICAgIH0KIAotICAgIHZv
aWQgY29udmVydFRvUGhhbnRvbSgpCi0gICAgewotICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFn
cyhQaGFudG9tKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjb252ZXJ0VG9DaGVjaygpCi0gICAg
ewotICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDaGVjayk7Ci0gICAgfQorICAgIHZvaWQg
cmVtb3ZlKCk7CiAKICAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0cnVjdHVyZVNl
dCogc2V0KQogICAgIHsKQEAgLTQyNSw3ICs0MTcsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAg
ICAgdm9pZCByZXBsYWNlV2l0aChOb2RlKiBvdGhlcikKICAgICB7Ci0gICAgICAgIGNvbnZlcnRU
b1BoYW50b20oKTsKKyAgICAgICAgcmVtb3ZlKCk7CiAgICAgICAgIHNldFJlcGxhY2VtZW50KG90
aGVyKTsKICAgICB9CiAKQEAgLTE1NTcsMjAgKzE1NDksNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KICAgICAKLSAgICBib29sIHdpbGxIYXZlQ29k
ZUdlbk9yT1NSKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNl
IFNldExvY2FsOgotICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2UgWm9tYmllSGlu
dDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFBoYW50b206Ci0gICAg
ICAgICAgICByZXR1cm4gY2hpbGQxKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2Ug
fHwgY2hpbGQyKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2UgfHwgY2hpbGQzKCku
dXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2U7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gc2hvdWxkR2VuZXJhdGUoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
ICAgICBib29sIGlzU2VtYW50aWNhbGx5U2tpcHBhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBvcCgpID09IENvdW50RXhlY3V0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjZGVmaW5lIE5vZGVBcml0aEZsYWdz
TWFzayAgICAgICAgICAgICAgIChOb2RlQmVoYXZpb3JNYXNrIHwgTm9kZUJ5dGVjb2RlQmFja1By
b3BNYXNrKQogCi0jZGVmaW5lIE5vZGVSZWxldmFudFRvT1NSICAgICAgICAgICAgICAgMHgxMDAw
MAorI2RlZmluZSBOb2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAgIDB4MTAwMDAgLy8gQ29t
cHV0ZWQgYnkgQ1BTUmV0aHJlYWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlvdSB3aGljaCBsb2NhbCBu
b2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEgRmx1c2guCiAKLSNkZWZpbmUgTm9k
ZUlzRmx1c2hlZCAgICAgICAgICAgICAgICAgICAweDIwMDAwIC8vIENvbXB1dGVkIGJ5IENQU1Jl
dGhyZWFkaW5nUGhhc2UsIHdpbGwgdGVsbCB5b3Ugd2hpY2ggbG9jYWwgbm9kZXMgYXJlIGJhY2t3
YXJkcy1yZWFjaGFibGUgZnJvbSBhIEZsdXNoLgotCi0jZGVmaW5lIE5vZGVNaXNjRmxhZzEgICAg
ICAgICAgICAgICAgICAgMHg0MDAwMAotI2RlZmluZSBOb2RlTWlzY0ZsYWcyICAgICAgICAgICAg
ICAgICAgIDB4ODAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAw
eDIwMDAwCisjZGVmaW5lIE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHg0MDAwMAor
I2RlZmluZSBOb2RlTWlzY0ZsYWczICAgICAgICAgICAgICAgICAgIDB4ODAwMDAKIAogdHlwZWRl
ZiB1aW50MzJfdCBOb2RlRmxhZ3M7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogYmFzaWMgYmxvY2sgbWlnaHQgaGF2ZSBy
ZWFkIGEgbG9jYWwgdmFyaWFibGUgaW4gYnl0ZWNvZGUuIFdlIG9ubHkgcmVtb3ZlIEdldExvY2Fs
cyBpZiBpdCAqL1wKICAgICAvKiBpcyByZWR1bmRhbnQgYmVjYXVzZSBvZiBhbiBlYXJsaWVyIEdl
dExvY2FsIG9yIFNldExvY2FsIGluIHRoZSBzYW1lIGJsb2NrLiBXZSBjb3VsZCBtYWtlICovXAog
ICAgIC8qIHRoZXNlIG5vdCBNdXN0R2VuZXJhdGUgYW5kIHVzZSBhIG1vcmUgc29waGlzdGljYXRl
ZCBhbmFseXNpcyB0byBpbnNlcnQgUGhhbnRvbUxvY2FscyBpbiAqL1wKLSAgICAvKiB0aGUgc2Ft
ZSB3YXkgdGhhdCB3ZSBpbnNlcnQgUGhhbnRvbXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDQwODYgKi9cCisgICAgLyogdGhlIHNhbWUgd2F5IHRoYXQgd2UgaW5z
ZXJ0IFBoYW50b21zLiBUaGF0J3MgaGFyZCBhbmQgcHJvYmFibHkgbm90IHByb2ZpdGFibGUuIFNl
ZSAqL1wKKyAgICAvKiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0
MDg2ICovXAogICAgIG1hY3JvKEdldExvY2FsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oU2V0TG9jYWwsIDApIFwKICAgICBcCkBAIC03Miw4ICs3Myw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhab21iaWVIaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbSwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBVc2VkIGlmIHdlIHdhbnQg
anVzdCBhIHR5cGUgY2hlY2sgYnV0IG5vdCBsaXZlbmVzcy4gTm9uLWNoZWNraW5nIHVzZXMgd2ls
bCBiZSByZW1vdmVkLiAqL1wKLSAgICBtYWNybyhVcHNpbG9uLCBOb2RlUmVsZXZhbnRUb09TUikg
XAotICAgIG1hY3JvKFBoaSwgTm9kZVJlbGV2YW50VG9PU1IpIFwKKyAgICBtYWNybyhVcHNpbG9u
LCAwKSBcCisgICAgbWFjcm8oUGhpLCAwKSBcCiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBcCkBAIC0yODEsMTAgKzI4MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAg
IG1hY3JvKENyZWF0ZURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8o
UGhhbnRvbURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUGhhbnRv
bURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKENyZWF0ZVNjb3BlZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNybyhQaGFudG9t
Q2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQaGFudG9tQ2xvbmVk
QXJndW1lbnRzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVu
dHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4NSw3
ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBOb2RlKiB0YXJnZXQgPSBu
b2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5k
aWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC03OTUsNyArNzk1LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAgICAg
Y2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNlIFB1dEhpbnQ6
CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIgot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUg
IkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7Ci0KLXN0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9kZU5lZWRzUGhhbnRv
bSA9IE5vZGVNaXNjRmxhZzE7Ci0KLWNsYXNzIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBoYW50b21DYW5vbmljYWxpemF0aW9uUGhh
c2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRvbSBjYW5vbmlj
YWxpemF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5jbGVhckZsYWdzT25BbGxOb2RlcyhOb2RlTmVlZHNQaGFudG9tIHwgTm9kZVJlbGV2
YW50VG9PU1IpOwotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigpOwotICAgICAg
ICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nr
cygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1f
Z3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1bnNpZ25lZCBz
b3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7Ci0g
ICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2sp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5j
eUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0g
bm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVk
Z2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9kZS0+
b3AoKSA9PSBQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQaGFu
dG9tIG9uIGEgbm9kZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVkIHRv
IGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhpcyBu
b2RlIGluc3RlYWQgb2YganVzdCBoYXZpbmcgYSBDaGVjay4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlZGdlLT5tZXJnZUZsYWdzKE5vZGVOZWVkc1BoYW50b20pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVD
aGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRo
ZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0g
ICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsg
YmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBo
LmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewot
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVOZWVkc1BoYW50b20pIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBu
b2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZvcm1Q
aGFudG9tQ2Fub25pY2FsaXphdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIENhbm9uaWNhbGl6YXRpb24gUGhhc2UiKTsK
LSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZT4oZ3JhcGgp
OwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25p
Y2FsaXphdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgJKHJldmlzaW9uIDE4MzQ0OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9oCi0K
LSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1jbGFzcyBHcmFwaDsKLQotLy8gUmVwbGFjZXMgYWxsIHByZS1leGlzdGluZyBQaGFudG9tcyB3
aXRoIENoZWNrcyBvciByZW1vdmVzIHRoZW0gaWYgdGhlIENoZWNrIGlzIHVubmVjZXNzYXJ5LiBJ
ZgotLy8gdGhlIFBoYW50b20gd2FzIG5lY2Vzc2FyeSAoaXQgdXNlcyBhIG5vZGUgdGhhdCBpcyBy
ZWxldmFudCB0byBPU1IpIHRoZW4gdGhlIFBoYW50b20gaXMgaG9pc3RlZAotLy8gdG8ganVzdCBi
ZWxvdyB0aGUgbm9kZS4KLS8vCi0vLyBUaGlzIHBoYXNlIGlzIG9ubHkgdmFsaWQgaW4gU1NBLCBi
ZWNhdXNlIGl0J3Mgb25seSBpbiBTU0EgdGhhdCBQaGFudG9tcyBhcmUgaWdub3JlZCBmb3IgdGhl
Ci0vLyBwdXJwb3NlIG9mIGxpdmVuZXNzLWF0LXNvbWUtcG9pbnQgYW5kIGFyZSBvbmx5IHVzZWQg
Zm9yIGFic29sdXRlIGxpdmVuZXNzLgotLy8KLS8vIFRoaXMgcGhhc2UgbWFrZXMgYSBsb3Qgb2Yg
dGhpbmdzIGVhc2llciwgbGlrZSBDRkcgc2ltcGxpZmljYXRpb246IHlvdSBkb24ndCBoYXZlIHRv
IGluc2VydCBhbnkKLS8vIHBoYW50b21zIHdoZW4gamV0dGlzb25pbmcgYSBDRkcgZWRnZS4KLQot
Ym9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmKTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAv
LyBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNp
b24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQp
Ci0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgot
I2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCi0jaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNs
YXNzIFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBo
YW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAi
cGhhbnRvbSByZW1vdmFsIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAg
ICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4
LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVkIHRvIGFscmVh
ZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJs
b2NrLT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2st
PnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBHZXRMb2Nh
bDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdl
IGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MDcuCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigp
OwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2Nr
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1
bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRl
eCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsK
LSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxs
cHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCAtIDIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9kZSBjb3VsZCBi
ZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24ndCBzdWJqZWN0
IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5vcmlnaW4uZm9y
RXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNrKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2su
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFu
dFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5
TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0
OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUt
PmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3Zl
RWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVu
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRv
ci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0gICAgCi1ib29sIHBlcmZvcm1Q
aGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhh
c2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgJKHJldmlzaW9u
IDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQ
aGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tUmVtb3ZhbFBo
YXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsK
LQotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9uIGNoaWxkcmVu
LiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxpbWluYXRlcyBt
YW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNzIGFuYWx5c2lz
LgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhvd2V2ZXIsIGlu
IFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wgcGVyZm9ybVBoYW50b21SZW1v
dmFsKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiCiAj
aW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBoYXNl
LmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmgi
CiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTUxLDEzICs1MiwxMCBAQAogI2luY2x1ZGUg
IkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FDb252ZXJzaW9uUGhhc2UuaCIK
ICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHU3RhY2tMYXlv
dXRQaGFzZS5oIgpAQCAtMzE4LDcgKzMxNiw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKGRmZyk7
CiAKICAgICAgICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAgICAgICAgcGVy
Zm9ybVBoYW50b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7CiAg
ICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAgICAgICBwZXJmb3JtRENFKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRmZyk7CkBAIC0zNDQsNyArMzQy
LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICAg
ICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgYml0LgorICAg
ICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBiaXQu
CiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhkZmcpOwogICAgICAgICBwZXJm
b3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVh
ZGluZyhkZmcpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKICAg
ICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKGRm
Zyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOyAvLyBSZWR1
Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7IC8v
IFJlZHVjZSB0aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcpOwogICAgICAg
ICBpZiAoT3B0aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSkgewpAQCAtMzgx
LDcgKzM3OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAg
ICAgICAgLy8gdGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1wbGUgU1NBIGZpeC11cC4KICAg
ICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAgICAgIHBlcmZvcm1QaGFudG9t
Q2Fub25pY2FsaXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAg
ICAgICBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1H
bG9iYWxDU0UoZGZnKTsKICAgICAgICAgCkBAIC0zOTAsMTUgKzM4OCwxMSBAQCBQbGFuOjpDb21w
aWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGRmZy5tX2ZpeHBvaW50U3Rh
dGUgPSBGaXhwb2ludENvbnZlcmdlZDsKICAgICAgICAgCiAgICAgICAgIHBlcmZvcm1TdG9yZUJh
cnJpZXJFbGlzaW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlv
bihkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwogICAgICAgICBw
ZXJmb3JtQ0ZBKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZUTE9TUkV4aXRM
aXZlbmVzcygpKQotICAgICAgICAgICAgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24o
ZGZnKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpIHsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpCiAgICAgICAgICAgICBw
ZXJmb3JtTW92SGludFJlbW92YWwoZGZnKTsKLSAgICAgICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fu
b25pY2FsaXphdGlvbihkZmcpOwotICAgICAgICB9CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8gV2UgcmVseSBvbiB0aGlzIHRvIGtpbGwg
ZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXplZCBhcyBkZWFkIGJ5IExMVk0uCiAgICAg
ICAgIHBlcmZvcm1TdGFja0xheW91dChkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFs
eXNpcyhkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Np
bmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBu
b2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsU3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG5vZGUt
PnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbC5vZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJl
Y3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIgot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5o
IgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCi0j
aW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicmVzdXJy
ZWN0aW9uIGZvciB2YWxpZGF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVu
KCkKLSAgICB7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVt
QmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmln
aW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLWJvb2wgcGVyZm9ybVJlc3Vy
cmVjdGlvbkZvclZhbGlkYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgUmVzdXJyZWN0aW9uIEZvciBWYWxpZGF0aW9uIFBoYXNlIik7
Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZT4oZ3Jh
cGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oCShyZXZpc2lvbiAxODM0
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlk
YXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2VfaAotI2RlZmluZSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdDb21tb24u
aCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBHcmFwaDsKLQot
Ly8gUGxhY2VzIGEgUGhhbnRvbSBhZnRlciBldmVyeSB2YWx1ZS1wcm9kdWNpbmcgbm9kZSwgdGhl
cmVieSBkaXNhYmxpbmcgRENFIGZyb20ga2lsbGluZyBpdC4KLS8vIFRoaXMgaXMgdXNlZnVsIGZv
ciB2YWxpZGF0aW5nIG91ciBPU1IgZXhpdCBtYWNoaW5lcnkgYnkgaW5zdGl0dXRpbmcgdGhlIHJl
cXVpcmVtZW50IHRoYXQKLS8vIGFueSBsaXZlLWluLWJ5dGVjb2RlIHZhcmlhYmxlIHNob3VsZCBi
ZSBPU1ItYXZhaWxhYmxlLiBXaXRob3V0IHRoaXMgcGhhc2UsIGl0J3MgaW1wb3NzaWJsZQotLy8g
dG8gbWFrZSBzdWNoIGFuIGFzc2VydGlvbiBiZWNhdXNlIG91ciBEQ0UgaXMgbW9yZSBhZ2dyZXNz
aXZlIHRoYW4gdGhlIGJ5dGVjb2RlIGxpdmVuZXNzCi0vLyBhbmFseXNpcy4KLQotYm9vbCBwZXJm
b3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlmIC8vIERGR1Jl
c3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4
MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZXNldCgp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JPcGVyYW5kLm9w
ZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2Fs
KCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
QEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZhbHVlRm9yT3Bl
cmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFNldEFy
Z3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgsNiArMTA2OCwxMiBAQCBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7Cisg
ICAgICAgIGlmIChzcGlsbEZvcm1hdCAhPSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgICAg
ICBERkdfQ1JBU0goCisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9k
ZSwgdG9DU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgIiwgZWRnZSwgIiB0
byBoYXZlIGRvdWJsZSBmb3JtYXQgYnV0IGluc3RlYWQgaXQgaXMgc3BpbGxlZCBhcyAiLAorICAg
ICAgICAgICAgICAgICAgICBkYXRhRm9ybWF0VG9TdHJpbmcoc3BpbGxGb3JtYXQpKS5kYXRhKCkp
OworICAgICAgICB9CiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50
Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAgIEZQUlJlZyBm
cHIgPSBmcHJBbGxvY2F0ZSgpOwogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2RlKiBub2RlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwotICAgICAgICBub2RlLT5jb252
ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgIH0KIAogICAgIHZv
aWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRCYXJyaWVycywgTm9kZSogbm9k
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHlPcGVy
YW5kVmFsdWUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9JZGVudGl0eU92
ZXJDaGlsZDEoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHlPcGVyYW5kVmFsdWUgPT0g
MC41KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9u
b2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9yaWdpbiwgbV9ub2RlLT5jaGls
ZHJlbik7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKG1f
bm9kZUluZGV4LCBtX25vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRU
b0FyaXRoU3FydCgpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTE2Niw4ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Zm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9kZSA9IG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1bHRS
ZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KICAgICAgICAgICAgICAgICAgICAgY2Fu
b25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhh
ZEludDMyQ2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBhZGRpbmcgSW50NTJSZXBJbnQzMlVzZSBvciBldmVuIERvdWJsZVJlcEludDMyVXNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggd291bGQgYmUgc3VwZXIgd2VpcmQuIFRoZSBs
YXR0ZXIgd291bGQgb25seSBhcmlzZSBpbiBzb21lCkBAIC0xNzUsOSArMTc0LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1bHRSZXByZXNlbnRh
dGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLCBJbnQzMlVzZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2soCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBFZGdlKG5v
ZGUsIEludDMyVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTIzOSw4ICsyMzcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9JZGVudGl0eU92ZXJDaGls
ZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKLSAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9u
b2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgbV9ub2RlLT5jaGlsZHJl
bi5yZW1vdmVFZGdlKGNoaWxkSW5kZXggXiAxKTsKICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsMzEgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGhh
bnRvbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5tX2Zvcm0pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTG9hZFN0b3JlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlZGdlLT5vcCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNl
dExvY2FsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUaHJlYWRlZENQUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU1NBOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdl
KSwgZWRnZS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xOTYsNyArMTcxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBmb3VuZFRlcm1p
bmFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBq
IDwgYmxvY2stPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
YmxvY2stPmF0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBu
b2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tTG9jYWwgfHwgbm9k
ZS0+b3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5vcCgpID09IFBoYW50b21Mb2NhbCB8
fCBub2RlLT5vcCgpID09IEZsdXNoIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2spOwogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKEVkZ2UgZWRn
ZSkgewpAQCAtNDM3LDEwICs0MTIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBj
YXNlIEdldExvY2FsOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEZsdXNoOgogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUg
JiYgIWopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgIXBoaXNJblRoaXNC
bG9jay5jb250YWlucyhlZGdlLm5vZGUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC00NjIsNiArNDMzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEdl
dFN0YWNrOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3Rl
ZCBub2RlIHR5cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0MSw2ICs1MTUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAgICAg
ICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICEiYmFkIG5vZGUgdHlwZSBmb3IgU1NBIik7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxzLmFwcGVuZChub2Rl
LT51bmxpbmtlZExvY2FsKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2FzZSBDaGVjazoK
ICAgICAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgudXNlcyhub2RlLCBjYW5kaWRhdGUpKQpAQCAtMjMyLDcgKzIzMSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gY2FuZGlkYXRlTm9kZUluZGV4ICsgMTsg
bm9kZUluZGV4IDw9IGxhc3RVc2VySW5kZXg7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2Ug
Q2hlY2s6CiAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICBjYXNlIFB1dEhp
bnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE4
MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDggKzk4LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwg
YmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLT53aWxs
SGF2ZUNvZGVHZW5Pck9TUigpICYmICFPcHRpb25zOjpzaG93QWxsREZHTm9kZXMoKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwogICAgICAgICAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJl
dmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOSArNDYzLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgIGNvbXBpbGVQdXRTdGFjaygpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgY2FzZSBDaGVj
azoKLSAgICAgICAgICAgIGNvbXBpbGVQaGFudG9tKCk7CisgICAgICAgICAgICBjb21waWxlTm9P
cCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAg
ICAgY29tcGlsZVRvVGhpcygpOwpAQCAtMTE2Miw3ICsxMTYxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVQaGFudG9tKCkKKyAgICB2b2lkIGNv
bXBpbGVOb09wKCkKICAgICB7CiAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3Jh
cGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251815</attachid>
            <date>2015-04-27 20:28:47 -0700</date>
            <delta_ts>2015-04-28 11:20:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>117802</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBA
QAorMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgbm90IHVzZSBvciBwcmVzZXJ2ZSBQaGFudG9tcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDM3MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFNpbmNlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MzIwNyBhbmQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzNDA2LCBpdCBpcworICAgICAgICBu
byBsb25nZXIgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIFBoYW50b21zIGR1cmluZyB0cmFuc2Zvcm1h
dGlvbnMuIFRoZXkgYXJlIHN0aWxsIHVzZWZ1bCBqdXN0CisgICAgICAgIGJlZm9yZSBGaXh1cFBo
YXNlIHRvIHN1cHBvcnQgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGFuYWx5c2VzLiBUaGV5IGFyZSBz
dGlsbCBpbnNlcnRlZCBsYXRlIGluIHRoZQorICAgICAgICBnYW1lIGluIHRoZSBERkcgYmFja2Vu
ZC4gQnV0IHRyYW5zZm9ybWF0aW9ucyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0uIElu
c2lkZSBhIGJhc2ljCisgICAgICAgIGJsb2NrLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHNvIGxvbmcg
YXMgdGhlIElSIHBpbnBvaW50cyB0aGUgcGxhY2Ugd2hlcmUgdGhlIHZhbHVlIGJlY29tZXMKKyAg
ICAgICAgYXZhaWxhYmxlIGluIGEgYnl0ZWNvZGUgcmVnaXN0ZXIgKHVzaW5nIE1vdkhpbnQpIGFu
ZCBzbyBsb25nIGFzIHRoZXJlIGlzIGEgU2V0TG9jYWwgYW55dGltZSBzb21lCisgICAgICAgIG90
aGVyIGJsb2NrIHdvdWxkIG5lZWQgdGhlIHZhbHVlIChlaXRoZXIgZm9yIE9TUiBvciBmb3IgREZH
IGV4ZWN1dGlvbiksIHRoZW4gd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgbGl2ZW5lc3MgbWFy
a2Vycy4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIHJlbW92ZXMgYW55IHBsYWNlcyB3aGVy
ZSB3ZSBpbnNlcnRlZCBQaGFudG9tcyBqdXN0IGZvciBsaXZlbmVzcyBkdXJpbmcgdHJhbnNmb3Jt
YXRpb24KKyAgICAgICAgYW5kIGl0IHJlcGxhY2VzIGNvbnZlcnRUb1BoYW50b20oKSB3aXRoIHJl
bW92ZSgpLCB3aGljaCBqdXN0IGNvbnZlcnRzIHRoZSBub2RlIHRvIGEgQ2hlY2suIEEKKyAgICAg
ICAgQ2hlY2sgbm9kZSBvbmx5IGtlZXBzIGl0cyBjaGlsZHJlbiBzbyBsb25nIGFzIHRob3NlIGNo
aWxkcmVuIGhhdmUgY2hlY2tzLgorICAgICAgICAKKyAgICAgICAgVGhlIGZhY3QgdGhhdCB3ZSBu
byBsb25nZXIgY29udmVydFRvUGhhbnRvbSgpIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBiZSBtb3Jl
IGNhcmVmdWwgd2hlbgorICAgICAgICBjb25zdGFudC1mb2xkaW5nIEdldExvY2FsLiBQcmV2aW91
c2x5IHdlIHdvdWxkIGNvbnZlcnRUb1BoYW50b20oKSBhbmQgdXNlIHRoZSBmYWN0IHRoYXQKKyAg
ICAgICAgUGhhbnRvbShQaGkpIHdhcyBhIHZhbGlkIGNvbnN0cnVjdC4gSXQncyBub3QgdmFsaWQg
YW55bW9yZS4gU28sIHdoZW4gY29uc3RhbnQgZm9sZGluZyBlbmNvdW50ZXJzCisgICAgICAgIGEg
R2V0TG9jYWwgaXQgbmVlZHMgdG8gaW5zZXJ0IGEgUGhhbnRvbUxvY2FsIGRpcmVjdGx5LiBUaGlz
IGFsbG93cyB1cyB0byBzaW1wbGlmeQorICAgICAgICBHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQo
KSBhIGJpdC4gTHVja2lseSwgbm9uZSBvZiB0aGUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2Qg
d291bGQgc2VlCisgICAgICAgIEdldExvY2Fscy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbmx5
IFBoYW50b20tbGlrZSBjcnVmdCBsZWZ0IG92ZXIgYWZ0ZXIgdGhpcyBwYXRjaCBpczoKKyAgICAg
ICAgCisgICAgICAgIC0gUGhhbnRvbXMgYmVmb3JlIEZpeHVwUGhhc2UuIEkga2luZCBvZiBsaWtl
IHRoZXNlLiBJdCBtZWFucyB0aGF0IGJlZm9yZSBGaXh1cFBoYXNlLCB3ZSBjYW4gZG8KKyAgICAg
ICAgICBiYWNrd2FyZHMgYW5hbHlzZXMgYW5kIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgdXNl
cnMgb2YgYSBub2RlIGluIERGRyBJUiBhcmUgYSBzdXBlcnNldCBvZgorICAgICAgICAgIHRoZSB1
c2VycyBvZiB0aGUgb3JpZ2luYWwgbG9jYWwncyBsaXZlIHJhbmdlIGluIGJ5dGVjb2RlLiBUaGlz
IGlzIGVzc2VudGlhbCBmb3Igc3VwcG9ydGluZyBvdXIKKyAgICAgICAgICBCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciB0aGlu
Z3MgbGlrZSBhc20uanMuCisgICAgICAgIAorICAgICAgICAtIFBoYW50b21Mb2NhbHMgYW5kIEdl
dExvY2FscyBiZWluZyBOb2RlTXVzdEdlbmVyYXRlLiBTZWUgZGlzY3Vzc2lvbiBpbgorICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYuIEl0IGFw
cGVhcnMgdGhhdCB0aGlzIGlzIG5vdCBhcyBldmlsIGFzIHRoZQorICAgICAgICAgIGFsdGVybmF0
aXZlcy4gVGhlIGJlc3QgbG9uZy10ZXJtIHBsYW4gaXMgdG8gc2ltcGx5IGRpdGNoIHRoZSBUaHJl
YWRlZENQUyBJUiBlbnRpcmVseSBhbmQgaGF2ZQorICAgICAgICAgIHRoZSBERkcgdXNlIFNTQS4g
Rm9yIG5vdywgc28gbG9uZyBhcyBhbnkgbmV3IERGRyBvcHRpbWl6YXRpb25zIHdlIGFkZCBhcmUg
YmxvY2stbG9jYWwgYW5kCisgICAgICAgICAgdHJlYXQgR2V0TG9jYWwvU2V0TG9jYWwgY29uc2Vy
dmF0aXZlbHksIHRoaXMgc2hvdWxkIGFsbCBiZSBzb3VuZC4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgY2hhbmdlIHNob3VsZCBiZSBwZXJmLW5ldXRyYWwgYWx0aG91Z2ggaXQgZG9lcyByZWR1Y2Ug
dGhlIHRvdGFsIHdvcmsgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgICAgZG9lcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5TGlzdDo6anVzdENoZWNrcyk6CisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNp
Y0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpyZXBsYWNlVGVybWlu
YWwpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFz
ZTo6a2VlcE9wZXJhbmRBbGl2ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRp
b25QaGFzZTo6bWVyZ2VCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpDUFNSZXRo
cmVhZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpj
bGVhclZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6
Y2Fub25pY2FsaXplRmx1c2hPclBoYW50b21Mb2NhbEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2FsaXplTG9jYWxzSW5CbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3Zh
bFBoYXNlLmNwcC4KKyAgICAgICAgKEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OkNsZWFuVXBQaGFz
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q2xlYW5VcFBoYXNlOjpydW4pOgorICAgICAgICAoSlND
OjpERkc6OnBlcmZvcm1DbGVhblVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUmVtb3Zh
bFBoYXNlOjpQaGFudG9tUmVtb3ZhbFBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QaGFudG9tUmVtb3ZhbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NsZWFu
VXBQaGFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21SZW1vdmFsUGhhc2UuaC4KKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6YWRkQmFzZUNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zml4VXBzaWxv
bnMpOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RENFUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVwQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpjbGVhblZhcmlhYmxlcyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFN0cmluZ0FkZFVzZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludENvbnZlcnRpbmdFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXhJbnRPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXhEb3VibGVPckJvb2xlYW5FZGdlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjppbmplY3RUeXBlQ29udmVyc2lvbnNJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdFR5cGVDb252ZXJzaW9uc0ZvckVkZ2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZFJlcXVpcmVkUGhhbnRvbSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YWRkUGhhbnRvbXNJZk5lY2Vzc2Fy
eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjptZXJnZVJlbGV2YW50VG9PU1IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnNlcnRpb25TZXQ6Omluc2VydENoZWNrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0xJQ01QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpyZW1vdmUpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cmVwbGFjZVdp
dGgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b20pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NoZWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjp3aWxsSGF2ZUNvZGVHZW5Pck9TUik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpsb3dlck5vblJl
YWRpbmdPcGVyYXRpb25zT25QaGFudG9tQWxsb2NhdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6
Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBk
ZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdQ
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToK
KyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2U6OmVsaWRlQmFy
cmllcik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmNvbnZlcnRUb0lkZW50aXR5
T3ZlckNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6
OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVTU0Ep
OgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9PcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQ
aGFudG9tKTogRGVsZXRlZC4KKwogMjAxNS0wNC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIxODM0MzggIlJlZ0V4cCBt
YXRjaGVzIGFycmF5cyBzaG91bGQgdXNlIGNvbnRpZ3VvdXMgaW5kZXhpbmciLiBJdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NiArMTM4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHQ1NFUGhhc2UuY3BwCiAgICAgZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKyAgICBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAogICAgIGRmZy9ERkdD
bG9iYmVyU2V0LmNwcAogICAgIGRmZy9ERkdDbG9iYmVyaXplLmNwcAogICAgIGRmZy9ERkdDb21t
b24uY3BwCkBAIC0yMDIsOSArMjAzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKICAgICBkZmcvREZHT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKICAgICBkZmcvREZHT3BlcmF0aW9ucy5jcHAKLSAg
ICBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUGhh
bnRvbUluc2VydGlvblBoYXNlLmNwcAotICAgIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNw
cAogICAgIGRmZy9ERkdQaGFzZS5jcHAKICAgICBkZmcvREZHUGhpQ2hpbGRyZW4uY3BwCiAgICAg
ZGZnL0RGR1BsYW4uY3BwCkBAIC0yMTQsNyArMjEzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCiAgICAgZGZnL0RGR1B1
cmVWYWx1ZS5jcHAKICAgICBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCi0gICAgZGZn
L0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHU1NBQ2Fs
Y3VsYXRvci5jcHAKICAgICBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9E
RkdTU0FMb3dlcmluZ1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zODAsNiArMzgwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdD
YXBhYmlsaXRpZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0NG
QVBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdDbGVhblVwUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERG
R0Nsb2JiZXJpemUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Ns
b2JiZXJTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbW1v
bi5jcHAiIC8+CkBAIC00NDYsOSArNDQ3LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3Bw
IiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21DYW5vbmljYWxp
emF0aW9uUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1Bo
YW50b21JbnNlcnRpb25QaGFzZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxk
ZmdcREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR1BoaUNoaWxkcmVuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdQbGFuLmNwcCIgLz4KQEAgLTQ1OCw3ICs0NTcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXJlVmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCIgLz4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhZmVwb2ludC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHU3BlY3VsYXRpdmVKSVQuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIiAvPgpAQCAtMTA2Miw2ICsxMDYwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdDQ2FsbEhlbHBlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdDRkFQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdDbGVhblVwUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdDbG9iYmVyaXplLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xv
YmJlclNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbW1vbi5o
IiAvPgpAQCAtMTE0Miw5ICsxMTQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdFByZXBhcmF0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoYW50b21SZW1vdmFsUGhh
c2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFzZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1BoaUNoaWxkcmVuLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGxhbi5oIiAvPgpAQCAtMTE1OCw3ICsxMTU1
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1JlZ2lzdGVyQmFu
ay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1JlZ2lzdGVyU2V0Lmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU2Fm
ZVRvRXhlY3V0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhZmVw
b2ludC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2
NSw4ICszNjUsNiBAQAogCQkwRjY2NkVDMTE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjY2RUM2MTgz
NTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzIxODM1NjcyQjAwRDAxN0YxIC8qIERG
R0F2YWlsYWJpbGl0eS5jcHAgKi87IH07CiAJCTBGNjY2RUM3MTgzNTY3MkIwMEQwMTdGMSAvKiBE
RkdBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjY2RUMzMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjY2NkVDQzE4
MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUNBMTgz
NkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICov
OyB9OwotCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRh
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNG
MTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERG
R0VkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2ODJGQjIxOUJDQjM2NDAwRkEzQkFEIC8q
IERGR1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2ODJGQjAxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3Iu
Y3BwICovOyB9OwpAQCAtNDEwLDggKzQwOCw2IEBACiAJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEw
QyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4NTQxOUEyOTBCMjAwRjYzMTBDIC8qIERG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0Nh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTREMTRDM0NE
NEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjdCMzY2
MTE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdCMzY1RjE5
N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgKi87
IH07Ci0JCTBGN0IzNjYyMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAv
KiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgz
MzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07
CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2
MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NjIsNiArNDU4LDggQEAKIAkJ
MEY5RDMzOTcxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJD
IC8qIERGR0ZsdXNoZWRBdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTgx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgKi87IH07CiAJCTBGOUQzMzlCMTgw
M0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk5MTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFj
a01hcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzNjkyMUFFOUNDMzMw
MDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICovOyB9OworCQkwRjlEMzY5NTFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzY5MzFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5V
cFBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY5RkI0RjQxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjIxN0ZD
QjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovOyB9OwogCQkwRjlGQjRG
NTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2N0Y4
IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5jcHAgKi87IH07CkBAIC01MTksOCArNTE3LDYgQEAKIAkJMEZCRTBGNzcxNkMxREIxMjAwODJD
NUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUwRjcwMTZDMURCMDEwMDgyQzVFOCAvKiBERkdVbmlmaWNh
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZCRjE1OEMxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkYxNThBMTlCN0E1MzEw
MDY5NUREMCAvKiBERkdCbG9ja1NldC5jcHAgKi87IH07CiAJCTBGQkYxNThEMTlCN0E1MzEwMDY5
NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkYxNThCMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1Nl
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRkJGREQwNDE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJGREQw
MjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAgKi87IH07Ci0J
CTBGQkZERDA1MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJGREQwMzE5NkM5
MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcxMTQ2OTNB
RjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkMwOTc3MjE0NjkzQUY5MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLzsgfTsK
QEAgLTIxMDIsOCArMjA5OCw2IEBACiAJCTBGNjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2NkVD
MjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5jcHA7IHBhdGggPSBkZmcvREZH
QXZhaWxhYmlsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzMx
ODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuaDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxp
dHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2NjZFQ0ExODM2QjM3RTAwRDAx
N0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhh
c2UuY3BwOyBwYXRoID0gZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAv
KiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FkamFjZW5jeUxpc3Qu
aDsgcGF0aCA9IGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0VkZ2UuaDsgcGF0aCA9IGRmZy9ERkdFZGdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjgyRkIwMTlCQ0IzNjQwMEZBM0JBRCAvKiBE
RkdTU0FDYWxjdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NTQUNhbGN1bGF0b3IuY3BwOyBwYXRoID0gZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0NSw4ICsyMTM5LDYgQEAKIAkJMEY3NzAw
OTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjc5MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3OTA4NTQxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8q
IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGN0IzNjYwMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTk3LDYgKzIxODksOCBAQAogCQkwRjlEMzM5NTE3RkZDNEU2MDA3M0MyQkMg
LyogREZHRmx1c2hlZEF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Zs
dXNoZWRBdC5oOyBwYXRoID0gZGZnL0RGR0ZsdXNoZWRBdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjlEMzM5ODE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFN0YWNrTWFwcy5jcHA7IHBh
dGggPSBmdGwvRlRMU3RhY2tNYXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RDMzOTkxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTdGFja01hcHMuaDsgcGF0aCA9IGZ0bC9GVExTdGFja01h
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDM2OTIxQUU5Q0MzMzAwMEQ0
REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzNjkzMUFFOUNDMzMwMDBENERG
QiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQ2xlYW5VcFBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ2xlYW5VcFBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFj
a0xheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3Rjgg
LyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTdGFja0xheW91dFBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAg
LyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyNjQsOCArMjI1OCw2IEBACiAJCTBGQkUwRjcwMTZDMURCMDEwMDgyQzVF
OCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1VuaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkYxNThBMTlCN0E1MzEwMDY5NURE
MCAvKiBERkdCbG9ja1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdCbG9ja1NldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tTZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkJGMTU4QjE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tT
ZXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrU2V0
SW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrU2V0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRkJGREQwMjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCRkREMDMxOTZDOTJCRjAwN0E1
QkZBIC8qIERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1BoYW50b21S
ZW1vdmFsUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NjgxNDY4
QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRD
b21waWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29t
cGlsZXIuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlcjY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4
aXRDb21waWxlcjY0LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODgwLDYgKzQ4NzIsOCBAQAogCQkJCTBGRkZD
OTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovLAogCQkJCTBGM0IzQTI0MTU0
NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkw
RjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICov
LAorCQkJCTBGOUQzNjkyMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICov
LAorCQkJCTBGOUQzNjkzMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCAqLywK
IAkJCQlBNzdBNDIzODE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5jcHAgKi8sCiAJ
CQkJQTc3QTQyMzkxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuaCAqLywKIAkJCQlB
NzdBNDIzQTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNldC5jcHAgKi8sCkBAIC01MDI2
LDEyICs1MDIwLDggQEAKIAkJCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlci5oICovLAogCQkJCTBGMjM1QkU5MTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovLAogCQkJCTBGMjM1QkVBMTcxNzhFNzMwMDY5MEM3
RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCAqLywKLQkJCQkwRjdCMzY1RjE5N0M1MjVDMDBF
RDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgKi8sCi0JCQkJMEY3
QjM2NjAxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2Uu
aCAqLywKIAkJCQkwRjYyMzc5NTFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlv
blBoYXNlLmNwcCAqLywKIAkJCQkwRjYyMzc5NjFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRv
bUluc2VydGlvblBoYXNlLmggKi8sCi0JCQkJMEZCRkREMDIxOTZDOTJCRjAwN0E1QkZBIC8qIERG
R1BoYW50b21SZW1vdmFsUGhhc2UuY3BwICovLAotCQkJCTBGQkZERDAzMTk2QzkyQkYwMDdBNUJG
QSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NEYxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR1BoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUGhhc2UuaCAqLywKIAkJCQkwRjJCOUNERTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhp
Q2hpbGRyZW4uY3BwICovLApAQCAtNTA1Myw4ICs1MDQzLDYgQEAKIAkJCQkwRjNBMUJGNzFBOUVD
QjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwICovLAogCQkJCTBGM0Ex
QkY4MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oICovLAogCQkJ
CTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAqLywKLQkJCQkw
RjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBo
YXNlLmNwcCAqLywKLQkJCQkwRjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4
IC8qIERGR1NhZmVwb2ludC5jcHAgKi8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1NhZmVwb2ludC5oICovLAogCQkJCUE3N0E0MjNDMTdBMEJCRkQwMEE4REI4MSAvKiBERkdT
YWZlVG9FeGVjdXRlLmggKi8sCkBAIC01ODY4LDcgKzU4NTYsNiBAQAogCQkJCTBGQkUwRjc1MTZD
MURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlERDExMzI4REY4MjAwMkIyQUQ3
IC8qIERGR1JlZ2lzdGVyQmFuay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2NjZFQ0QxODM2QjM3
RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyRkNDRkMxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyNDMxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4
ZWN1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBE
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC01OTQzLDYgKzU5MzAsNyBAQAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExF
eGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENzE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRDkxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY5RDM2OTUxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREIxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4
aXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzQ0UwODYxOEJDMUE1NjAwQkVERjc2IC8q
IENvbnNvbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RjI5OTZDMTdBMEJCNjcw
MDEwNDE3QSAvKiBGVExGYWlsLmggaW4gSGVhZGVycyAqLywKQEAgLTYwNTMsNyArNjA0MSw2IEBA
CiAJCQkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0
NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkJGREQw
NTE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4
MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTQyLDcgKzYxMjksNiBAQAog
CQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMzE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0IzNjYyMTk3QzUyNUMwMEVEMURE
QyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjVBMTI3NDE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY2MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzExMCw2ICs3MDk2LDcgQEAKIAkJCQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyog
REZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAw
RjUyODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5
NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEzMjhERjgy
MDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MTUyLDcgKzcxMzks
NiBAQAogCQkJCUE3OEE5NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcy
NTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTBGNjY2RUNDMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkIxOEE2MDA3MDAwMUEyN0Y4
IC8qIERGR1NhZmVwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOUREMjEzMjhERjgy
MDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4
ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03MzY3LDcgKzczNTMsNiBAQAogCQkJCUE1MDNGQTFEMTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNEMEJCQzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjdCMzY2MTE5N0M1MjVDMDBFRDFEREMgLyogREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjVE
NzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTc0REVGOTUxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03NTQwLDcgKzc1MjUsNiBAQAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3
NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYy
QjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRDNDE1RjZC
NkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCShyZXZp
c2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5jeUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDYgKzE1NiwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBBZGphY2VuY3lMaXN0KEZpeGVkLCBjaGlsZDEoKS5zYW5pdGl6ZWQo
KSwgY2hpbGQyKCkuc2FuaXRpemVkKCksIGNoaWxkMygpLnNhbml0aXplZCgpKTsKICAgICB9CiAg
ICAgCisgICAgQWRqYWNlbmN5TGlzdCBqdXN0Q2hlY2tzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFkamFjZW5jeUxpc3QgcmVzdWx0KEZpeGVkKTsKKyAgICAgICAgdW5zaWduZWQgc291cmNlSW5k
ZXggPSAwOworICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7CisgICAgICAgIHdoaWxl
IChzb3VyY2VJbmRleCA8IEFkamFjZW5jeUxpc3Q6OlNpemUpIHsKKyAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IGNoaWxkKHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAgaWYgKCFlZGdlKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5jaGlsZCh0YXJnZXRJbmRleCsrKSA9IGVkZ2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXNj
YXBlKG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVjazoKICAg
ICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50
OgpAQCAtMzUzLDcgKzM1Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNl
dE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21EaXJlY3RBcmd1bWVudHMpOwotICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgpAQCAtMzYxLDcgKzM1OSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b21DbG9uZWRBcmd1bWVudHMp
OwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgg
KyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBFZGdlKG5vZGUpKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewpAQCAtNDg1LDcgKzQ4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIFB1
dFN0YWNrLCBub2RlLT5vcmlnaW4sIE9wSW5mbyhkYXRhKSwgRWRnZSh2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNTM2LDcgKzUz
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hpbGQx
KCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgQmFzaWNCbG9jazo6cmVwbGFjZVRlcm1pbmFsKE5vZGUqIG4KICAgICAgICAg
YXBwZW5kKG5vZGUpOwogICAgIGVsc2UgewogICAgICAgICBtX25vZGVzLmluc2VydChyZXN1bHQu
aW5kZXggKyAxLCBub2RlKTsKLSAgICAgICAgcmVzdWx0Lm5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKKyAgICAgICAgcmVzdWx0Lm5vZGUtPnJlbW92ZSgpOwogICAgIH0KICAgICAKICAgICBBU1NF
UlQodGVybWluYWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDggQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICAgICAgY2FzZSBSZXR1cm46
CiAgICAgICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAgICAgICAgIHJldHVybiBO
b2RlQW5kSW5kZXgobm9kZSwgaSk7Ci0gICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4g
Y29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBi
ZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4KKyAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgorICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsOCAr
MjcyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlOwogICAgICAgICBp
ZiAobGl2ZW5lc3NOb2RlLT5mbGFncygpICYgTm9kZUlzRmx1c2hlZCkKICAgICAgICAgICAgIG5v
ZGVUeXBlID0gRmx1c2g7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvLyBUaGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBiZWNhdXNlIHdl
IGNvdWxkIGp1c3QgcmVtYXRlcmlhbGl6ZQorICAgICAgICAgICAgLy8gUGhhbnRvbUxvY2FscyBv
ciBzb21ldGhpbmcgc2ltaWxhciB1c2luZyBieXRlY29kZSBsaXZlbmVzcy4gSG93ZXZlciwgaW4g
VGhyZWFkZWRDUFMsIGl0J3MKKyAgICAgICAgICAgIC8vIHdvcnRoIHRoZSBzYW5pdHkgdG8gbWFp
bnRhaW4gdGhpcyBlYWdlcmx5LiBTZWUKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYKICAgICAgICAgICAgIG5vZGVUeXBlID0gUGhh
bnRvbUxvY2FsOworICAgICAgICB9CiAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAogICAgICAg
ICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIG5vZGVUeXBlLCBub2RlT3JpZ2luLCAKICAgICAgICAg
ICAgIE9wSW5mbyhsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CkBAIC0zMTcs
MTEgKzMyMiwxMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBrZXB0IGFsaXZlLgogICAgICAgICAK
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2NrIHNpbmNlIHdlIGRv
bid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKLSAgICAgICAgLy8gcmVhbGx5IHJl
bW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4KKyAgICAgICAgLy8g
cmVhbGx5IHJlbW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgY2hlY2suCiAgICAg
ICAgIE5vZGUqIHRlcm1pbmFsID0gZmlyc3RCbG9jay0+dGVybWluYWwoKTsKICAgICAgICAgQVNT
RVJUKHRlcm1pbmFsLT5pc1Rlcm1pbmFsKCkpOwogICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5
Tm9kZU9yaWdpbiA9IHRlcm1pbmFsLT5vcmlnaW47Ci0gICAgICAgIHRlcm1pbmFsLT5jb252ZXJ0
VG9QaGFudG9tKCk7CisgICAgICAgIHRlcm1pbmFsLT5yZW1vdmUoKTsKICAgICAgICAgQVNTRVJU
KHRlcm1pbmFsLT5yZWZDb3VudCgpID09IDEpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gamV0dGlzb25lZEJsb2Nrcy5zaXplKCk7IGktLTspIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQCBjbGFzcyBD
UFNSZXRocmVhZGluZ1BoYXNlIDogcHVibGljIFBoYXNlCiBwdWJsaWM6CiAgICAgQ1BTUmV0aHJl
YWRpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJDUFMgcmV0
aHJlYWRpbmciKQotICAgICAgICAsIG1fYXZhaWxhYmxlRm9yT1NSKE9wZXJhbmRzTGlrZSwgZ3Jh
cGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtMTI2
LDE0ICsxMjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgbV9i
bG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCkKICAgICAgICAgICAg
ID09IG1fYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zaXplRm9yPG9wZXJhbmRLaW5kPigpKTsKLSAg
ICAgICAgQVNTRVJUKAotICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkKLSAgICAgICAgICAgID09IG1fYXZhaWxhYmxlRm9yT1NSLnNpemVG
b3I8b3BlcmFuZEtpbmQ+KCkpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLnNpemVGb3I8b3BlcmFuZEtpbmQ+KCk7IGktLTspIHsK
ICAgICAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4o
aSkgPSBudWxscHRyOwogICAgICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRUYWlsLmF0Rm9y
PG9wZXJhbmRLaW5kPihpKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9T
Ui5hdEZvcjxvcGVyYW5kS2luZD4oaSkgPSBFZGdlKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
CkBAIC0yNDcsOCArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyByZWR1bmRh
bnQgYW5kIGluZWZmaWNpZW50LCBzaW5jZSByZWFsbHkgaXQganVzdCBtZWFucyB0aGF0IHdlIHdh
bnQgdG8KICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZSBsYXN0IE1vdkhpbnRlZCB2YWx1ZSBv
ZiB0aGF0IGxvY2FsIGFsaXZlLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMShtX2F2YWlsYWJsZUZvck9TUi5hdEZvcjxvcGVyYW5kS2lu
ZD4oaWR4KSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAg
ICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzU5LDE0ICszNTMsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZVNldChub2RlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgTW92SGludDoKLSAgICAg
ICAgICAgICAgICBtX2F2YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwo
KSkgPSBub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDoKLSAgICAgICAgICAgICAgICBtX2F2
YWlsYWJsZUZvck9TUi5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSkgPSBFZGdlKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTE3LDcgKzUw
Myw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBoaVN0YWNrRW50cnksIDEyOD4gbV9hcmd1bWVu
dFBoaVN0YWNrOwogICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+IG1fbG9jYWxQaGlTdGFj
azsKICAgICBWZWN0b3I8Tm9kZSosIDEyOD4gbV9mbHVzaGVkTG9jYWxPcFdvcmtsaXN0OwotICAg
IE9wZXJhbmRzPEVkZ2U+IG1fYXZhaWxhYmxlRm9yT1NSOwogfTsKIAogYm9vbCBwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOCArMjM0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0dXRpb24o
bV9ub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkg
PT0gSWRlbnRpdHkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9DaGVj
aygpOwotICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnNldFJlcGxhY2VtZW50KG1fbm9kZS0+
Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0
aChtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBydWxlIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGxvY2FsIENTRSwgc2luY2UgaW4gU1NB
IGZvcm0gd2UgaGF2ZSBhbHJlYWR5CkBAIC00MzcsOCArNDM2LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gSWRlbnRpdHkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPnNldFJlcGxhY2VtZW50KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChtX25vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNsb2JiZXJpemUobV9ncmFw
aCwgbV9ub2RlLCAqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbGVhblVwUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NsZWFuVXBQaGFzZS5oIgorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2Vy
dGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CisKK2NsYXNzIENsZWFuVXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6Cisg
ICAgQ2xlYW5VcFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNs
ZWFuIHVwIikKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAg
ICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0
SW5kZXggPSAwOworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUo
KSkgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgr
Kyk7CisgICAgICAgICAgICAgICAgYm9vbCBraWxsID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2spCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrOgor
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAga2lsbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
a2lsbCkKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FsbG9jYXRvci5mcmVlKG5vZGUp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0KHRh
cmdldEluZGV4KyspID0gbm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrLT5y
ZXNpemUodGFyZ2V0SW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKKyAgICB9Cit9OworICAgIAorYm9vbCBwZXJmb3JtQ2xlYW5VcChHcmFwaCYgZ3Jh
cGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDbGVhbiBVcCBQ
aGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxDbGVhblVwUGhhc2U+KGdyYXBoKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NsZWFuVXBQaGFzZV9oCisj
ZGVmaW5lIERGR0NsZWFuVXBQaGFzZV9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworLy8gQ2xlYW5zIHVw
IHVubmVlZGVkIG5vZGVzLCBsaWtlIGVtcHR5IENoZWNrcyBhbmQgUGhhbnRvbXMuCisKK2Jvb2wg
cGVyZm9ybUNsZWFuVXAoR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdDbGVhblVwUGhhc2VfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
NyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2V0ID0gbm9kZS0+c3Ry
dWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vi
c2V0T2Yoc2V0KSkgewogICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUo
aW5kZXhJbkJsb2NrKTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNl
bGwuCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgIGVsaW1p
bmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CkBAIC0xMzMsOCArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDaGVjayhpbmRleEluQmxvY2ssIG5vZGUtPm9yaWdpbiwg
bm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NvbnN0YW50
U3RvcmFnZVBvaW50ZXIodmlldy0+dmVjdG9yKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtMTQ3LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzRHluYW1pY0Nhc3Q8U3RydWN0dXJl
Kj4odmFsdWUudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29u
dGFpbnMoc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxHb29kKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZWxpbWluYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTc5LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5aWZ5OiB7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUo
KS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwog
ICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMTg4LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUub25s
eVN0cnVjdHVyZSgpICE9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAg
ICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMTk2LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IENoZWNrQ2VsbDogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCkgIT0gbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhh
bnRvbSgpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAg
IGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMjA0LDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENoZWNrTm90
RW1wdHk6IHsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiBTcGVjRW1wdHkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIxNCw3ICsyMTMsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQg
JiYgbGVmdC5pc0ludDMyKCkgJiYgcmlnaHQuaXNJbnQzMigpCiAgICAgICAgICAgICAgICAgICAg
ICYmIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZWZ0LmFzSW50MzIoKSkgPCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocmlnaHQuYXNJbnQzMigpKSkgewotICAgICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwog
ICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNTEyLDE0ICs1MTEsMTYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGlmICghKnZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdp
bjsKLSAgICAgICAgICAgIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2Rl
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgICAgICAgICAvLyBO
ZWVkIHRvIHByZXNlcnZlIGJ5dGVjb2RlIGxpdmVuZXNzIGluIFRocmVhZGVkQ1BTIGZvcm0uIFRo
aXMgd291bGRuJ3QgYmUgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgLy8gaWYgaXQgd2Fzbid0
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDg2LgogICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRyZW4pOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tTG9jYWwsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5k
ZXRocmVhZCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxk
cmVuKTsKKyAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgdmFsdWUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQpA
QCAtNjQwLDEwICs2NDEsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYmFzZVZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkg
ewotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYmFzZVZhbHVlLm1fdHlwZSAmIH5TcGVj
Q2VsbCkKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENoZWNrKGluZGV4SW5CbG9j
aywgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
YWRkQ2hlY2tzKApAQCAtNjgzLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAg
ICAgY2FzZSBJbnQ1MkNvbnN0YW50OgotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1Bo
YW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgREZHX0NSQVNI
KG1fZ3JhcGgsIG5vZGUsICJCYWQgVXBzaWxvbiBwaGkoKSBwb2ludGVyIik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDI3ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtX2dyYXBo
LmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpIHsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBo
LmJsb2Nrc0luUHJlT3JkZXIoKSkKLSAgICAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gVGhpcyBpcyBsaWtlIGNsZWFuVmFyaWFibGVz
LCBidXQgaGFzIGEgbXVjaCBzaW1wbGVyIGFwcHJvYWNoIHRvIEdldExvY2FsLgotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKLSAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYgbm9kZS0+b3AoKSAh
PSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9n
cmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQotICAgICAgICAgICAgICAgIGZpeHVwQmxv
Y2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7Ci0gICAgICAgICAgICBjbGVhblZhcmlhYmxl
cyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCisgICAgICAgICAgICBmaXh1
cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCisgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgu
bV9hcmd1bWVudHMpOworCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNr
IGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTEwNCwyMiArODgsMTIgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAotICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7Ci0gICAgICAgIGNhc2Ug
U1NBOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBUaHJl
YWRlZENQUzogewotICAgICAgICAgICAgLy8gQ2xlYW4gdXAgdmFyaWFibGUgbGlua3MgZm9yIHRo
ZSBibG9jay4gV2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSB0aGUgYWN0dWFsIERDRQotICAgICAg
ICAgICAgLy8gYmVjYXVzZSB3ZSBuZWVkIHRvIHNlZSBHZXRMb2NhbHMsIHNvIHdlIGNhbiBieXBh
c3MgdGhlbSBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZQotICAgICAgICAgICAgLy8gdmFycy1hdC10
YWlsIHBvaW50IHRvIGEgR2V0TG9jYWwsIHRoZSBHZXRMb2NhbCBpcyBkZWFkLCBidXQgdGhlIFBo
aSBpdCBwb2ludHMKLSAgICAgICAgICAgIC8vIHRvIGlzIGFsaXZlLgotICAgICAgICAgICAgCisK
KyAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHBoaUluZGV4ID0gMDsgcGhpSW5kZXggPCBibG9jay0+cGhpcy5zaXpl
KCk7ICsrcGhpSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrLT5waGlzW3BoaUlu
ZGV4XS0+c2hvdWxkR2VuZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgYWN0dWFsbHkgZnJlZSBub2RlcyBoZXJlLiBFeGNlcHQgdGhhdCBpdCBwcm9iYWJs
eQotICAgICAgICAgICAgICAgICAgICAvLyBkb2Vzbid0IG1hdHRlciwgc2luY2Ugd2UgZG9uJ3Qg
YWRkIGFueSBub2RlcyBhZnRlciB0aGlzIHBoYXNlLgotICAgICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjM5CisgICAgICAgICAg
ICAgICAgTm9kZSogcGhpID0gYmxvY2stPnBoaXNbcGhpSW5kZXhdOworICAgICAgICAgICAgICAg
IGlmICghcGhpLT5zaG91bGRHZW5lcmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hbGxvY2F0b3IuZnJlZShwaGkpOwogICAgICAgICAgICAgICAgICAgICBibG9jay0+cGhp
c1twaGlJbmRleC0tXSA9IGJsb2NrLT5waGlzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAg
YmxvY2stPnBoaXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyNywxMiAr
MTAxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2xlYW5WYXJpYWJs
ZXMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhi
bG9jay0+dmFyaWFibGVzQXRUYWlsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUaGlzIGhhcyB0byBiZSBhIGZvcndhcmQgbG9vcCBiZWNhdXNlIHdlIGFyZSB1c2luZyB0
aGUgaW5zZXJ0aW9uIHNldC4KQEAgLTE0MSw0MCArMTA5LDI0IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBpZiAobm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewot
ICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICAgICAgY2FzZSBab21iaWVIaW50Ogot
ICAgICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBub3Qga2lsbGFibGUuIChUaGV5IG9uY2Ugd2Vy
ZS4pCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
W2NoaWxkSWR4XTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uu
aXNQcm92ZWQoKSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3Jp
Z2luLCBlZGdlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVmQ291bnQoMSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBO
b2RlSGFzVmFyQXJncykgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHgg
PSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS0+Zmlyc3RDaGlsZCgpICsgbm9k
ZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgeworICAgICAgICAgICAgICAgICAgICBFZGdl
IGVkZ2UgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uud2lsbE5vdEhh
dmVDaGVjaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4s
IGVkZ2UpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDaGVjayk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4ucmVzZXQoKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZWZDb3Vu
dCgxKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gfQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKKyAgICAgICAgICAgIG5vZGUtPnNldFJlZkNvdW50KDEpOwogICAg
ICAgICB9CiAKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkBAIC0xODcs
MTkgKzEzOSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gdmFyaWFibGVz
W2ldOwogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhhbnRvbSAmJiBub2RlLT5vcCgpICE9IENo
ZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCisgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSAhPSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9jYWwpIHsKLSAgICAg
ICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoaSB8fCBub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkgewotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNb
aV0gPSBub2RlOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXJpYWJsZXNbaV0gPSAwOworICAgICAg
ICAgICAgdmFyaWFibGVzW2ldID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNp
b24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgbV9i
bG9jayA9IGJsb2NrOwogICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleElu
QmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICBt
X2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIGFk
ZFBoYW50b21zSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIGZpeHVwTm9kZShtX2N1cnJlbnRO
b2RlKTsKICAgICAgICAgfQotICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKQEAgLTE0Miwx
NCArMTQwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKICAgICAgICAg
ICAgIGlmIChhdHRlbXB0VG9NYWtlSW50ZWdlckFkZChub2RlKSkgewogICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wKEFyaXRoQWRkKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlck9yQm9vbGVhbkV4
cGVjdGluZ0RlZmluZWQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQXJpdGhBZGQpOwotICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMjY4LDEyICsyNjQsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGZpeERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0
aGF0IGV2ZXJ5dGhpbmcgaXMgcGhhbnRvbSdkIHVudGlsIGFmdGVyIHRoZQotICAgICAgICAgICAg
ICAgIC8vIERvdWJsZUFzSW50MzIgbm9kZSwgd2hpY2ggb2NjdXJzIGFmdGVyIHRoZSBEaXYvTW9k
IG5vZGUgdGhhdCB0aGUgY29udmVyc2lvbnMKLSAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGlu
c2VyZWQgb24uCi0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKG5vZGUtPmNo
aWxkMigpLm5vZGUoKSk7Ci0KICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRv
IHJlZidpbmcgb24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9t
CiAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgogICAgICAgICAgICAg
ICAgIE5vZGUqIG5ld0RpdmlzaW9uID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKQEAgLTg0
NSw3ICs4MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAg
ICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkp
OwogICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE90aGVyVXNlPihub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQoCkBAIC05OTYsNyArOTg2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOiB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICAg
ICAgY2FzZSBOdW1iZXJVc2U6CkBAIC0xMDEwLDYgKzk5OSwxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFBoYW50b206CisgICAgICAg
ICAgICAvLyBQaGFudG9tcyBhcmUgbWVhbmluZ2xlc3MgcGFzdCBGaXh1cC4gV2UgcmVjcmVhdGUg
dGhlbSBvbi1kZW1hbmQgaW4gdGhlIGJhY2tlbmQuCisgICAgICAgICAgICBub2RlLT5yZW1vdmUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgRmlhdEludDUyOiB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1MigpKTsKICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0lkZW50aXR5KCk7CkBAIC0xMDczLDcgKzEwNjcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIElzU3RyaW5nOgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVTdHJpbmcoKSkgewogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVk
Z2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgICAgICBt
X2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAg
ICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihub2RlKTsKQEAgLTEwODMs
NyArMTA3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CiAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE9iamVj
dFVzZSkpOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwg
anNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxP
YmplY3RVc2U+KG5vZGUpOwpAQCAtMTE1NiwyOCArMTE1MCwyOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgUmVmUHRyPFR5cGVTZXQ+IHR5cGVTZXQgPSBub2RlLT50eXBlTG9jYXRpb24oKS0+bV9p
bnN0cnVjdGlvblR5cGVTZXQ7CiAgICAgICAgICAgICBSdW50aW1lVHlwZU1hc2sgc2VlblR5cGVz
ID0gdHlwZVNldC0+c2VlblR5cGVzKCk7CiAgICAgICAgICAgICBpZiAodHlwZVNldC0+ZG9lc1R5
cGVDb25mb3JtVG8oVHlwZU1hY2hpbmVJbnQpKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlwZU1hY2hpbmVJbnQpKSB7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgp
OwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBl
U3RyaW5nKSkgewotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+
ZG9lc1R5cGVDb25mb3JtVG8oVHlwZUJvb2xlYW4pKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCB8
IFR5cGVOdWxsKSAmJiAoc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkgJiYgKHNlZW5UeXBlcyAm
IFR5cGVOdWxsKSkgewotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0
LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIFN0cnVj
dHVyZVNldCBzZXQgPSB0eXBlU2V0LT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAgICAgICAgICBp
ZiAoIXNldC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
Q2hlY2tTdHJ1Y3R1cmUobV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSk7CiAgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVja1N0cnVjdHVyZShtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldChzZXQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTEyOTQs
NyArMTI4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBkZWNpc2lvbiBwcm9jZXNzIG11
Y2ggZWFzaWVyLgogICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihl
ZGdlLm5vZGUoKSk7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3Jp
Z2luLAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5v
ZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBTdHJpbmdVc2Up
KTsKICAgICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChLbm93blN0cmluZ1VzZSk7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMzk2LDkgKzEzOTAsNiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
PFVzZUtpbmQgbGVmdFVzZUtpbmQ+CiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlRmFzdFN0cmluZ0Fk
ZChOb2RlKiBub2RlLCBFZGdlJiBsZWZ0LCBFZGdlJiByaWdodCkKICAgICB7Ci0gICAgICAgIE5v
ZGUqIG9yaWdpbmFsTGVmdCA9IGxlZnQubm9kZSgpOwotICAgICAgICBOb2RlKiBvcmlnaW5hbFJp
Z2h0ID0gcmlnaHQubm9kZSgpOwotICAgICAgICAKICAgICAgICAgQVNTRVJUKGxlZnRVc2VLaW5k
ID09IFN0cmluZ1VzZSB8fCBsZWZ0VXNlS2luZCA9PSBTdHJpbmdPYmplY3RVc2UgfHwgbGVmdFVz
ZUtpbmQgPT0gU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UpOwogICAgICAgICAKICAgICAgICAgaWYg
KGlzU3RyaW5nT2JqZWN0VXNlPGxlZnRVc2VLaW5kPigpICYmICFjYW5PcHRpbWl6ZVN0cmluZ09i
amVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKQpAQCAtMTQzMywxMiArMTQyNCw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgLy8gV2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAgICAvLyAqb3JpZ2luYWwqIGlucHV0
cyB0byB0aGUgYWRkaXRpb24gYXJlIGxpdmUgdXAgdG8gaGVyZS4KLSAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQpLCBF
ZGdlKG9yaWdpbmFsUmlnaHQpKTsKLSAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VSb3Bl
KG5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTYyLDcgKzE1NDcsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJy
YXk6OlN0cmluZykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwg
RWRnZShhcnJheSwgU3RyaW5nVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBFZGdlKGFycmF5LCBTdHJpbmdVc2UpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYXJyYXlNb2Rl
Lm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgCkBAIC0xNzczLDcgKzE3NTgsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5l
d05vZGUsIEtub3duSW50MzJVc2UpOwotICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20obm9kZSk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4SW50T3JCb29sZWFuRWRnZShFZGdlJiBlZGdlKQpA
QCAtMTc5NSw3ICsxNzc5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5v
ZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0gRWRnZShuZXdOb2Rl
LCBJbnQzMlVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBmaXhEb3VibGVPckJvb2xlYW5FZGdlKEVkZ2UmIGVkZ2UpCkBAIC0xODE3
LDcgKzE4MDAsNiBAQCBwcml2YXRlOgogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2Rl
LCB1c2VLaW5kKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2UgPSBFZGdlKG5ld05vZGUsIERvdWJs
ZVJlcFVzZSk7Ci0gICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShub2RlKTsKICAgICB9CiAgICAg
CiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQpAQCAtMTk5Nywx
MSArMTk3OSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAg
Zm9yIChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsg
KyttX2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5h
dChtX2luZGV4SW5CbG9jayk7Ci0gICAgICAgICAgICBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCk7
CiAgICAgICAgICAgICB0cnlUb1JlbGF4UmVwcmVzZW50YXRpb24obV9jdXJyZW50Tm9kZSk7CiAg
ICAgICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2Rl
LCBpbmplY3RUeXBlQ29udmVyc2lvbnNGb3JFZGdlKTsKICAgICAgICAgfQotICAgICAgICBhZGRQ
aGFudG9tc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxv
Y2spOwogICAgIH0KICAgICAKQEAgLTIwMTUsNyArMTk5NSw2IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBNb3ZIaW50Ogot
ICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCBmaXhFZGdlUmVw
cmVzZW50YXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDc2LDggKzIwNTUsNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBhZGRSZXF1aXJlZFBo
YW50b20oZWRnZS5ub2RlKCkpOwotCiAgICAgICAgICAgICBpZiAoZWRnZS0+aXNOdW1iZXJDb25z
dGFudCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURv
dWJsZSwgRG91YmxlQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMDAsOCArMjA3Nyw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYWRkUmVxdWlyZWRQ
aGFudG9tKGVkZ2Uubm9kZSgpKTsKLQogICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTWFjaGluZUlu
dENvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hp
bmVJbnQsIEludDUyQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKQEAgLTIxMjgsOCArMjEwMyw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFl
ZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwotICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwg
bm9kZS0+b3JpZ2luLApAQCAtMjE0NSwzMiArMjExOCwxMSBAQCBwcml2YXRlOgogICAgICAgICB9
IH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBhZGRSZXF1aXJlZFBoYW50b20oTm9kZSogbm9kZSkK
LSAgICB7Ci0gICAgICAgIG1fcmVxdWlyZWRQaGFudG9tcy5hcHBlbmQobm9kZSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhZGRQaGFudG9tc0lmTmVjZXNzYXJ5KCkKLSAgICB7Ci0gICAgICAgIGlmICht
X3JlcXVpcmVkUGhhbnRvbXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21zLnNpemUoKTsg
aS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fcmVxdWlyZWRQaGFudG9tc1tpXTsK
LSAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4s
Ci0gICAgICAgICAgICAgICAgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIG1fcmVxdWlyZWRQaGFudG9tcy5yZXNpemUoMCk7Ci0gICAgfQotICAgIAog
ICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAg
ICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7
CiAgICAgYm9vbCBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkOwotICAgIFZlY3RvcjxOb2RlKiwgMz4g
bV9yZXF1aXJlZFBoYW50b21zOwogfTsKICAgICAKIGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBn
cmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTkzLDI2ICs1OTMsNiBAQCB2b2lkIEdyYXBoOjpyZXNldFJlYWNoYWJp
bGl0eSgpCiAgICAgZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiB9CiAKLXZvaWQgR3JhcGg6Om1l
cmdlUmVsZXZhbnRUb09TUigpCi17Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2Nr
c0luTmF0dXJhbE9yZGVyKCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTW92
SGludDoKLSAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlUmVs
ZXZhbnRUb09TUik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYXNlIFB1dEhpbnQ6Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQyKCkt
Pm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogbmFtZXNwYWNlIHsK
IAogY2xhc3MgUmVmQ291bnRDYWxjdWxhdG9yIHsKQEAgLTYyNSwxMiArNjA1LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgY2FsY3VsYXRlKCkKICAgICB7CiAgICAgICAgIC8vIEZpcnN0IHJlc2V0IHRo
ZSBjb3VudHMgdG8gMCBmb3IgYWxsIG5vZGVzLgotICAgICAgICAvLwotICAgICAgICAvLyBBbHNv
IHRha2UgdGhpcyBvcHBvcnR1bml0eSB0byBwcmV0ZW5kIHRoYXQgQ2hlY2sgbm9kZXMgYXJlIG5v
dCBOb2RlTXVzdEdlbmVyYXRlLiBDaGVjawotICAgICAgICAvLyBub2RlcyBhcmUgTXVzdEdlbmVy
YXRlIGJlY2F1c2UgdGhleSBhcmUgZXhlY3V0ZWQgZm9yIGVmZmVjdCwgYnV0IHRoZXkgZm9sbG93
IHRoZSBzYW1lCi0gICAgICAgIC8vIERDRSBydWxlcyBhcyBub2RlcyB0aGF0IGFyZW4ndCBNdXN0
R2VuZXJhdGU6IHRoZXkgb25seSBjb250cmlidXRlIHRvIHRoZSByZWYgY291bnQgb2YKLSAgICAg
ICAgLy8gdGhlaXIgY2hpbGRyZW4gaWYgdGhlIGVkZ2VzIHJlcXVpcmUgY2hlY2tzLiBOb24tY2hl
Y2tpbmcgZWRnZXMgYXJlIHJlbW92ZWQuIE5vdGUgdGhhdAotICAgICAgICAvLyBmb3IgYW55IENo
ZWNrcyBsZWZ0IG92ZXIsIHRoaXMgcGhhc2Ugd2lsbCB0dXJuIHRoZW0gYmFjayBpbnRvIE5vZGVN
dXN0R2VuZXJhdGUuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxv
Y2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCFibG9jaykKQEAgLTY1NCwxMSArNjI4LDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUsIGZpbmRUeXBlQ2hl
Y2tSb290KTsKICAgICAgICAgICAgICAgICBpZiAoIShub2RlLT5mbGFncygpICYgTm9kZU11c3RH
ZW5lcmF0ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IENoZWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRv
bid0IHRyZWF0IENoZWNrIG5vZGVzIGFzIE11c3RHZW5lcmF0ZS4gV2Ugd2lsbCBnbGFkbHkKLSAg
ICAgICAgICAgICAgICAgICAgLy8ga2lsbCB0aGVtIG9mZiBpbiB0aGlzIHBoYXNlLgotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKCFub2RlLT5wb3N0Zml4UmVmKCkpCiAgICAgICAgICAgICAgICAgICAgIG1fd29ya2xp
c3QuYXBwZW5kKG5vZGUpOwogICAgICAgICAgICAgfQpAQCAtMTI2MywxMiArMTIzMiw2IEBAIHZv
aWQgR3JhcGg6OmNvbnZlcnRUb0NvbnN0YW50KE5vZGUqIG5vZGUKIHsKICAgICBpZiAodmFsdWUt
PnN0cnVjdHVyZSgpKQogICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQodmFsdWUtPnN0cnVjdHVy
ZSgpKTsKLSAgICBpZiAobV9mb3JtID09IFRocmVhZGVkQ1BTKSB7Ci0gICAgICAgIGlmIChub2Rl
LT5vcCgpID09IEdldExvY2FsKQotICAgICAgICAgICAgZGV0aHJlYWQoKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEoKnRoaXMp
KTsKLSAgICB9CiAgICAgbm9kZS0+Y29udmVydFRvQ29uc3RhbnQodmFsdWUpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Miw4ICs0NTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsK
ICAgICB2b2lkIHJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgCi0gICAgdm9pZCBtZXJnZVJlbGV2
YW50VG9PU1IoKTsKLSAgICAKICAgICB2b2lkIGNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAKICAg
ICB1bnNpZ25lZCB2YXJBcmdOdW1DaGlsZHJlbihOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxODM0NDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNiArMTI1LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluc2VydENv
bnN0YW50Rm9yVXNlKGluZGV4LCBvcmlnaW4sIGpzVW5kZWZpbmVkKCksIHVzZUtpbmQpOwogICAg
IH0KICAgICAKKyAgICBOb2RlKiBpbnNlcnRDaGVjayhzaXplX3QgaW5kZXgsIE5vZGVPcmlnaW4g
b3JpZ2luLCBBZGphY2VuY3lMaXN0IGNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgY2hpbGRyZW4g
PSBjaGlsZHJlbi5qdXN0Q2hlY2tzKCk7CisgICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGluc2VydE5vZGUo
aW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBjaGlsZHJlbik7CisgICAgfQorICAgIAor
ICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVfdCBpbmRleCwgTm9kZSogbm9kZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpbnNlcnRDaGVjayhpbmRleCwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGls
ZHJlbik7CisgICAgfQorICAgIAorICAgIE5vZGUqIGluc2VydENoZWNrKHNpemVfdCBpbmRleCwg
Tm9kZU9yaWdpbiBvcmlnaW4sIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlmIChlZGdlLndp
bGxIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGluZGV4LCBTcGVj
Tm9uZSwgQ2hlY2ssIG9yaWdpbiwgZWRnZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAg
ICAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheUJvdW5kczoKLSAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAgICAgbm9kZS0+cmVt
b3ZlKCk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDcgKzI2
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNvZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3QgYXNz
ZXJ0IHRoYXQncyB0aGUgY2FzZS4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCAh
KG5vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICAKLSAgICAgICAgbm9k
ZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luYWxPcmlnaW4s
IG5vZGUtPmNoaWxkcmVuKTsKKyAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShTcGVj
Tm9uZSwgQ2hlY2ssIG9yaWdpbmFsT3JpZ2luLCBub2RlLT5jaGlsZHJlbik7CiAgICAgICAgIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDE1IEBAIGJvb2wgTm9k
ZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6
cmVtb3ZlKCkKK3sKKyAgICBBU1NFUlQoIShmbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKTsKKyAg
ICAKKyAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmp1c3RDaGVja3MoKTsKKyAgICAKKyAgICBzZXRP
cEFuZERlZmF1bHRGbGFncyhDaGVjayk7Cit9CisKIHZvaWQgTm9kZTo6Y29udmVydFRvSWRlbnRp
dHkoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDE1ICs0MDcsNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fZmxhZ3MgPSBkZWZhdWx0RmxhZ3Mob3ApOwogICAgIH0K
IAotICAgIHZvaWQgY29udmVydFRvUGhhbnRvbSgpCi0gICAgewotICAgICAgICBzZXRPcEFuZERl
ZmF1bHRGbGFncyhQaGFudG9tKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjb252ZXJ0VG9DaGVj
aygpCi0gICAgewotICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDaGVjayk7Ci0gICAgfQor
ICAgIHZvaWQgcmVtb3ZlKCk7CiAKICAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0
cnVjdHVyZVNldCogc2V0KQogICAgIHsKQEAgLTQyNSw3ICs0MTcsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aChOb2RlKiBvdGhlcikKICAgICB7Ci0gICAgICAg
IGNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgcmVtb3ZlKCk7CiAgICAgICAgIHNldFJlcGxh
Y2VtZW50KG90aGVyKTsKICAgICB9CiAKQEAgLTE1NTcsMjAgKzE1NDksNiBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KICAgICAKLSAgICBib29sIHdp
bGxIYXZlQ29kZUdlbk9yT1NSKCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAob3AoKSkgewotICAg
ICAgICBjYXNlIFNldExvY2FsOgotICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgIGNhc2Ug
Wm9tYmllSGludDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFBoYW50
b206Ci0gICAgICAgICAgICByZXR1cm4gY2hpbGQxKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVu
dHlwZWRVc2UgfHwgY2hpbGQyKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2UgfHwg
Y2hpbGQzKCkudXNlS2luZFVuY2hlY2tlZCgpICE9IFVudHlwZWRVc2U7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2hvdWxkR2VuZXJhdGUoKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKICAgICBib29sIGlzU2VtYW50aWNhbGx5U2tpcHBhYmxlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBvcCgpID09IENvdW50RXhlY3V0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiAr
NjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjZGVmaW5lIE5vZGVB
cml0aEZsYWdzTWFzayAgICAgICAgICAgICAgIChOb2RlQmVoYXZpb3JNYXNrIHwgTm9kZUJ5dGVj
b2RlQmFja1Byb3BNYXNrKQogCi0jZGVmaW5lIE5vZGVSZWxldmFudFRvT1NSICAgICAgICAgICAg
ICAgMHgxMDAwMAorI2RlZmluZSBOb2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAgIDB4MTAw
MDAgLy8gQ29tcHV0ZWQgYnkgQ1BTUmV0aHJlYWRpbmdQaGFzZSwgd2lsbCB0ZWxsIHlvdSB3aGlj
aCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEgRmx1c2guCiAKLSNk
ZWZpbmUgTm9kZUlzRmx1c2hlZCAgICAgICAgICAgICAgICAgICAweDIwMDAwIC8vIENvbXB1dGVk
IGJ5IENQU1JldGhyZWFkaW5nUGhhc2UsIHdpbGwgdGVsbCB5b3Ugd2hpY2ggbG9jYWwgbm9kZXMg
YXJlIGJhY2t3YXJkcy1yZWFjaGFibGUgZnJvbSBhIEZsdXNoLgotCi0jZGVmaW5lIE5vZGVNaXNj
RmxhZzEgICAgICAgICAgICAgICAgICAgMHg0MDAwMAotI2RlZmluZSBOb2RlTWlzY0ZsYWcyICAg
ICAgICAgICAgICAgICAgIDB4ODAwMDAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAg
ICAgICAgICAweDIwMDAwCisjZGVmaW5lIE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAg
MHg0MDAwMAorI2RlZmluZSBOb2RlTWlzY0ZsYWczICAgICAgICAgICAgICAgICAgIDB4ODAwMDAK
IAogdHlwZWRlZiB1aW50MzJfdCBOb2RlRmxhZ3M7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogYmFzaWMgYmxvY2sgbWln
aHQgaGF2ZSByZWFkIGEgbG9jYWwgdmFyaWFibGUgaW4gYnl0ZWNvZGUuIFdlIG9ubHkgcmVtb3Zl
IEdldExvY2FscyBpZiBpdCAqL1wKICAgICAvKiBpcyByZWR1bmRhbnQgYmVjYXVzZSBvZiBhbiBl
YXJsaWVyIEdldExvY2FsIG9yIFNldExvY2FsIGluIHRoZSBzYW1lIGJsb2NrLiBXZSBjb3VsZCBt
YWtlICovXAogICAgIC8qIHRoZXNlIG5vdCBNdXN0R2VuZXJhdGUgYW5kIHVzZSBhIG1vcmUgc29w
aGlzdGljYXRlZCBhbmFseXNpcyB0byBpbnNlcnQgUGhhbnRvbUxvY2FscyBpbiAqL1wKLSAgICAv
KiB0aGUgc2FtZSB3YXkgdGhhdCB3ZSBpbnNlcnQgUGhhbnRvbXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwODYgKi9cCisgICAgLyogdGhlIHNhbWUgd2F5IHRo
YXQgd2UgaW5zZXJ0IFBoYW50b21zLiBUaGF0J3MgaGFyZCBhbmQgcHJvYmFibHkgbm90IHByb2Zp
dGFibGUuIFNlZSAqL1wKKyAgICAvKiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ0MDg2ICovXAogICAgIG1hY3JvKEdldExvY2FsLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU2V0TG9jYWwsIDApIFwKICAgICBcCkBAIC03Miw4
ICs3Myw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhab21i
aWVIaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbSwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBVc2VkIGlm
IHdlIHdhbnQganVzdCBhIHR5cGUgY2hlY2sgYnV0IG5vdCBsaXZlbmVzcy4gTm9uLWNoZWNraW5n
IHVzZXMgd2lsbCBiZSByZW1vdmVkLiAqL1wKLSAgICBtYWNybyhVcHNpbG9uLCBOb2RlUmVsZXZh
bnRUb09TUikgXAotICAgIG1hY3JvKFBoaSwgTm9kZVJlbGV2YW50VG9PU1IpIFwKKyAgICBtYWNy
byhVcHNpbG9uLCAwKSBcCisgICAgbWFjcm8oUGhpLCAwKSBcCiAgICAgbWFjcm8oRmx1c2gsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBcCkBAIC0yODEsMTAgKzI4MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgXAogICAgIG1hY3JvKENyZWF0ZURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCi0g
ICAgbWFjcm8oUGhhbnRvbURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFj
cm8oUGhhbnRvbURpcmVjdEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKENyZWF0ZVNjb3BlZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBtYWNy
byhQaGFudG9tQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0
VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4NSw3ICs1ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBOb2RlKiB0
YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC03OTUsNyArNzk1LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgTW92SGludDoK
LSAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgot
I2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5j
bHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLXN0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9kZU5l
ZWRzUGhhbnRvbSA9IE5vZGVNaXNjRmxhZzE7Ci0KLWNsYXNzIFBoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFBoYW50b21DYW5vbmljYWxp
emF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAicGhhbnRv
bSBjYW5vbmljYWxpemF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwotICAgICAgICAK
LSAgICAgICAgbV9ncmFwaC5jbGVhckZsYWdzT25BbGxOb2RlcyhOb2RlTmVlZHNQaGFudG9tIHwg
Tm9kZVJlbGV2YW50VG9PU1IpOwotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZhbnRUb09TUigp
OwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2Nr
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB1
bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRl
eCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRleCsrKTsK
LSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9tIHx8IG5vZGUtPm9wKCkg
PT0gQ2hlY2spIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRn
ZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikg
JiYgbm9kZS0+b3AoKSA9PSBQaGFudG9tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQSBQaGFudG9tIG9uIGEgbm9kZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3
ZSBuZWVkIHRvIGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20g
b24gdGhpcyBub2RlIGluc3RlYWQgb2YganVzdCBoYXZpbmcgYSBDaGVjay4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlZGdlLT5tZXJnZUZsYWdzKE5vZGVOZWVkc1BoYW50b20pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Uu
d2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBLZWVwIHRoZSB0eXBlIGNoZWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DaGVjaygpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9n
cmFwaCk7Ci0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1C
bG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJ
bmRleCkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVOZWVkc1BoYW50b20p
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
b3JpZ2luLCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0gICAgCi1ib29s
IHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIENhbm9uaWNhbGl6YXRpb24g
UGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFu
dG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmgJKHJldmlzaW9uIDE4
MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6
YXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25Q
aGFzZV9oCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi1jbGFzcyBHcmFwaDsKLQotLy8gUmVwbGFjZXMgYWxsIHByZS1leGlzdGluZyBQ
aGFudG9tcyB3aXRoIENoZWNrcyBvciByZW1vdmVzIHRoZW0gaWYgdGhlIENoZWNrIGlzIHVubmVj
ZXNzYXJ5LiBJZgotLy8gdGhlIFBoYW50b20gd2FzIG5lY2Vzc2FyeSAoaXQgdXNlcyBhIG5vZGUg
dGhhdCBpcyByZWxldmFudCB0byBPU1IpIHRoZW4gdGhlIFBoYW50b20gaXMgaG9pc3RlZAotLy8g
dG8ganVzdCBiZWxvdyB0aGUgbm9kZS4KLS8vCi0vLyBUaGlzIHBoYXNlIGlzIG9ubHkgdmFsaWQg
aW4gU1NBLCBiZWNhdXNlIGl0J3Mgb25seSBpbiBTU0EgdGhhdCBQaGFudG9tcyBhcmUgaWdub3Jl
ZCBmb3IgdGhlCi0vLyBwdXJwb3NlIG9mIGxpdmVuZXNzLWF0LXNvbWUtcG9pbnQgYW5kIGFyZSBv
bmx5IHVzZWQgZm9yIGFic29sdXRlIGxpdmVuZXNzLgotLy8KLS8vIFRoaXMgcGhhc2UgbWFrZXMg
YSBsb3Qgb2YgdGhpbmdzIGVhc2llciwgbGlrZSBDRkcgc2ltcGxpZmljYXRpb246IHlvdSBkb24n
dCBoYXZlIHRvIGluc2VydCBhbnkKLS8vIHBoYW50b21zIHdoZW4gamV0dGlzb25pbmcgYSBDRkcg
ZWRnZS4KLQotYm9vbCBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmKTsKLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0K
LSNlbmRpZiAvLyBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNw
cAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFu
dG9tUmVtb3ZhbFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgotCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR0luc2VydGlv
blNldC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgi
Ci0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7Ci0KLWNsYXNzIFBoYW50b21SZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGlj
OgotICAgIFBoYW50b21SZW1vdmFsUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNl
KGdyYXBoLCAicGhhbnRvbSByZW1vdmFsIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
cnVuKCkKLSAgICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBi
bG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgu
YmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVk
IHRvIGFscmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoYmxvY2stPnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2Nr
LT5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KGkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBHZXRMb2NhbDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5
IHVudGlsIHdlIGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3
MDcuCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9P
U1IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NS
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1lcmdlUmVsZXZh
bnRUb09TUigpOwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBp
ZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0
YXJnZXRJbmRleCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+
c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJ
bmRleCsrKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdE5v
ZGUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5kZXggPiAxKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRl
eCAtIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGRvZXNuJ3QgbmVlZCB0byBzcGVjaWFsaXplIGZvciBQaGFudG9tLiBsYXN0Tm9k
ZSBjb3VsZCBiZSBhbnkgbm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpc24n
dCBzdWJqZWN0IHRvIERDRS4gQnV0IHdlIGtlZXAgaXQgc2ltcGxlIGZvciBub3cuCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPm9wKCkgIT0gUGhhbnRvbQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHx8IGxhc3ROb2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBub2RlLT5v
cmlnaW4uZm9yRXhpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51
bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS53aWxsSGF2ZUNoZWNr
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5
cGUgY2hlY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5v
ZGVSZWxldmFudFRvT1NSKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
QWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobGFzdE5vZGUtPmNoaWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5v
ZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3Zl
RWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrOiB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGph
Y2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRn
ZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFlZGdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRy
ZW4ucmVtb3ZlRWRnZShpLS0pOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X2FsbG9jYXRvci5mcmVlKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBibG9jay0+YXQodGFyZ2V0SW5kZXgrKykgPSBub2RlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYmxvY2stPnJlc2l6ZSh0YXJnZXRJbmRleCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLX07Ci0gICAgCi1ib29s
IHBlcmZvcm1QaGFudG9tUmVtb3ZhbChHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oIkRGRyBQaGFudG9tIFJlbW92YWwgUGhhc2UiKTsKLSAgICByZXR1
cm4gcnVuUGhhc2U8UGhhbnRvbVJlbW92YWxQaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgJ
KHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRv
bVJlbW92YWxQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdQaGFudG9t
UmVtb3ZhbFBoYXNlX2gKLSNkZWZpbmUgREZHUGhhbnRvbVJlbW92YWxQaGFzZV9oCi0KLSNpZiBF
TkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFz
cyBHcmFwaDsKLQotLy8gQ2xlYW5zIHVwIHVubmVjZXNzYXJ5IFBoYW50b21zIGFuZCBQaGFudG9u
IGNoaWxkcmVuLiBUaGlzIHJlZHVjZXMgbGl2ZSByYW5nZXMsIGJ1dCBhbHNvLCBpdAotLy8gZWxp
bWluYXRlcyBtYW55IFBoYW50b21zIGVudGlyZWx5LiBUaGlzIGludmFsaWRhdGVzIGxpdmVuZXNz
IGFuYWx5c2lzLgotLy8KLS8vIFRoaXMgc2hvdWxkIHdvcmsgb3ZlciBhbGwgSVIgZm9ybXM7IGhv
d2V2ZXIsIGluIFNTQSBmb3JtIGl0J3MgYmV0dGVyIHRvIHJ1bgotLy8gUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb25QaGFzZSBzaW5jZSBpdCdzIG1vcmUgcG93ZXJmdWwuCi0KLWJvb2wgcGVyZm9ybVBo
YW50b21SZW1vdmFsKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHUGhhbnRvbVJlbW92YWxQaGFz
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE4
MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmgiCiAjaW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRG
R0NTRVBoYXNlLmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5jbHVkZSAiREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVkZ2VCcmVha2lu
Z1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTUxLDEzICs1MiwxMCBAQAog
I2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJE
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdQaGFudG9tQ2Fub25pY2FsaXphdGlv
blBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmgiCi0jaW5jbHVk
ZSAiREZHUGhhbnRvbVJlbW92YWxQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCIKLSNpbmNsdWRlICJERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FDb252ZXJzaW9u
UGhhc2UuaCIKICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZH
U3RhY2tMYXlvdXRQaGFzZS5oIgpAQCAtMzE4LDcgKzMxNiw3IEBAIFBsYW46OkNvbXBpbGF0aW9u
UGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0
aW9uKGRmZyk7CiAKICAgICAgICAgcGVyZm9ybVN0b3JlQmFycmllckVsaXNpb24oZGZnKTsKLSAg
ICAgICAgcGVyZm9ybVBoYW50b21SZW1vdmFsKGRmZyk7CisgICAgICAgIHBlcmZvcm1DbGVhblVw
KGRmZyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwogICAgICAgICBwZXJm
b3JtRENFKGRmZyk7CiAgICAgICAgIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKGRmZyk7CkBAIC0z
NDQsNyArMzQyLDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgog
ICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBwZXJmb3JtUGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEg
Yml0LgorICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNp
emUgYSBiaXQuCiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhkZmcpOwogICAg
ICAgICBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1D
UFNSZXRocmVhZGluZyhkZmcpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9u
UGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMo
ZGZnKTsKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBwZXJmb3JtQ29uc3RhbnRG
b2xkaW5nKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcp
OyAvLyBSZWR1Y2UgdGhlIGdyYXBoIHNpemUgYSBsb3QuCisgICAgICAgIHBlcmZvcm1DbGVhblVw
KGRmZyk7IC8vIFJlZHVjZSB0aGUgZ3JhcGggc2l6ZSBhIGxvdC4KICAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOwogICAgICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbihkZmcp
OwogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSkg
ewpAQCAtMzgxLDcgKzM3OSw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAgICAgLy8gdGhlbiB3ZSdkIG5lZWQgdG8gZG8gc29tZSBzaW1wbGUgU1NBIGZp
eC11cC4KICAgICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKICAgICAgICAgCi0gICAgICAgIHBlcmZv
cm1QaGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOworICAgICAgICBwZXJmb3JtQ2xlYW5VcChk
ZmcpOwogICAgICAgICBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKGRmZyk7CiAgICAgICAg
IHBlcmZvcm1HbG9iYWxDU0UoZGZnKTsKICAgICAgICAgCkBAIC0zOTAsMTUgKzM4OCwxMSBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgICAgIGRmZy5tX2Zp
eHBvaW50U3RhdGUgPSBGaXhwb2ludENvbnZlcmdlZDsKICAgICAgICAgCiAgICAgICAgIHBlcmZv
cm1TdG9yZUJhcnJpZXJFbGlzaW9uKGRmZyk7Ci0gICAgICAgIHBlcmZvcm1QaGFudG9tQ2Fub25p
Y2FsaXphdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwog
ICAgICAgICBwZXJmb3JtQ0ZBKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZU
TE9TUkV4aXRMaXZlbmVzcygpKQotICAgICAgICAgICAgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZh
bGlkYXRpb24oZGZnKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFs
KCkpIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpCiAgICAg
ICAgICAgICBwZXJmb3JtTW92SGludFJlbW92YWwoZGZnKTsKLSAgICAgICAgICAgIHBlcmZvcm1Q
aGFudG9tQ2Fub25pY2FsaXphdGlvbihkZmcpOwotICAgICAgICB9CisgICAgICAgIHBlcmZvcm1D
bGVhblVwKGRmZyk7CiAgICAgICAgIHBlcmZvcm1EQ0UoZGZnKTsgLy8gV2UgcmVseSBvbiB0aGlz
IHRvIGtpbGwgZGVhZCBjb2RlIHRoYXQgd29uJ3QgYmUgcmVjb2duaXplZCBhcyBkZWFkIGJ5IExM
Vk0uCiAgICAgICAgIHBlcmZvcm1TdGFja0xheW91dChkZmcpOwogICAgICAgICBwZXJmb3JtTGl2
ZW5lc3NBbmFseXNpcyhkZmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBLaWxsU3RhY2ssIG5vZGUtPm9yaWdpbiwgT3BJ
bmZvKG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbC5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25Q
aGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2Nr
SW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHSW5zZXJ0aW9u
U2V0LmgiCi0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBSZXN1cnJlY3Rp
b25Gb3JWYWxpZGF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBoYXNlKGdyYXBo
LCAicmVzdXJyZWN0aW9uIGZvciB2YWxpZGF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgcnVuKCkKLSAgICB7Ci0gICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9n
cmFwaCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICgh
YmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5k
ZXgpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBu
b2RlLT5vcmlnaW4sIG5vZGUtPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLWJvb2wgcGVy
Zm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUmVzdXJyZWN0aW9uIEZvciBWYWxpZGF0aW9u
IFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFJlc3VycmVjdGlvbkZvclZhbGlkYXRpb25Q
aGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oCShyZXZp
c2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdS
ZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2VfaAotI2RlZmluZSBERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2VfaAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJE
RkdDb21tb24uaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBH
cmFwaDsKLQotLy8gUGxhY2VzIGEgUGhhbnRvbSBhZnRlciBldmVyeSB2YWx1ZS1wcm9kdWNpbmcg
bm9kZSwgdGhlcmVieSBkaXNhYmxpbmcgRENFIGZyb20ga2lsbGluZyBpdC4KLS8vIFRoaXMgaXMg
dXNlZnVsIGZvciB2YWxpZGF0aW5nIG91ciBPU1IgZXhpdCBtYWNoaW5lcnkgYnkgaW5zdGl0dXRp
bmcgdGhlIHJlcXVpcmVtZW50IHRoYXQKLS8vIGFueSBsaXZlLWluLWJ5dGVjb2RlIHZhcmlhYmxl
IHNob3VsZCBiZSBPU1ItYXZhaWxhYmxlLiBXaXRob3V0IHRoaXMgcGhhc2UsIGl0J3MgaW1wb3Nz
aWJsZQotLy8gdG8gbWFrZSBzdWNoIGFuIGFzc2VydGlvbiBiZWNhdXNlIG91ciBEQ0UgaXMgbW9y
ZSBhZ2dyZXNzaXZlIHRoYW4gdGhlIGJ5dGVjb2RlIGxpdmVuZXNzCi0vLyBhbmFseXNpcy4KLQot
Ym9vbCBwZXJmb3JtUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvbihHcmFwaCYpOwotCi19IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQotI2VuZGlm
IC8vIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZV9oCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJl
bi5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJSZXBsYWNpbmcgbm9kZSAiLCBub2RlLCAiIHdpdGggIiwgdmFsdWVGb3JP
cGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0UmVwbGFjZW1lbnQodmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFi
bGUtPmxvY2FsKCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKQEAgLTMxNywxMiArMzE3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IHZh
bHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKS0+ZGVmYXVsdEVkZ2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
YXNlIFNldEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1Bo
YW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgsNiArMTA2OCwx
MiBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9y
bWF0KCk7CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCAhPSBEYXRhRm9ybWF0RG91YmxlKSB7Cisg
ICAgICAgICAgICBERkdfQ1JBU0goCisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9j
dXJyZW50Tm9kZSwgdG9DU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgIiwg
ZWRnZSwgIiB0byBoYXZlIGRvdWJsZSBmb3JtYXQgYnV0IGluc3RlYWQgaXQgaXMgc3BpbGxlZCBh
cyAiLAorICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybWF0VG9TdHJpbmcoc3BpbGxGb3JtYXQp
KS5kYXRhKCkpOworICAgICAgICB9CiAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bV9jdXJyZW50Tm9kZSwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSk7CiAgICAgICAg
IEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOwogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODM0NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsaWRlQmFycmllcihOb2RlKiBub2RlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmlzU3RvcmVCYXJyaWVyKCkpOwotICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CisgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgIH0K
IAogICAgIHZvaWQgaGFuZGxlTm9kZShIYXNoU2V0PE5vZGUqPiYgZG9udE5lZWRCYXJyaWVycywg
Tm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aWYgKHlPcGVyYW5kVmFsdWUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9J
ZGVudGl0eU92ZXJDaGlsZDEoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHlPcGVyYW5k
VmFsdWUgPT0gMC41KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUobV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9yaWdpbiwgbV9u
b2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENoZWNrKG1fbm9kZUluZGV4LCBtX25vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUt
PmNvbnZlcnRUb0FyaXRoU3FydCgpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2Niw4ICsxNjYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9k
ZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChjYW5vbmlj
YWxSZXN1bHRSZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgPT0KICAgICAgICAgICAgICAg
ICAgICAgY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obV9ub2RlLT5yZXN1bHQoKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5v
cmlnaW4sIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGhhZEludDMyQ2hlY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBDb25zaWRlciBhZGRpbmcgSW50NTJSZXBJbnQzMlVzZSBvciBldmVuIERvdWJsZVJlcEludDMy
VXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggd291bGQgYmUgc3VwZXIgd2Vp
cmQuIFRoZSBsYXR0ZXIgd291bGQgb25seSBhcmlzZSBpbiBzb21lCkBAIC0xNzUsOSArMTc0LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5vbmljYWxSZXN1bHRS
ZXByZXNlbnRhdGlvbihub2RlLT5yZXN1bHQoKSkgIT0gTm9kZVJlc3VsdEpTKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2Rl
LT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLCBJbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2so
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2lu
LCBFZGdlKG5vZGUsIEludDMyVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmRlZmF1bHRFZGdlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKQEAgLTIzOSw4ICsy
MzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9JZGVudGl0
eU92ZXJDaGlsZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKLSAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhh
bnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOworICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDaGVjayhtX25vZGVJbmRleCwgbV9ub2RlKTsKICAgICAgICAgbV9ub2Rl
LT5jaGlsZHJlbi5yZW1vdmVFZGdlKGNoaWxkSW5kZXggXiAxKTsKICAgICAgICAgbV9ub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDYsMzEgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdl
KSwgZWRnZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9ncmFwaC5t
X2Zvcm0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTG9hZFN0b3JlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlZGdlLT5vcCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFNldExvY2FsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUaHJlYWRlZENQUzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmhhc1Jlc3VsdCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgU1NBOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChu
b2RlLCBlZGdlKSwgZWRnZS0+aGFzUmVzdWx0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xOTYsNyArMTcxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBm
b3VuZFRlcm1pbmFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IGkgKyAxOyBqIDwgYmxvY2stPnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlID0gYmxvY2stPmF0KGopOwotICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBQaGFudG9tTG9j
YWwgfHwgbm9kZS0+b3AoKSA9PSBGbHVzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksIG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5vcCgpID09IFBoYW50
b21Mb2NhbCB8fCBub2RlLT5vcCgpID09IEZsdXNoIHx8IG5vZGUtPm9wKCkgPT0gQ2hlY2spOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0g
KEVkZ2UgZWRnZSkgewpAQCAtNDM3LDEwICs0MTIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEZsdXNoOgog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBM
b2FkU3RvcmUgJiYgIWopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgIXBo
aXNJblRoaXNCbG9jay5jb250YWlucyhlZGdlLm5vZGUoKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC00NjIsNiArNDMzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIEdldFN0YWNrOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEi
dW5leHBlY3RlZCBub2RlIHR5cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZl
cmdlZCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0
MSw2ICs1MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEiYmFkIG5vZGUgdHlwZSBmb3IgU1NBIik7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMTgzNDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcg
KzEwMSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxzLmFw
cGVuZChub2RlLT51bmxpbmtlZExvY2FsKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2Fz
ZSBDaGVjazoKICAgICAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgudXNlcyhub2RlLCBjYW5kaWRhdGUpKQpAQCAtMjMyLDcgKzIzMSw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gY2FuZGlkYXRlTm9kZUlu
ZGV4ICsgMTsgbm9kZUluZGV4IDw9IGxhc3RVc2VySW5kZXg7ICsrbm9kZUluZGV4KSB7CiAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICBj
YXNlIFB1dEhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJl
dmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk4LDggKzk4LDYgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9k
ZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT53aWxsSGF2ZUNvZGVHZW5Pck9TUigpICYmICFPcHRpb25zOjpzaG93QWxsREZHTm9kZXMo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwogICAgICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAJKHJldmlzaW9uIDE4MzQ0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOSArNDYzLDggQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgIGNvbXBpbGVQdXRTdGFj
aygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
Y2FzZSBDaGVjazoKLSAgICAgICAgICAgIGNvbXBpbGVQaGFudG9tKCk7CisgICAgICAgICAgICBj
b21waWxlTm9PcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzOgog
ICAgICAgICAgICAgY29tcGlsZVRvVGhpcygpOwpAQCAtMTE2Miw3ICsxMTYxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVQaGFudG9tKCkKKyAg
ICB2b2lkIGNvbXBpbGVOb09wKCkKICAgICB7CiAgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxE
UkVOKG1fZ3JhcGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="276611"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>