<?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>122065</bug_id>
          
          <creation_ts>2013-09-28 10:51:04 -0700</creation_ts>
          <short_desc>Get rid of the AlreadyInJSStack recoveries since they are totally redundant with the DisplacedInJSStack recoveries</short_desc>
          <delta_ts>2013-09-30 13:37:45 -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>
          
          <blocked>122024</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934303</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-28 10:51:04 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934706</commentid>
    <comment_count>1</comment_count>
      <attachid>213018</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-30 11:48:50 -0700</bug_when>
    <thetext>Created attachment 213018
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934710</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 11:50:59 -0700</bug_when>
    <thetext>Attachment 213018 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeOrigin.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/CodeOrigin.h:100:  Please declare integral type bitfields with either signed or unsigned.  [runtime/bitfields] [5]
Source/JavaScriptCore/bytecode/ValueRecovery.h:249:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 20 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>934712</commentid>
    <comment_count>3</comment_count>
      <attachid>213018</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-30 11:55:36 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2815124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934714</commentid>
    <comment_count>4</comment_count>
      <attachid>213018</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-30 11:56:54 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2755145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934721</commentid>
    <comment_count>5</comment_count>
      <attachid>213018</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-30 12:04:58 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2818099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934730</commentid>
    <comment_count>6</comment_count>
      <attachid>213018</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-30 12:13:50 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/2774129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934731</commentid>
    <comment_count>7</comment_count>
      <attachid>213018</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-30 12:13:56 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2761150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934732</commentid>
    <comment_count>8</comment_count>
      <attachid>213018</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-30 12:15:53 -0700</bug_when>
    <thetext>Comment on attachment 213018
the patch

Attachment 213018 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2817114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934740</commentid>
    <comment_count>9</comment_count>
      <attachid>213022</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-30 12:32:47 -0700</bug_when>
    <thetext>Created attachment 213022
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934742</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 12:34:59 -0700</bug_when>
    <thetext>Attachment 213022 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeOrigin.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/CodeOrigin.h:100:  Please declare integral type bitfields with either signed or unsigned.  [runtime/bitfields] [5]
Source/JavaScriptCore/bytecode/ValueRecovery.h:249:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 21 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>934757</commentid>
    <comment_count>11</comment_count>
      <attachid>213022</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-30 12:50:03 -0700</bug_when>
    <thetext>Comment on attachment 213022
the patch

Attachment 213022 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2815134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934758</commentid>
    <comment_count>12</comment_count>
      <attachid>213022</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-09-30 12:50:38 -0700</bug_when>
    <thetext>Comment on attachment 213022
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        after the forward exit are MovHints or other tnings that the OSR exit compiler can

Typo &quot;things&quot;

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +        that the solution is to rationalize how we choose the speculation direciton for a

typo &quot;direction&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934760</commentid>
    <comment_count>13</comment_count>
      <attachid>213022</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-09-30 12:50:53 -0700</bug_when>
    <thetext>Comment on attachment 213022
the patch

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

r=me + style bot stuff

&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt; +        after the forward exit are MovHints or other tnings that the OSR exit compiler can
&gt; 
&gt; Typo &quot;things&quot;

s/tnings/things

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +        speculation direction of the node for which it is doing a conversion. Since SetLocal&apos;s

s/SetLocal&apos;s/SetLocals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934765</commentid>
    <comment_count>14</comment_count>
      <attachid>213028</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-30 12:52:46 -0700</bug_when>
    <thetext>Created attachment 213028
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934785</commentid>
    <comment_count>15</comment_count>
      <attachid>213031</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-30 13:14:41 -0700</bug_when>
    <thetext>Created attachment 213031
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934789</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 13:17:09 -0700</bug_when>
    <thetext>Attachment 213031 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/ValueRecovery.h:249:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 20 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>934800</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-30 13:37:45 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/156677</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213018</attachid>
            <date>2013-09-30 11:48:50 -0700</date>
            <delta_ts>2013-09-30 12:32:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49223</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBA
CisyMDEzLTA5LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiB0aGUgQWxyZWFkeUluSlNTdGFjayByZWNvdmVyaWVzIHNpbmNlIHRoZXkgYXJl
IHRvdGFsbHkgcmVkdW5kYW50IHdpdGggdGhlIERpc3BsYWNlZEluSlNTdGFjayByZWNvdmVyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgbW9zdGx5IGp1c3Qga2lsbHMgYSBidW5jaCBvZiBjb2RlLgorICAgICAgICAKKyAgICAg
ICAgQnV0IGluY2lkZW50YWx5IHdoaWxlIGtpbGxpbmcgdGhhdCBjb2RlLCBJIHVuY292ZXJlZCBh
IGJ1ZyBpbiBvdXIgRlRMIE9TUiBlbnRyeXBvaW50CisgICAgICAgIGNyZWF0aW9uIHBoYXNlLiBU
aGUgcGhhc2UgaW5zZXJ0cyBhIHNlcXVlbmNlIG9mIFNldExvY2FsKEV4dHJhY3RPU1JFbnRyeUxv
Y2FsKSBub2Rlcy4KKyAgICAgICAgSWYgd2UgaG9pc3Qgc29tZSB0eXBlIGNoZWNrIGludG8gdGhl
IGxvY2FsLCB0aGVuIHdlIG1pZ2h0IGluamVjdCBhIGNvbnZlcnNpb24gbm9kZQorICAgICAgICBi
ZXR3ZWVuIHRoZSBFeHRyYWN0T1NSRW50cnlMb2NhbCBhbmQgdGhlIFNldExvY2FsIC0gZm9yIGV4
YW1wbGUgd2UgbWlnaHQgcHV0IGluIGEKKyAgICAgICAgSW50MzJUb0RvdWJsZSBub2RlLiBCdXQg
Y3VycmVudGx5IHRoZSBGaXh1cFBoYXNlIHdpbGwgbWFrZSBhbGwgY29udmVyc2lvbiBub2RlcyBw
bGFjZWQKKyAgICAgICAgb24gYW4gZWRnZSBvZiBhIFNldExvY2FsIHVzZSBmb3J3YXJkIGV4aXQu
IFRoaXMgdGhlbiBjb25mdXNlcyB0aGUgT1NSIGV4aXQgbWFjaGluZXJ5LgorICAgICAgICBXaGVu
IE9TUiBleGl0IHNlZXMgYSBmb3J3YXJkIGV4aXQsIGl0IHRyaWVzIHRvICJyb2xsIGZvcndhcmQi
IGV4ZWN1dGlvbiBmcm9tIHRoZSBleGl0aW5nCisgICAgICAgIG5vZGUgdG8gdGhlIGZpcnN0IG5v
ZGUgdGhhdCBoYXMgYSBkaWZmZXJlbnQgQ29kZU9yaWdpbi4gVGhpcyBvbmx5IHdvcmtzIGlmIHRo
ZSBub2RlcworICAgICAgICBhZnRlciB0aGUgZm9yd2FyZCBleGl0IGFyZSBNb3ZIaW50cyBvciBv
dGhlciB0bmluZ3MgdGhhdCB0aGUgT1NSIGV4aXQgY29tcGlsZXIgY2FuCisgICAgICAgIGZvcndh
cmQtZXhlY3V0ZS4gQnV0IGhlcmUsIGl0IHdpbGwgc2VlIGEgYnVuY2ggb2YgU2V0TG9jYWwgYW5k
IEV4dHJhY3RPU1JFbnRyeUxvY2FsCisgICAgICAgIG5vZGVzIGZvciB0aGUgc2FtZSBieXRlY29k
ZSBpbmRleC4gVHdvIHBvc3NpYmxlIHNvbHV0aW9ucyBleGlzdC4gV2UgY291bGQgdGVhY2ggdGhl
CisgICAgICAgIGZvcndhcmQtZXhlY3V0aW9uIGxvZ2ljIGhvdyB0byBkZWFsIHdpdGggbXVsdGlw
bGUgU2V0TG9jYWxzIGFuZCBFeHRyYWN0T1NSRW50cnlMb2NhbHMuCisgICAgICAgIFRoaXMgd291
bGQgYmUgYSBsb3Qgb2YgY29tcGxleGl0eTsgcmlnaHQgbm93IGl0IGp1c3QgbmVlZHMgdG8gZGVh
bCB3aXRoIGV4YWN0bHkgb25lCisgICAgICAgIFNldExvY2FsLWxpa2Ugb3BlcmF0aW9uLiBUaGUg
YWx0ZXJuYXRpdmUgaXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbnZlcnNpb24gbm9kZSB0aGF0
CisgICAgICAgIHdlIGluamVjdCBlbmRzIHVwIGV4aXRpbmcgKmJhY2t3YXJkKiByYXRoZXIgdGhh
biBmb3J3YXJkLgorICAgICAgICAKKyAgICAgICAgQnV0IG1ha2luZyB0aGUgY29udmVyc2lvbiBu
b2RlcyBleGl0IGJhY2t3YXJkIGlzIHNvbWV3aGF0IHRyaWNreS4gQmVmb3JlIHRoaXMgcGF0Y2gs
CisgICAgICAgIGNvbnZlcnNpb24gbm9kZXMgYWx3YXlzIGV4aXQgZm9yd2FyZCBmb3IgU2V0TG9j
YWxzIGFuZCBiYWNrd2FyZHMgb3RoZXJ3aXNlLiBJdCB0dXJucyBvdXQKKyAgICAgICAgdGhhdCB0
aGUgc29sdXRpb24gaXMgdG8gcmF0aW9uYWxpemUgaG93IHdlIGNob29zZSB0aGUgc3BlY3VsYXRp
b24gZGlyZWNpdG9uIGZvciBhCisgICAgICAgIGNvbnZlcnNpb24gbm9kZS4gVGhlIGNvbnZlcnNp
b24gbm9kZSdzIHNwZWN1bGF0aW9uIGRpcmVjdGlvbiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhl
CisgICAgICAgIHNwZWN1bGF0aW9uIGRpcmVjdGlvbiBvZiB0aGUgbm9kZSBmb3Igd2hpY2ggaXQg
aXMgZG9pbmcgYSBjb252ZXJzaW9uLiBTaW5jZSBTZXRMb2NhbCdzCisgICAgICAgIGFscmVhZHkg
ZXhpdCBmb3J3YXJkIGJ5IGRlZmF1bHQsIHRoaXMgcG9saWN5IHByZXNlcnZlcyBvdXIgcHJldmlv
dXMgYmVoYXZpb3IuIEJ1dCBpdAorICAgICAgICBhbHNvIGFsbG93cyB0aGUgT1NSIGVudHJ5cG9p
bnQgY3JlYXRpb24gcGhhc2UgdG8gbWFrZSBpdHMgU2V0TG9jYWxzIGV4aXQgYmFja3dhcmQKKyAg
ICAgICAgaW5zdGVhZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlT3JpZ2luLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpyZWNvdmVyKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVSZWNvdmVyeTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVj
b3Zlcnk6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXhFZGdlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29kZTo6cmVjb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWx1ZVJlY292ZXJ5Rm9yKToKKyAgICAgICAgKiBkZmcvREZHVmFsdWVTb3VyY2UuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6dmFsdWVSZWNvdmVyeSk6CisgICAgICAgICogZGZn
L0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxl
RXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rl
ci5oOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6dW5ib3hlZFN0cmljdEludDUyKToKKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dGVh
ck9mZik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKwogMjAxMy0wOS0zMCAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggY29tcGls
YXRpb24gZm9yIENPTVBJTEVSKE1TVkMpICYmICFDUFUoWDg2KSBhZnRlciByMTU2NDkwLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU2NjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03
Miw2ICs3Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKyAgICBieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5LmNwcAogICAgIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwCiAKICAg
ICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE2
Nyw2ICsxNjcsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
aXJ0dWFsUmVnaXN0ZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNo
cG9pbnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtODAsNiArODAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwIFwKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgXAorICAgIGJ5dGVjb2Rl
L1ZhbHVlUmVjb3ZlcnkuY3BwIFwKICAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAg
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAsNiArMzIwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXFN0cnVjdHVyZVN0dWJJbmZvLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxVbmxpbmtlZENvZGVCbG9jay5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmFsdWVSZWNvdmVyeS5jcHAiIC8+DQogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcV2F0Y2hwb2ludC5jcHAiIC8+DQogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvbXBpbGVyXEJ5dGVjb2RlR2VuZXJhdG9yLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29tcGlsZXJcTm9kZXNDb2Rl
Z2VuLmNwcCIgLz4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsNiBAQAogCQkw
RjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcg
LyogQ0NhbGxIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNFMTdFQTlGNTkw
MEFCQjIxNyAvKiBGUFJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyNEU1NDQxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNGMTdFQTlG
NTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMEYyNEU1NTUxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxG
cmFtZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjI0RTU1MzE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLzsg
fTsKLQkJMEYyNEU1NTYxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTQxN0Yw
QjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAv
KiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjRFNTQ1MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCAq
LzsgfTsKIAkJMEYyNEU1NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTQ2MTdFRTI3
NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggKi87IH07CiAJCTBGMjRFNTRFMTdFRTI3NDkw
MEFCQjIxNyAvKiBKSVRPcGVyYXRpb25XcmFwcGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NDcxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9w
ZXJhdGlvbldyYXBwZXJzLmggKi87IH07CkBAIC0xMjcsNiArMTI1LDkgQEAKIAkJMEYyNEU1NTAx
N0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2gu
Y3BwICovOyB9OwogCQkwRjI0RTU1MTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NEExN0VFMjc0
OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCAqLzsgfTsKIAkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3
IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oICovOyB9OworCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyog
SW5saW5lQ2FsbEZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVT
ZXQuY3BwICovOyB9OworCQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZy
YW1lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NTgxN0Y3NEVE
QjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTcxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVj
b3ZlcnkuY3BwICovOyB9OwogCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFy
cmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQjY2QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3Vu
dGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyQjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QTkx
N0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzIyLDggKzEzMjMs
NiBAQAogCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGUFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEYyNEU1NTMxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFt
ZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVDYWxs
RnJhbWVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjI0RTU1NDE3RjBC
NzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjI0RTU0NTE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGVyYXRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1NDYxN0VFMjc0OTAwQUJCMjE3IC8qIEpJ
VE9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUT3BlcmF0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0RTU0NzE3RUUyNzQ5MDBB
QkIyMTcgLyogSklUT3BlcmF0aW9uV3JhcHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUT3BlcmF0aW9uV3JhcHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMzEsNiArMTMzMCw5IEBACiAJCTBGMjRFNTQ5MTdFRTI3NDkwMEFCQjIxNyAvKiBS
ZXBhdGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcGF0Y2gu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0RTU0QTE3RUUyNzQ5MDBBQkIy
MTcgLyogUmVwYXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBhdGNo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTRCMTdFRTI3NDkwMEFCQjIx
NyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1l
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NTQxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmxpbmVDYWxsRnJhbWVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyNEU1NTcxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRo
ID0gZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkI2NkE4MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29t
aW5nUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0luY29taW5nUmVmQ291bnRlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyog
R0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDSW5jb21pbmdS
ZWZDb3VudGVkSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc2NCw4
ICszNzY2LDYgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRjI0RTU1MzE3RjBC
NzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLywKLQkJCQkwRjI0RTU1NDE3
RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8sCiAJCQkJMEY4MzM1QjQx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLAogCQkJCTBG
ODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8sCiAJ
CQkJMEY2Mzk0NTExNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgKi8sCkBAIC0z
ODAwLDYgKzM4MDAsOCBAQAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlk
U3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0
YXR1cy5oICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
ICovLAorCQkJCTBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQu
Y3BwICovLAorCQkJCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVT
ZXQuaCAqLywKIAkJCQk5NjlBMDc5MzBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCAq
LywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLywKIAkJ
CQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCkBAIC0zODM4LDYg
KzM4NDAsNyBAQAogCQkJCUE3OUU3ODFFMTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVC
bG9jay5jcHAgKi8sCiAJCQkJQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29k
ZUJsb2NrLmggKi8sCiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmls
ZS5oICovLAorCQkJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNw
cCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
LAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLywK
IAkJCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8sCkBAIC01
Mjc2LDYgKzUyNzksNyBAQAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkU1QzE5MTcyNEFGM0QwMDVDNTc0RiAvKiBXZWJL
aXRMTFZNTGlicmFyeUFuY2hvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQz
QzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjI0RTU1ODE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fu
b25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxNTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7IC8vIFRoaXMgbWF5IGJlIG51bGwsIGluZGlj
YXRpbmcgdGhhdCB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsIGFuZCB0aGF0IHRoZSBKU0Z1bmN0aW9u
IGFuZCBKU1Njb3BlIGFyZSBhbHJlYWR5IG9uIHRoZSBzdGFjay4KICAgICBDb2RlT3JpZ2luIGNh
bGxlcjsKICAgICBCaXRWZWN0b3IgY2FwdHVyZWRWYXJzOyAvLyBJbmRleGVkIGJ5IHRoZSBtYWNo
aW5lIGNhbGwgZnJhbWUncyB2YXJpYWJsZSBudW1iZXJpbmcuCi0gICAgc2lnbmVkIHN0YWNrT2Zm
c2V0IDogMzE7CisgICAgaW50IHN0YWNrT2Zmc2V0IDogMzE7CiAgICAgYm9vbCBpc0NhbGwgOiAx
OwogICAgIAogICAgIC8vIFRoZXJlIGlzIHJlYWxseSBubyBnb29kIG5vdGlvbiBvZiBhICJkZWZh
dWx0IiBzZXQgb2YgdmFsdWVzIGZvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworSlNWYWx1ZSBWYWx1ZVJlY292ZXJ5OjpyZWNvdmVyKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHRlY2huaXF1ZSgpKSB7CisgICAg
Y2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBleGVjLT5yKHZpcnR1YWxS
ZWdpc3RlcigpLm9mZnNldCgpKS5qc1ZhbHVlKCk7CisgICAgY2FzZSBJbnQzMkRpc3BsYWNlZElu
SlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVy
KCkub2Zmc2V0KCkpLnVuYm94ZWRJbnQzMigpKTsKKyAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIo
KS5vZmZzZXQoKSkudW5ib3hlZEludDUyKCkpOworICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLT5yKHZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpKS51bmJveGVkU3RyaWN0SW50NTIoKSk7CisgICAgY2FzZSBEb3VibGVE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLT5yKHZpcnR1
YWxSZWdpc3RlcigpLm9mZnNldCgpKS51bmJveGVkRG91YmxlKCkpOworICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVy
KCkub2Zmc2V0KCkpLnVuYm94ZWRDZWxsKCk7CisgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBleGVjLT5yKHZpcnR1
YWxSZWdpc3RlcigpLm9mZnNldCgpKS5qc1ZhbHVlKCk7CisjZWxzZQorICAgICAgICByZXR1cm4g
anNCb29sZWFuKGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpLnVuYm94ZWRCb29s
ZWFuKCkpOworI2VuZGlmCisgICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgcmV0dXJuIGNvbnN0
YW50KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgVmFsdWVSZWNv
dmVyeTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4
dCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHRlY2huaXF1ZSgpKSB7CisgICAgY2FzZSBJbkdQUjoK
KyAgICAgICAgb3V0LnByaW50KGdwcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5i
b3hlZEludDMySW5HUFI6CisgICAgICAgIG91dC5wcmludCgiaW50MzIoIiwgZ3ByKCksICIpIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAgICBv
dXQucHJpbnQoImludDUyKCIsIGdwcigpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJzdHJpY3RJbnQ1
MigiLCBncHIoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5ib3hlZEJvb2xl
YW5JbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJib29sKCIsIGdwcigpLCAiKSIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBvdXQucHJpbnQo
ImNlbGwoIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVJbnQzMklu
R1BSOgorICAgICAgICBvdXQucHJpbnQoInVpbnQzMigiLCBncHIoKSwgIikiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSW5GUFI6CisgICAgICAgIG91dC5wcmludChmcHIoKSk7CisgICAg
ICAgIHJldHVybjsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNhc2UgSW5QYWlyOgorICAg
ICAgICBvdXQucHJpbnQoInBhaXIoIiwgdGFnR1BSKCksICIsICIsIHBheWxvYWRHUFIoKSwgIiki
KTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgIG91dC5wcmludGYoIiolZCIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgIG91dC5wcmludGYoIippbnQzMiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICBvdXQucHJpbnRmKCIqaW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFj
azoKKyAgICAgICAgb3V0LnByaW50ZigiKnN0cmljdEludDUyKCVkKSIsIHZpcnR1YWxSZWdpc3Rl
cigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG91YmxlRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnRmKCIqZG91YmxlKCVkKSIsIHZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ2VsbERpc3BsYWNl
ZEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50ZigiKmNlbGwoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkub2Zmc2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBCb29sZWFuRGlzcGxh
Y2VkSW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnRmKCIqYm9vbCglZCkiLCB2aXJ0dWFsUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZ3VtZW50c1Ro
YXRXZXJlTm90Q3JlYXRlZDoKKyAgICAgICAgb3V0LnByaW50ZigiYXJndW1lbnRzIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICBvdXQucHJpbnQoIlsiLCBp
bkNvbnRleHQoY29uc3RhbnQoKSwgY29udGV4dCksICJdIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIERvbnRLbm93OgorICAgICAgICBvdXQucHJpbnRmKCIhIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBW
YWx1ZVJlY292ZXJ5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcElu
Q29udGV4dChvdXQsIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCShyZXZpc2lvbiAx
NTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MiwxNCArNDIsNiBAQCBzdHJ1Y3QgRHVtcENvbnRleHQ7CiAvLyBE
ZXNjcmliZXMgaG93IHRvIHJlY292ZXIgYSBnaXZlbiBieXRlY29kZSB2aXJ0dWFsIHJlZ2lzdGVy
IGF0IGEgZ2l2ZW4KIC8vIGNvZGUgcG9pbnQuCiBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUg
ewotICAgIC8vIEl0J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYXQgdGhlIHJpZ2h0IGxvY2F0aW9u
LgotICAgIEFscmVhZHlJbkpTU3RhY2ssCi0gICAgLy8gSXQncyBhbHJlYWR5IGluIHRoZSBzdGFj
ayBidXQgdW5ib3hlZC4KLSAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIsCi0gICAg
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyLAotICAgIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRDZWxsLAotICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuLAotICAgIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGUsCiAgICAgLy8gSXQncyBpbiBhIHJlZ2lzdGVy
LgogICAgIEluR1BSLAogICAgIFVuYm94ZWRJbnQzMkluR1BSLApAQCAtODksNDggKzgxLDYgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3RlY2huaXF1ZSAhPSBE
b250S25vdzsgfQogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7
IH0KICAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrKCkKLSAg
ICB7Ci0gICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBBbHJlYWR5SW5KU1N0YWNrOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50MzIoKQotICAgIHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3Zlcnkg
YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyKCkKLSAgICB7Ci0gICAgICAgIFZhbHVlUmVj
b3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkSW50NTI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAot
ICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCkK
LSAgICB7Ci0gICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90
ZWNobmlxdWUgPSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEJvb2xlYW4oKQotICAgIHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSBy
ZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRCb29sZWFuOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBz
dGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlKCkKLSAg
ICB7Ci0gICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLSAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBpbkdQUihNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChkYXRhRm9ybWF0ICE9IERhdGFGb3JtYXROb25lKTsKQEAgLTI1Niwy
MSArMjA2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNB
bHJlYWR5SW5KU1N0YWNrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodGVjaG5pcXVl
KCkpIHsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgotICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50NTI6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENl
bGw6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46Ci0gICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGdw
cigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gSW5HUFIgfHwg
bV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hl
ZEJvb2xlYW5JbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1
ZSA9PSBVbmJveGVkSW50NTJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkU3RyaWN0SW50
NTJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkQ2VsbEluR1BSKTsKQEAgLTMwOSw5NSAr
MjQ0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX3NvdXJj
ZS5jb25zdGFudCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0
cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAodGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgotICAg
ICAgICAgICAgb3V0LnByaW50ZigiLSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIihpbnQzMikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NTI6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoaW50NTIp
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCkiKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVh
bjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIihib29sKSIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIoZG91YmxlKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjYXNlIEluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KGdwcigpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgIG91
dC5wcmludCgiaW50MzIoIiwgZ3ByKCksICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoImludDUy
KCIsIGdwcigpLCAiKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94
ZWRTdHJpY3RJbnQ1MkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJzdHJpY3RJbnQ1Migi
LCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBVbmJveGVk
Qm9vbGVhbkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJib29sKCIsIGdwcigpLCAiKSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0g
ICAgICAgICAgICBvdXQucHJpbnQoImNlbGwoIiwgZ3ByKCksICIpIik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgVUludDMySW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQo
InVpbnQzMigiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2Fz
ZSBJbkZQUjoKLSAgICAgICAgICAgIG91dC5wcmludChmcHIoKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAg
ICAgICBvdXQucHJpbnQoInBhaXIoIiwgdGFnR1BSKCksICIsICIsIHBheWxvYWRHUFIoKSwgIiki
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgICAgICBjYXNlIERpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIiolZCIsIHZpcnR1YWxSZWdpc3Rlcigp
Lm9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnQzMkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIippbnQzMiglZCkiLCB2aXJ0
dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50
NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiKnN0cmljdEludDUyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNl
dCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIqZG91YmxlKCVkKSIsIHZpcnR1YWxS
ZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKmNlbGwoJWQp
IiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIqYm9vbCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAg
ICAgICAgICAgb3V0LnByaW50ZigiYXJndW1lbnRzIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlsiLCBpbkNvbnRl
eHQoY29uc3RhbnQoKSwgY29udGV4dCksICJdIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGNhc2UgRG9udEtub3c6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIhIik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Ci0gICAgewotICAgICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Ci0gICAgfQorICAgIEpTVmFs
dWUgcmVjb3ZlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAKKyAgICB2b2lkIGR1bXBJbkNvbnRl
eHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0OworICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBWYWx1ZVJl
Y292ZXJ5VGVjaG5pcXVlIG1fdGVjaG5pcXVlOwogICAgIHVuaW9uIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEpTVmFsdWU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZs
dXNoZWREb3VibGU6Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpLCBGb3J3YXJkU3BlY3VsYXRpb24pOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CkBAIC0xNDA3LDExICsxNDA3LDExIEBAIHByaXZhdGU6CiAgICAg
Ly8gZWRnZSwgeW91IGVpdGhlciBjYWxsIGZpeEVkZ2UoKSBvciBwZXJmb3JtIHRoZSBlcXVpdmFs
ZW50IGZ1bmN0aW9uYWxpdHkKICAgICAvLyB5b3Vyc2VsZi4gT2J2aW91c2x5LCB5b3Ugc2hvdWxk
IGhhdmUgYSByZWFsbHkgZ29vZCByZWFzb24gaWYgeW91IGRvIHRoZSBsYXR0ZXIuCiAgICAgdGVt
cGxhdGU8VXNlS2luZCB1c2VLaW5kPgotICAgIHZvaWQgZml4RWRnZShFZGdlJiBlZGdlLCBTcGVj
dWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQorICAgIHZv
aWQgZml4RWRnZShFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtp
bmQpKSB7CiAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0
aG1ldGljKCkpIHsKLSAgICAgICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdl
LCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3Vi
bGVOb2RlKGVkZ2UsIHVzZUtpbmQsIG1fY3VycmVudE5vZGUtPnNwZWN1bGF0aW9uRGlyZWN0aW9u
KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMTQyNCw2ICsxNDI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDUyVG9Eb3VibGUsCiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCks
IE51bWJlclVzZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+c2V0U3BlY3VsYXRpb25EaXJl
Y3Rpb24obV9jdXJyZW50Tm9kZS0+c3BlY3VsYXRpb25EaXJlY3Rpb24oKSk7CiAgICAgICAgICAg
ICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC0xNDc3LDYgKzE0NzgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyLCBJbnQ1MlRvVmFsdWUsCiAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgVW50
eXBlZFVzZSkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRTcGVjdWxhdGlvbkRpcmVjdGlvbiht
X2N1cnJlbnROb2RlLT5zcGVjdWxhdGlvbkRpcmVjdGlvbigpKTsKICAgICAgICAgICAgIGVkZ2Ug
PSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24g
MTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsMzEgKzkyLDcgQEAgdm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdCgK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBWYWx1
ZVJlY292ZXJ5IHJlY292ZXJ5ID0gcmVjb3Zlcmllc1tpXTsKLSAgICAgICAgSlNWYWx1ZSB2YWx1
ZTsKLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZENlbGw6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46Ci0g
ICAgICAgICAgICB2YWx1ZSA9IGV4ZWMtPnIob3BlcmFuZCkuanNWYWx1ZSgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgot
ICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQz
MigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIoZXhlYy0+cihvcGVy
YW5kKS51bmJveGVkSW50NTIoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICAgICAgdmFsdWUgPSBqc0Rv
dWJsZU51bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWREb3VibGUoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDb25zdGFudDoKLSAgICAgICAgICAgIHZhbHVlID0gcmVj
b3ZlcnkuY29uc3RhbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZhbHVlOworICAgICAgICByZXN1
bHRbaV0gPSByZWNvdmVyaWVzW2ldLnJlY292ZXIoZXhlYyk7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2ICsy
NzQsMjYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gZmlsdGVyRmxhZ3MofmZsYWdz
KTsKICAgICB9CiAgICAgCisgICAgU3BlY3VsYXRpb25EaXJlY3Rpb24gc3BlY3VsYXRpb25EaXJl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKGZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKQor
ICAgICAgICAgICAgcmV0dXJuIEZvcndhcmRTcGVjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEJh
Y2t3YXJkU3BlY3VsYXRpb247CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0U3BlY3VsYXRpb25E
aXJlY3Rpb24oU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgY2FzZSBGb3J3YXJkU3BlY3VsYXRpb246Cisg
ICAgICAgICAgICBtZXJnZUZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEJhY2t3YXJkU3BlY3VsYXRpb246CisgICAgICAgICAgICBjbGVh
ckZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTm9kZVR5cGUgb3ApCiAgICAgewogICAgICAgICBt
X29wID0gb3A7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU2NjY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw4ICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBt
X2dyYXBoLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBFeHRyYWN0T1NSRW50cnlMb2NhbCwgY29k
ZU9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0
KCkpKTsKLSAgICAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICBOb2Rl
KiBzZXRMb2NhbCA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFw
aCwgU3BlY05vbmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUpLCBFZGdl
KG5vZGUpKTsKKyAgICAgICAgICAgIHNldExvY2FsLT5zZXRTcGVjdWxhdGlvbkRpcmVjdGlvbihC
YWNrd2FyZFNwZWN1bGF0aW9uKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbmV3Um9v
dC0+YXBwZW5kTm9kZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxl
RXhpdChjb25zdCAKICAgICAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3Bl
cmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJl
Y292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICBpbnQgb3BlcmFuZCA9IG9wZXJhbmRz
Lm9wZXJhbmRGb3JJbmRleChpbmRleCk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292
ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgpAQCAt
MjUwLDIzICsyNDksNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
c2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6
Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6Ci0gICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46Ci0gICAgICAgICAgICBtX2ppdC5s
b2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCks
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5k
KSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAg
ICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCkt
PmFzQml0cy50YWcpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI5OSw3ICsyODEsNiBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICBj
YXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDMyKApAQCAtMzEzLDcgKzI5NCw2IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoK
ICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgogICAgICAgICBjYXNlIENlbGxEaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkBAIC0zMjcsNyArMzA3LDYg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRCb29sZWFuOgogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgIGNh
c2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0LmxvYWQzMigK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYs
MTEgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIC8vIGRl
ZmluaXRlbHkgaW4gYSB3ZWxsLWtub3duIHNwb3QgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIHJlZ2Fy
ZGxlc3Mgb2Ygd2hldGhlciBpdCBoYWQKICAgICAvLyBvcmlnaW5hbGx5IGJlZW4gaW4gYSByZWdp
c3RlciBvciBzcGlsbGVkLiBUaGlzIGFsbG93cyB1cyB0byBkZWNvdXBsZSAid2hlcmUgd2FzCiAg
ICAgLy8gdGhlIHZhcmlhYmxlIiBmcm9tICJob3cgd2FzIGl0IHJlcHJlc2VudGVkIi4gQ29uc2lk
ZXIgdGhhdCB0aGUKLSAgICAvLyBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIgcmVjb3Zl
cnk6IGl0IHRlbGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAgICAvLyBwYXJ0aWN1bGFy
IHBsYWNlIGFuZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2UgaGF2
ZSB0aHJlZSBkaWZmZXJlbnQKLSAgICAvLyBwbGFjZXMgdGhhdCBhIHZhbHVlIGNvdWxkIGJlIChz
dGFjaywgZGlzcGxhY2VkLCByZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50Ci0gICAg
Ly8gd2F5cyBvZiByZXByZXNlbnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVyaWVz
IGlzIHRocmVlICogYSBidW5jaC4gVGhlIGNvZGUKLSAgICAvLyBiZWxvdyBtZWFucyB0aGF0IHdl
IGhhdmUgdG8gaGF2ZSB0aHJlZSArIGEgYnVuY2ggY2FzZXMgcmF0aGVyIHRoYW4gdGhyZWUgKiBh
IGJ1bmNoLgorICAgIC8vIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHJlY292ZXJ5OiBpdCB0ZWxs
cyB1cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCisgICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQg
dGhhdCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdHdvIGRpZmZl
cmVudAorICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUgY291bGQgYmUgKGRpc3BsYWNlZCwgcmVn
aXN0ZXIpIGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAorICAgIC8vIHdheXMgb2YgcmVwcmVzZW50
aW5nIGEgdmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3ZlcmllcyBpcyB0d28gKiBhIGJ1bmNoLiBU
aGUgY29kZQorICAgIC8vIGJlbG93IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHR3byArIGEg
YnVuY2ggY2FzZXMgcmF0aGVyIHRoYW4gdHdvICogYSBidW5jaC4KICAgICAvLyBPbmNlIHdlIGhh
dmUgbG9hZGVkIHRoZSB2YWx1ZSBmcm9tIHdoZXJldmVyIGl0IHdhcywgdGhlIHJlYm94aW5nIGlz
IHRoZSBzYW1lCiAgICAgLy8gcmVnYXJkbGVzcyBvZiBpdHMgbG9jYXRpb24uIExpa2V3aXNlLCBi
ZWZvcmUgd2UgZG8gdGhlIHJlYm94aW5nLCB0aGUgd2F5IHdlIGdldCB0bwogICAgIC8vIHRoZSB2
YWx1ZSAoaS5lLiB3aGVyZSB3ZSBsb2FkIGl0IGZyb20pIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mg
b2YgaXRzIHR5cGUuIEJlY2F1c2UKQEAgLTIzNCw3ICsyMzQsNiBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICBpbnQgb3BlcmFuZCA9
IG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCk7CiAgICAgICAgIAogICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0
YWNrOgpAQCAtMjQ2LDEzICsyNDUsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoY29uc3QgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3Jh
dGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6Ci0gICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50NTI6Ci0gICAgICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2pp
dC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yNzQsNyArMjY2LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdU
MCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZEludDMyOgogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIElu
dDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNjcmF0Y2gg
KyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMjgzLDcgKzI3NCw2IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ1MjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKICAg
ICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTMwNyw3ICsyOTcsNiBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBt
X2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgogICAgICAgICBjYXNlIEluRlBSOgog
ICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQ
UkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzOSwx
MyArMTUzOSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoCiAg
ICAgdW5zaWduZWQgYXJndW1lbnRQb3NpdGlvblN0YXJ0ID0gbm9kZS0+YXJndW1lbnRQb3NpdGlv
blN0YXJ0KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zv
cklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkgewotICAgICAgICBWYWx1ZVJlY292
ZXJ5IHJlY292ZXJ5OworICAgICAgICBWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZTsKICAgICAgICAg
aWYgKGNvZGVCbG9jay0+aXNDYXB0dXJlZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkp
Ci0gICAgICAgICAgICByZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2so
KTsKKyAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoVmFsdWVJbkpTU3RhY2sp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24mIGFyZ3VtZW50
UG9zaXRpb24gPQogICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubV9hcmd1bWVudFBvc2l0
aW9uc1thcmd1bWVudFBvc2l0aW9uU3RhcnQgKyBpXTsKLSAgICAgICAgICAgIFZhbHVlU291cmNl
IHZhbHVlU291cmNlOwogICAgICAgICAgICAgc3dpdGNoIChhcmd1bWVudFBvc2l0aW9uLmZsdXNo
Rm9ybWF0KCkpIHsKICAgICAgICAgICAgIGNhc2UgRGVhZEZsdXNoOgogICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkSlNWYWx1ZToKQEAgLTE1NjcsOCArMTU2Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbmxpbmVTdGFydCgKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZh
bHVlU291cmNlKEJvb2xlYW5JbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmVjb3ZlcnkgPSBjb21wdXRlVmFsdWVSZWNvdmVyeUZv
cih2YWx1ZVNvdXJjZSk7CiAgICAgICAgIH0KKyAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVy
eSA9IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKAorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpLCB2
YWx1ZVNvdXJjZSk7CiAgICAgICAgIC8vIFRoZSByZWNvdmVyeSBzaG91bGQgcmVmZXIgZWl0aGVy
IHRvIHNvbWV0aGluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4KICAgICAgICAgLy8gc3RvcmVkIGlu
dG8gdGhlIHN0YWNrIGF0IHRoZSByaWdodCBwbGFjZSwgb3IgdG8gYSBjb25zdGFudCwKICAgICAg
ICAgLy8gc2luY2UgdGhlIEFyZ3VtZW50cyBjb2RlIGlzbid0IHNtYXJ0IGVub3VnaCB0byBoYW5k
bGUgYW55dGhpbmcgZWxzZS4KQEAgLTE4OTgsMTAgKzE4OTgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1f
b3NyRW50cnlIZWFkcy5zaXplKCkpOwogfQogCi1WYWx1ZVJlY292ZXJ5IFNwZWN1bGF0aXZlSklU
Ojpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihjb25zdCBWYWx1ZVNvdXJjZSYgdmFsdWVTb3VyY2Up
CitWYWx1ZVJlY292ZXJ5IFNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihp
bnQgb3BlcmFuZCwgY29uc3QgVmFsdWVTb3VyY2UmIHZhbHVlU291cmNlKQogewogICAgIGlmICh2
YWx1ZVNvdXJjZS5pc0luSlNTdGFjaygpKQotICAgICAgICByZXR1cm4gdmFsdWVTb3VyY2UudmFs
dWVSZWNvdmVyeSgpOworICAgICAgICByZXR1cm4gdmFsdWVTb3VyY2UudmFsdWVSZWNvdmVyeShv
cGVyYW5kKTsKICAgICAgICAgCiAgICAgQVNTRVJUKHZhbHVlU291cmNlLmtpbmQoKSA9PSBIYXZl
Tm9kZSk7CiAgICAgTm9kZSogbm9kZSA9IHZhbHVlU291cmNlLmlkKCkubm9kZShtX2ppdC5ncmFw
aCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI4MiwxMSArMjI4MiwxMSBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPE93blB0cjxTbG93UGF0aEdlbmVyYXRvcj4sIDg+IG1fc2xvd1Bh
dGhHZW5lcmF0b3JzOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuPiBtX3BsYW5z
OwogICAgIAotICAgIFZhbHVlUmVjb3ZlcnkgY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IoY29uc3Qg
VmFsdWVTb3VyY2UmKTsKKyAgICBWYWx1ZVJlY292ZXJ5IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9y
KGludCBvcGVyYW5kLCBjb25zdCBWYWx1ZVNvdXJjZSYpOwogCiAgICAgVmFsdWVSZWNvdmVyeSBj
b21wdXRlVmFsdWVSZWNvdmVyeUZvcihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcih2YWx1ZVNvdXJjZUZvck9wZXJhbmQoVmlydHVhbFJl
Z2lzdGVyKG9wZXJhbmQpKSk7CisgICAgICAgIHJldHVybiBjb21wdXRlVmFsdWVSZWNvdmVyeUZv
cihvcGVyYW5kLCB2YWx1ZVNvdXJjZUZvck9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQp
KSk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1
ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
dWVTb3VyY2UuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWx1ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMjggKzE3OCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZUtpbmRUb0RhdGFGb3JtYXQoa2luZCgp
KTsKICAgICB9CiAgICAgCi0gICAgVmFsdWVSZWNvdmVyeSB2YWx1ZVJlY292ZXJ5KCkgY29uc3QK
KyAgICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVjb3ZlcnkoaW50IG9wZXJhbmQpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNUcml2aWFsbHlSZWNvdmVyYWJsZSgpKTsKICAgICAgICAgc3dp
dGNoIChraW5kKCkpIHsKLSAgICAgICAgY2FzZSBWYWx1ZUluSlNTdGFjazoKLSAgICAgICAgICAg
IHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJl
Y292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIoKTsKLSAgICAgICAgICAgIAot
ICAgICAgICBjYXNlIEludDUySW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1MigpOwotICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292
ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpOwotICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292
ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbigpOwotICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgRG91YmxlSW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGUoKTsKLSAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIFNvdXJjZUlzRGVhZDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292
ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIApAQCAtMjA3LDggKzE4
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5Ojphcmd1bWVu
dHNUaGF0V2VyZU5vdENyZWF0ZWQoKTsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6
ZGlzcGxhY2VkSW5KU1N0YWNrKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKSwgZGF0YUZvcm1hdCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMTU2NjY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDggKzEyNCwxMCBAQCB2b2lkIFZhcmlhYmxlRXZlbnRT
dHJlYW06OnJlY29uc3RydWN0KAogICAgIC8vIHJlZmxlY3QgdGhpcy4KICAgICBpZiAoIWluZGV4
KSB7CiAgICAgICAgIHZhbHVlUmVjb3ZlcmllcyA9IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBudW1WYXJpYWJsZXMpOwotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZhbHVlUmVjb3Zlcmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2soKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZVJlY292ZXJpZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmRp
c3BsYWNlZEluSlNTdGFjaygKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFsdWVS
ZWNvdmVyaWVzLm9wZXJhbmRGb3JJbmRleChpKSksIERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTE4MSw3ICsxODMsNyBAQCB2b2lkIFZh
cmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvcGVyYW5kU291cmNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBWYWx1ZVNvdXJjZSYg
c291cmNlID0gb3BlcmFuZFNvdXJjZXNbaV07CiAgICAgICAgIGlmIChzb3VyY2UuaXNUcml2aWFs
bHlSZWNvdmVyYWJsZSgpKSB7Ci0gICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBzb3Vy
Y2UudmFsdWVSZWNvdmVyeSgpOworICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gc291
cmNlLnZhbHVlUmVjb3Zlcnkob3BlcmFuZFNvdXJjZXMub3BlcmFuZEZvckluZGV4KGkpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjc4LDEzICsyODAs
NiBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgICAgICB2YWx1
ZVJlY292ZXJpZXNbaV0gPQogICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5K
U1N0YWNrKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5mby51LnZpcnR1YWxSZWcpLCBp
bmZvLmZvcm1hdCk7CiAgICAgfQotICAgIAotICAgIC8vIFN0ZXAgNDogTWFrZSBzdXJlIHRoYXQg
Zm9yIGxvY2FscyB0aGF0IGNvaW5jaWRlIHdpdGggdHJ1ZSBjYWxsIGZyYW1lIGhlYWRlcnMsIHRo
ZSBleGl0IGNvbXBpbGVyIGtub3dzCi0gICAgLy8gdGhhdCB0aG9zZSB2YWx1ZXMgZG9uJ3QgaGF2
ZSB0byBiZSByZWNvdmVyZWQuIFNpZ25hbCB0aGlzIGJ5IHVzaW5nIFZhbHVlUmVjb3Zlcnk6OmFs
cmVhZHlJbkpTU3RhY2soKQotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVD
YWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgaS0t
OykKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllcy5zZXRMb2NhbChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpIC0gaSAtIDEsIFZhbHVlUmVj
b3Zlcnk6OmFscmVhZHlJbkpTU3RhY2soKSk7Ci0gICAgfQogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXIuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25zdDsKICAgICAgICAgaW50
MzJfdCB1bmJveGVkSW50MzIoKSBjb25zdDsKICAgICAgICAgaW50NjRfdCB1bmJveGVkSW50NTIo
KSBjb25zdDsKKyAgICAgICAgaW50NjRfdCB1bmJveGVkU3RyaWN0SW50NTIoKSBjb25zdDsKICAg
ICAgICAgYm9vbCB1bmJveGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3VibGUgdW5ib3hl
ZERvdWJsZSgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7CkBA
IC0xNzcsNiArMTc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdS5pbnRl
Z2VyID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7CiAgICAgfQogCisgICAgQUxXQVlTX0lO
TElORSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVkU3RyaWN0SW50NTIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHUuaW50ZWdlcjsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgUmVnaXN0ZXI6OnVuYm94ZWRCb29sZWFuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAhIXBheWxvYWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDUzICszNTYsOSBAQCB2
b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGCiAgICAgbV9yZWdpc3RlckFy
cmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZUJhcnJpZXI8VW5rbm93bj5bXT4obV9udW1Bcmd1
bWVudHMpOwogICAgIG1fcmVnaXN0ZXJzID0gbV9yZWdpc3RlckFycmF5LmdldCgpIC0gQ2FsbEZy
YW1lOjpvZmZzZXRGb3IoMSkgLSAxOwogCi0gICAgdGVhck9mZkZvcklubGluZUNhbGxGcmFtZSgK
LSAgICAgICAgY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCwKLSAgICAgICAgaW5saW5lQ2FsbEZyYW1lKTsKLX0KLQot
dm9pZCBBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUoVk0mIHZtLCBSZWdpc3Rl
ciogcmVnaXN0ZXJzLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLXsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAgICAgVmFs
dWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tpICsgMV07
Ci0gICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2UnbGwgc3VwcG9ydCBkaXNwbGFjZWQgcmVjb3Zl
cmllcyAoaW5kaWNhdGluZyB0aGF0IHRoZQotICAgICAgICAvLyBhcmd1bWVudCB3YXMgZmx1c2hl
ZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiksIGJ1dCBmb3Igbm93IHdlIGRvbid0IGRvCi0gICAg
ICAgIC8vIHRoYXQgc28gdGhpcyBjb2RlIHdpbGwgZmFpbCBpZiB0aGF0IHdlcmUgdG8gaGFwcGVu
LiBPbiB0aGUgb3RoZXIgaGFuZCwKLSAgICAgICAgLy8gaXQncyBtdWNoIGxlc3MgbGlrZWx5IHRo
YXQgd2UnbGwgc3VwcG9ydCBpbi1yZWdpc3RlciByZWNvdmVyaWVzIHNpbmNlCi0gICAgICAgIC8v
IHRoaXMgY29kZSBkb2VzIG5vdCAoZWFzaWx5KSBoYXZlIGFjY2VzcyB0byByZWdpc3RlcnMuCi0g
ICAgICAgIEpTVmFsdWUgdmFsdWU7Ci0gICAgICAgIFJlZ2lzdGVyKiBsb2NhdGlvbiA9ICZyZWdp
c3RlcnNbQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKV07Ci0gICAgICAgIHN3aXRjaCAocmVj
b3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgotICAg
ICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+anNWYWx1ZSgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICAg
ICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgot
ICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDUyKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZENlbGw6Ci0gICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJv
b2xlYW46Ci0gICAgICAgICAgICB2YWx1ZSA9IGpzQm9vbGVhbihsb2NhdGlvbi0+dW5ib3hlZEJv
b2xlYW4oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkRG91YmxlOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICB2YWx1
ZSA9IGpzTnVtYmVyKCpiaXR3aXNlX2Nhc3Q8ZG91YmxlKj4obG9jYXRpb24pKTsKLSNlbHNlCi0g
ICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT5qc1ZhbHVlKCk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbnN0YW50OgotICAgICAgICAgICAgdmFsdWUgPSBy
ZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5U2V0QXJndW1lbnQodm0sIGksIHZhbHVlKTsK
KyAgICAgICAgdHJ5U2V0QXJndW1lbnQoY2FsbEZyYW1lLT52bSgpLCBpLCByZWNvdmVyeS5yZWNv
dmVyKGNhbGxGcmFtZSkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw2
IEBAIHByaXZhdGU6CiAgICAgQXJndW1lbnRzKENhbGxGcmFtZSopOwogICAgIEFyZ3VtZW50cyhD
YWxsRnJhbWUqLCBOb1BhcmFtZXRlcnNUeXBlKTsKICAgICAgICAgCi0gICAgdm9pZCB0ZWFyT2Zm
Rm9ySW5saW5lQ2FsbEZyYW1lKFZNJiB2bSwgUmVnaXN0ZXIqLCBJbmxpbmVDYWxsRnJhbWUqKTsK
LQogcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAo=
</data>
<flag name="review"
          id="235309"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="235310"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213022</attachid>
            <date>2013-09-30 12:32:47 -0700</date>
            <delta_ts>2013-09-30 12:52:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52817</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBA
QAorMjAxMy0wOS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEdldCByaWQgb2YgdGhlIEFscmVhZHlJbkpTU3RhY2sgcmVjb3ZlcmllcyBzaW5jZSB0aGV5IGFy
ZSB0b3RhbGx5IHJlZHVuZGFudCB3aXRoIHRoZSBEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcmll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIG1vc3RseSBqdXN0IGtpbGxzIGEgYnVuY2ggb2YgY29kZS4KKyAgICAgICAgCisgICAg
ICAgIEJ1dCBpbmNpZGVudGFseSB3aGlsZSBraWxsaW5nIHRoYXQgY29kZSwgSSB1bmNvdmVyZWQg
YSBidWcgaW4gb3VyIEZUTCBPU1IgZW50cnlwb2ludAorICAgICAgICBjcmVhdGlvbiBwaGFzZS4g
VGhlIHBoYXNlIGluc2VydHMgYSBzZXF1ZW5jZSBvZiBTZXRMb2NhbChFeHRyYWN0T1NSRW50cnlM
b2NhbCkgbm9kZXMuCisgICAgICAgIElmIHdlIGhvaXN0IHNvbWUgdHlwZSBjaGVjayBpbnRvIHRo
ZSBsb2NhbCwgdGhlbiB3ZSBtaWdodCBpbmplY3QgYSBjb252ZXJzaW9uIG5vZGUKKyAgICAgICAg
YmV0d2VlbiB0aGUgRXh0cmFjdE9TUkVudHJ5TG9jYWwgYW5kIHRoZSBTZXRMb2NhbCAtIGZvciBl
eGFtcGxlIHdlIG1pZ2h0IHB1dCBpbiBhCisgICAgICAgIEludDMyVG9Eb3VibGUgbm9kZS4gQnV0
IGN1cnJlbnRseSB0aGUgRml4dXBQaGFzZSB3aWxsIG1ha2UgYWxsIGNvbnZlcnNpb24gbm9kZXMg
cGxhY2VkCisgICAgICAgIG9uIGFuIGVkZ2Ugb2YgYSBTZXRMb2NhbCB1c2UgZm9yd2FyZCBleGl0
LiBUaGlzIHRoZW4gY29uZnVzZXMgdGhlIE9TUiBleGl0IG1hY2hpbmVyeS4KKyAgICAgICAgV2hl
biBPU1IgZXhpdCBzZWVzIGEgZm9yd2FyZCBleGl0LCBpdCB0cmllcyB0byAicm9sbCBmb3J3YXJk
IiBleGVjdXRpb24gZnJvbSB0aGUgZXhpdGluZworICAgICAgICBub2RlIHRvIHRoZSBmaXJzdCBu
b2RlIHRoYXQgaGFzIGEgZGlmZmVyZW50IENvZGVPcmlnaW4uIFRoaXMgb25seSB3b3JrcyBpZiB0
aGUgbm9kZXMKKyAgICAgICAgYWZ0ZXIgdGhlIGZvcndhcmQgZXhpdCBhcmUgTW92SGludHMgb3Ig
b3RoZXIgdG5pbmdzIHRoYXQgdGhlIE9TUiBleGl0IGNvbXBpbGVyIGNhbgorICAgICAgICBmb3J3
YXJkLWV4ZWN1dGUuIEJ1dCBoZXJlLCBpdCB3aWxsIHNlZSBhIGJ1bmNoIG9mIFNldExvY2FsIGFu
ZCBFeHRyYWN0T1NSRW50cnlMb2NhbAorICAgICAgICBub2RlcyBmb3IgdGhlIHNhbWUgYnl0ZWNv
ZGUgaW5kZXguIFR3byBwb3NzaWJsZSBzb2x1dGlvbnMgZXhpc3QuIFdlIGNvdWxkIHRlYWNoIHRo
ZQorICAgICAgICBmb3J3YXJkLWV4ZWN1dGlvbiBsb2dpYyBob3cgdG8gZGVhbCB3aXRoIG11bHRp
cGxlIFNldExvY2FscyBhbmQgRXh0cmFjdE9TUkVudHJ5TG9jYWxzLgorICAgICAgICBUaGlzIHdv
dWxkIGJlIGEgbG90IG9mIGNvbXBsZXhpdHk7IHJpZ2h0IG5vdyBpdCBqdXN0IG5lZWRzIHRvIGRl
YWwgd2l0aCBleGFjdGx5IG9uZQorICAgICAgICBTZXRMb2NhbC1saWtlIG9wZXJhdGlvbi4gVGhl
IGFsdGVybmF0aXZlIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb252ZXJzaW9uIG5vZGUgdGhh
dAorICAgICAgICB3ZSBpbmplY3QgZW5kcyB1cCBleGl0aW5nICpiYWNrd2FyZCogcmF0aGVyIHRo
YW4gZm9yd2FyZC4KKyAgICAgICAgCisgICAgICAgIEJ1dCBtYWtpbmcgdGhlIGNvbnZlcnNpb24g
bm9kZXMgZXhpdCBiYWNrd2FyZCBpcyBzb21ld2hhdCB0cmlja3kuIEJlZm9yZSB0aGlzIHBhdGNo
LAorICAgICAgICBjb252ZXJzaW9uIG5vZGVzIGFsd2F5cyBleGl0IGZvcndhcmQgZm9yIFNldExv
Y2FscyBhbmQgYmFja3dhcmRzIG90aGVyd2lzZS4gSXQgdHVybnMgb3V0CisgICAgICAgIHRoYXQg
dGhlIHNvbHV0aW9uIGlzIHRvIHJhdGlvbmFsaXplIGhvdyB3ZSBjaG9vc2UgdGhlIHNwZWN1bGF0
aW9uIGRpcmVjaXRvbiBmb3IgYQorICAgICAgICBjb252ZXJzaW9uIG5vZGUuIFRoZSBjb252ZXJz
aW9uIG5vZGUncyBzcGVjdWxhdGlvbiBkaXJlY3Rpb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRo
ZQorICAgICAgICBzcGVjdWxhdGlvbiBkaXJlY3Rpb24gb2YgdGhlIG5vZGUgZm9yIHdoaWNoIGl0
IGlzIGRvaW5nIGEgY29udmVyc2lvbi4gU2luY2UgU2V0TG9jYWwncworICAgICAgICBhbHJlYWR5
IGV4aXQgZm9yd2FyZCBieSBkZWZhdWx0LCB0aGlzIHBvbGljeSBwcmVzZXJ2ZXMgb3VyIHByZXZp
b3VzIGJlaGF2aW9yLiBCdXQgaXQKKyAgICAgICAgYWxzbyBhbGxvd3MgdGhlIE9TUiBlbnRyeXBv
aW50IGNyZWF0aW9uIHBoYXNlIHRvIG1ha2UgaXRzIFNldExvY2FscyBleGl0IGJhY2t3YXJkCisg
ICAgICAgIGluc3RlYWQuCisgICAgICAgIAorICAgICAgICBPZiBjb3Vyc2UsIGlmIHRoZSBTZXRM
b2NhbChFeHRyYWN0T1NSRW50cnlMb2NhbCkgc2VxdWVuY2VzIGV4aXQgYmFja3dhcmQsIHRoZW4g
d2UgbmVlZAorICAgICAgICB0byBtYWtlIHN1cmUgdGhhdCB0aGUgT1NSIGV4aXQgbWFjaGluZSBr
bm93cyB0aGF0IHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGluZGVlZCBsaXZlLgorICAgICAgICBD
b25zaWRlciB0aGF0IGlmIHdlIGhhdmU6CisgICAgICAgIAorICAgICAgICAgICAgYTogRXh0cmFj
dE9TUkVudHJ5TG9jYWwobG9jMSkKKyAgICAgICAgICAgIGI6IFNldExvY2FsKEBhLCBsb2MxKQor
ICAgICAgICAgICAgYzogRXh0cmFjdE9TUmVudHJ5TG9jYWwobG9jMikKKyAgICAgICAgICAgIGQ6
IFNldExvY2FsKEBjLCBsb2MyKQorICAgICAgICAKKyAgICAgICAgV2l0aG91dCBhZGRpdGlvbmFs
IG1hZ2ljLCB0aGUgZXhpdCBhdCBAYiB3aWxsIHRoaW5rIHRoYXQgbG9jMiBpcyBkZWFkIGFuZCB0
aGUgT1NSIGV4aXQKKyAgICAgICAgY29tcGlsZXIgd2lsbCBjbG9iYmVyIGxvYzIgd2l0aCBVbmRl
ZmluZWQuIFNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgYWN0dWFsbHkKKyAgICAgICAg
ZW1pdCBjb2RlIGxpa2U6CisgICAgICAgIAorICAgICAgICAgICAgYTogRXh0cmFjdE9TUkVudHJ5
TG9jYWwobG9jMSkKKyAgICAgICAgICAgIGI6IEV4dHJhY3RPU1JFbnRyeUxvY2FsKGxvYzIpCisg
ICAgICAgICAgICBjOiBTZXRMb2NhbChAYSwgbG9jMSkKKyAgICAgICAgICAgIGQ6IFNldExvY2Fs
KEBiLCBsb2MyKQorICAgICAgICAgICAgZTogU2V0TG9jYWwoQGEsIGxvYzEpCisgICAgICAgICAg
ICBmOiBTZXRMb2NhbChAYiwgbG9jMikKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlT3JpZ2luLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpyZWNvdmVyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgIChKU0M6
OlZhbHVlUmVjb3Zlcnk6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3Zlcnku
aDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBTZXRMb2NhbHNJbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29kZTo6cmVjb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRpb25EaXJlY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKToKKyAgICAgICAgKiBkZmcvREZHVmFsdWVTb3VyY2Uu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6dmFsdWVSZWNvdmVyeSk6CisgICAg
ICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVj
dWxhdGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVNYWNo
aW5lSW50KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rlci5oOgorICAgICAgICAoSlND
OjpSZWdpc3Rlcjo6dW5ib3hlZFN0cmljdEludDUyKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3Vt
ZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dGVhck9mZik6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuaDoKKwogMjAxMy0wOS0zMCAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyBWTSBpbnN0ZWFkIG9mIEpTR2xvYmFsT2JqZWN0
IHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
Y3BwCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCiAgICAgYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAKICAgICBi
eXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgXAogICAg
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBcCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIFwKKyAgICBieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcCBcCiAgICAgYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAogICAgIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU2NjY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzIwLDYgKzMyMCw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxTdHJ1Y3R1cmVTdHVi
SW5mby5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVW5saW5r
ZWRDb2RlQmxvY2suY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XFZhbHVlUmVjb3ZlcnkuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXFdhdGNocG9pbnQuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b21waWxlclxCeXRlY29kZUdlbmVyYXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvbXBpbGVyXE5vZGVzQ29kZWdlbi5jcHAiIC8+DQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsOCArMTE4LDYgQEAKIAkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3IC8qIEND
YWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjRFNTQzMTdFQTlGNTkw
MEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjRFNTQ0MTdFQTlG
NTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjI0RTUzRjE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMjRFNTU1MTdG
MEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTMxN0YwQjcxQzAwQUJCMjE3IC8q
IElubGluZUNhbGxGcmFtZVNldC5jcHAgKi87IH07Ci0JCTBGMjRFNTU2MTdGMEI3MUMwMEFCQjIx
NyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJh
bWVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0NTE3RUUyNzQ5MDBB
QkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgKi87IH07CiAJCTBGMjRFNTREMTdFRTI3NDkwMEFC
QjIxNyAvKiBKSVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjI0RTU0NjE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5o
ICovOyB9OwogCQkwRjI0RTU0RTE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9uV3JhcHBl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRF
NTQ3MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25XcmFwcGVycy5oICovOyB9OwpAQCAt
MTI3LDYgKzEyNSw5IEBACiAJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTQ5
MTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNwcCAqLzsgfTsKIAkJMEYyNEU1NTExN0VFMjc0
OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggKi87IH07
CiAJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTRC
MTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgfTsKKwkJ
MEYyNEU1NTUxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1MzE3RjBCNzFD
MDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLzsgfTsKKwkJMEYyNEU1NTYxN0Yw
QjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTQxN0YwQjcxQzAwQUJCMjE3IC8qIElu
bGluZUNhbGxGcmFtZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTU3
MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCAqLzsgfTsKIAkJMEYyNTZDMzYx
NjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI1NkMz
NDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkE4MTdCNkI1M0Qw
MEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkE5MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5n
UmVmQ291bnRlZElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTMyMiw4ICsxMzIzLDYgQEAKIAkJMEYyNEU1M0QxN0VBOUY1OTAwQUJC
MjE3IC8qIENDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
Q2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1M0UxN0VB
OUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRlBSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0RTUzRjE3RUE5
RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMjRFNTUzMTdGMEI3
MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1lU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEYyNEU1NTQxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFt
ZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVDYWxsRnJhbWVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1NDUxN0VFMjc0OTAwQUJC
MjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSklUT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MjRFNTQ2MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyNEU1NDcxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbldyYXBwZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE9wZXJhdGlvbldyYXBwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzMxLDYgKzEzMzAsOSBAQAogCQkw
RjI0RTU0OTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXBhdGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNEU1NEExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwYXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjI0RTU0QjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU1MzE3RjBCNzFDMDBB
QkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1lU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAv
KiBWYWx1ZVJlY292ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZhbHVlUmVjb3ZlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI1NkMz
NDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZB
ODE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR0NJbmNvbWluZ1JlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyQjY2QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3NjQsOCArMzc2Niw2IEBACiAJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMEYyNEU1NTMxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFt
ZVNldC5jcHAgKi8sCi0JCQkJMEYyNEU1NTQxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxG
cmFtZVNldC5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCAqLywKIAkJCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovLAogCQkJCTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAv
KiBBcnJheVByb2ZpbGUuY3BwICovLApAQCAtMzgwMCw2ICszODAwLDggQEAKIAkJCQkwRjkzMzI5
NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTYx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNBODE0QkNG
NTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLywKKwkJCQkwRjI0RTU1MzE3RjBCNzFDMDBB
QkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLywKKwkJCQkwRjI0RTU1NDE3RjBCNzFD
MDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8sCiAJCQkJOTY5QTA3OTMwRUQxRDNB
RTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggKi8sCiAJCQkJQkNGRDhDOTAwRUVCMkVFNzAwMjgz
ODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8sCiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8q
IEp1bXBUYWJsZS5oICovLApAQCAtMzgzOCw2ICszODQwLDcgQEAKIAkJCQlBNzlFNzgxRTE1RUVD
QkE4MDA0N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwICovLAogCQkJCUE3OUU3ODFGMTVF
RUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5oICovLAogCQkJCTBGOTYzQjM2MTNG
QzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLywKKwkJCQkwRjI0RTU1NzE3Rjc0RURC
MDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgKi8sCiAJCQkJMEY0MjZBNDUxNDYwQ0JBQjAw
MTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFG
OEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdE
IC8qIFdhdGNocG9pbnQuY3BwICovLApAQCAtNTI3Niw2ICs1Mjc5LDcgQEAKIAkJCQkxNEU4NEZB
MDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZF
NUMxOTE3MjRBRjNEMDA1QzU3NEYgLyogV2ViS2l0TExWTUxpYnJhcnlBbmNob3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1
cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8q
IFZhbHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAw
RDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5
QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBzdHJ1
Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVl
OyAvLyBUaGlzIG1heSBiZSBudWxsLCBpbmRpY2F0aW5nIHRoYXQgdGhpcyBpcyBhIGNsb3N1cmUg
Y2FsbCBhbmQgdGhhdCB0aGUgSlNGdW5jdGlvbiBhbmQgSlNTY29wZSBhcmUgYWxyZWFkeSBvbiB0
aGUgc3RhY2suCiAgICAgQ29kZU9yaWdpbiBjYWxsZXI7CiAgICAgQml0VmVjdG9yIGNhcHR1cmVk
VmFyczsgLy8gSW5kZXhlZCBieSB0aGUgbWFjaGluZSBjYWxsIGZyYW1lJ3MgdmFyaWFibGUgbnVt
YmVyaW5nLgotICAgIHNpZ25lZCBzdGFja09mZnNldCA6IDMxOworICAgIGludCBzdGFja09mZnNl
dCA6IDMxOwogICAgIGJvb2wgaXNDYWxsIDogMTsKICAgICAKICAgICAvLyBUaGVyZSBpcyByZWFs
bHkgbm8gZ29vZCBub3Rpb24gb2YgYSAiZGVmYXVsdCIgc2V0IG9mIHZhbHVlcyBmb3IKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNv
dmVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTVmFs
dWUgVmFsdWVSZWNvdmVyeTo6cmVjb3ZlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAg
c3dpdGNoICh0ZWNobmlxdWUoKSkgeworICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICByZXR1cm4gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNWYWx1ZSgp
OworICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBqc051
bWJlcihleGVjLT5yKHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKS51bmJveGVkSW50MzIoKSk7
CisgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpLnVuYm94ZWRJbnQ1MigpKTsK
KyAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICByZXR1cm4g
anNOdW1iZXIoZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkudW5ib3hlZFN0cmlj
dEludDUyKCkpOworICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkudW5ib3hl
ZERvdWJsZSgpKTsKKyAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIHJl
dHVybiBleGVjLT5yKHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKS51bmJveGVkQ2VsbCgpOwor
ICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICByZXR1cm4gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNWYWx1
ZSgpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihleGVjLT5yKHZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpKS51bmJveGVkQm9vbGVhbigpKTsKKyNlbmRpZgorICAgIGNhc2UgQ29u
c3RhbnQ6CisgICAgICAgIHJldHVybiBjb25zdGFudCgpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgfQorfQorCit2b2lkIFZhbHVlUmVjb3Zlcnk6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0ZWNo
bmlxdWUoKSkgeworICAgIGNhc2UgSW5HUFI6CisgICAgICAgIG91dC5wcmludChncHIoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAgICBvdXQu
cHJpbnQoImludDMyKCIsIGdwcigpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBV
bmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJpbnQ1MigiLCBncHIoKSwgIiki
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6Cisg
ICAgICAgIG91dC5wcmludCgic3RyaWN0SW50NTIoIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgIG91dC5wcmludCgi
Ym9vbCgiLCBncHIoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5ib3hlZENl
bGxJbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJjZWxsKCIsIGdwcigpLCAiKSIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJ1aW50
MzIoIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluRlBSOgorICAg
ICAgICBvdXQucHJpbnQoZnByKCkpOworICAgICAgICByZXR1cm47CisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgb3V0LnByaW50KCJwYWlyKCIsIHRhZ0dQ
UigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgor
ICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnRmKCIqJWQiLCB2
aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIElu
dDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwg
dmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50ZigiKmludDUyKCVkKSIs
IHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludGYoIipzdHJp
Y3RJbnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50
ZigiKmRvdWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmlu
dGYoIipjZWxsKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgb3V0LnBy
aW50ZigiKmJvb2woJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CisgICAgICAgIG91
dC5wcmludGYoImFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb25zdGFu
dDoKKyAgICAgICAgb3V0LnByaW50KCJbIiwgaW5Db250ZXh0KGNvbnN0YW50KCksIGNvbnRleHQp
LCAiXSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEb250S25vdzoKKyAgICAgICAgb3V0
LnByaW50ZigiISIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVmFsdWVSZWNvdmVyeTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsMTQgKzQyLDYg
QEAgc3RydWN0IER1bXBDb250ZXh0OwogLy8gRGVzY3JpYmVzIGhvdyB0byByZWNvdmVyIGEgZ2l2
ZW4gYnl0ZWNvZGUgdmlydHVhbCByZWdpc3RlciBhdCBhIGdpdmVuCiAvLyBjb2RlIHBvaW50Lgog
ZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKLSAgICAvLyBJdCdzIGFscmVhZHkgaW4gdGhl
IHN0YWNrIGF0IHRoZSByaWdodCBsb2NhdGlvbi4KLSAgICBBbHJlYWR5SW5KU1N0YWNrLAotICAg
IC8vIEl0J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCi0gICAgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEludDMyLAotICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1
MiwKLSAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKLSAgICBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkQm9vbGVhbiwKLSAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91Ymxl
LAogICAgIC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50
MzJJbkdQUiwKQEAgLTg5LDQ4ICs4MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2V0KCkgY29u
c3QgeyByZXR1cm4gbV90ZWNobmlxdWUgIT0gRG9udEtub3c7IH0KICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlUmVj
b3ZlcnkgYWxyZWFkeUluSlNTdGFjaygpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFjazsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3Zl
cnkgYWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCkKLSAgICB7Ci0gICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50MzI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAg
IAotICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1
MigpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHN0
YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuKCkKLSAg
ICB7Ci0gICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwotICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZERvdWJsZSgpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZERvdWJsZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCiAgICAgc3Rh
dGljIFZhbHVlUmVjb3ZlcnkgaW5HUFIoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByLCBE
YXRhRm9ybWF0IGRhdGFGb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YUZvcm1hdCAh
PSBEYXRhRm9ybWF0Tm9uZSk7CkBAIC0yNTYsMjEgKzIwNiw2IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICBib29sIGlzQWxyZWFkeUluSlNTdGFjaygpIGNvbnN0Ci0gICAg
ewotICAgICAgICBzd2l0Y2ggKHRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFjazoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6Ci0g
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgotICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWREb3VibGU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJbnQzMklu
R1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNobmlxdWUg
PT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDUySW5HUFIgfHwgbV90
ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDUySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZENlbGxJbkdQUik7CkBAIC0zMDksOTUgKzI0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUobV9zb3VyY2UuY29uc3RhbnQpOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHRlY2huaXF1ZSgpKSB7Ci0gICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIi0iKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50MzI6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoaW50MzIpIik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgotICAg
ICAgICAgICAgb3V0LnByaW50ZigiKGludDUyKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICAgICAgb3V0
LnByaW50ZigiKGNlbGwpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIo
Ym9vbCkiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKGRvdWJsZSkiKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgICAgIG91
dC5wcmludChncHIoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hl
ZEludDMySW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoImludDMyKCIsIGdwcigpLCAiKSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgot
ICAgICAgICAgICAgb3V0LnByaW50KCJpbnQ1MigiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAgICAg
ICAgIG91dC5wcmludCgic3RyaWN0SW50NTIoIiwgZ3ByKCksICIpIik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKLSAgICAgICAgICAgIG91
dC5wcmludCgiYm9vbCgiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJjZWxsKCIs
IGdwcigpLCAiKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVJbnQzMklu
R1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJ1aW50MzIoIiwgZ3ByKCksICIpIik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgICAgICBvdXQucHJp
bnQoZnByKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgb3V0LnByaW50KCJwYWlyKCIsIHRhZ0dQ
UigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0jZW5k
aWYKLSAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIqJWQiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgot
ICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDUyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIipzdHJpY3RJbnQ1Migl
ZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgb3V0LnBy
aW50ZigiKmRvdWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIipjZWxsKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKmJvb2woJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEFyZ3Vt
ZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIG91dC5wcmludGYoImFyZ3VtZW50
cyIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIENvbnN0YW50OgotICAgICAg
ICAgICAgb3V0LnByaW50KCJbIiwgaW5Db250ZXh0KGNvbnN0YW50KCksIGNvbnRleHQpLCAiXSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIERvbnRLbm93OgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiISIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotICAgIHsKLSAgICAgICAgZHVtcEluQ29udGV4
dChvdXQsIDApOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlY292ZXIoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgCisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250
ZXh0KiBjb250ZXh0KSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgVmFsdWVSZWNvdmVyeVRlY2huaXF1ZSBtX3RlY2huaXF1ZTsK
ICAgICB1bmlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTksNyArMTIxOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSwgRm9yd2FyZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQwNywx
MSArMTQwNywxMSBAQCBwcml2YXRlOgogICAgIC8vIGVkZ2UsIHlvdSBlaXRoZXIgY2FsbCBmaXhF
ZGdlKCkgb3IgcGVyZm9ybSB0aGUgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5CiAgICAgLy8geW91
cnNlbGYuIE9idmlvdXNseSwgeW91IHNob3VsZCBoYXZlIGEgcmVhbGx5IGdvb2QgcmVhc29uIGlm
IHlvdSBkbyB0aGUgbGF0dGVyLgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KLSAgICB2
b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0g
QmFja3dhcmRTcGVjdWxhdGlvbikKKyAgICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSkKICAgICB7
CiAgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkgewogICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICAgICAg
aW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBtX2N1cnJl
bnROb2RlLT5zcGVjdWxhdGlvbkRpcmVjdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE0MjQsNiArMTQyNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91
YmxlLCBJbnQ1MlRvRG91YmxlLAogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5j
b2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQtPnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKG1fY3VycmVudE5vZGUtPnNwZWN1bGF0
aW9uRGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNl
S2luZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTQ3Nyw2
ICsxNDc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQ1MiwgSW50NTJUb1ZhbHVlLAogICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVP
cmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0U3BlY3VsYXRpb25EaXJlY3Rpb24obV9jdXJyZW50Tm9kZS0+c3BlY3VsYXRpb25EaXJl
Y3Rpb24oKSk7CiAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDMxICs5Miw3IEBA
IHZvaWQgSklUQ29kZTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IHJlY292ZXJp
ZXNbaV07Ci0gICAgICAgIEpTVmFsdWUgdmFsdWU7Ci0gICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgotICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgdmFsdWUgPSBleGVjLT5yKG9w
ZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIo
ZXhlYy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NTI6Ci0gICAgICAgICAgICB2
YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDUyKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJs
ZToKLSAgICAgICAgICAgIHZhbHVlID0ganNEb3VibGVOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51
bmJveGVkRG91YmxlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29uc3Rh
bnQ6Ci0gICAgICAgICAgICB2YWx1ZSA9IHJlY292ZXJ5LmNvbnN0YW50KCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXN1
bHRbaV0gPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0W2ldID0gcmVjb3Zlcmllc1tpXS5yZWNvdmVy
KGV4ZWMpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDI2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgcmV0dXJuIGZpbHRlckZsYWdzKH5mbGFncyk7CiAgICAgfQogICAgIAorICAgIFNwZWN1bGF0
aW9uRGlyZWN0aW9uIHNwZWN1bGF0aW9uRGlyZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmIChm
bGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybiBGb3J3YXJkU3Bl
Y3VsYXRpb247CisgICAgICAgIHJldHVybiBCYWNrd2FyZFNwZWN1bGF0aW9uOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKFNwZWN1bGF0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAg
IGNhc2UgRm9yd2FyZFNwZWN1bGF0aW9uOgorICAgICAgICAgICAgbWVyZ2VGbGFncyhOb2RlRXhp
dHNGb3J3YXJkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBCYWNrd2FyZFNw
ZWN1bGF0aW9uOgorICAgICAgICAgICAgY2xlYXJGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldE9wQW5kRGVmYXVsdEZsYWdzKE5v
ZGVUeXBlIG9wKQogICAgIHsKICAgICAgICAgbV9vcCA9IG9wOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwx
NiArOTQsMzcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKSkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1
bWVudF0gPSBub2RlOwogICAgICAgICB9CisgICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJh
c2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CiAgICAgICAgIGZvciAoaW50IGxvY2FsID0g
MDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKICAg
ICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxv
Y2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IHByZXZpb3VzSGVhZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICBOb2RlKiBu
b2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgIGxvY2Fsc1tsb2NhbF0gPSBu
ZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIHZhcmlhYmxlLT5w
cmVkaWN0aW9uKCksIEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBjb2RlT3JpZ2luLAogICAgICAgICAg
ICAgICAgIE9wSW5mbyh2YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSkpOwotICAgICAgICAgICAg
bmV3Um9vdC0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ3JlYXRl
IGEgTW92SGludC4gV2UgY2FuJ3QgdXNlIE1vdkhpbnQncyBkaXJlY3RseSBhdCB0aGlzIHN0YWdl
IG9mCisgICAgICAgICAgICAvLyBjb21waWxhdGlvbiwgc28gd2UgY29vayBvbmUgdXAgYnkgY3Jl
YXRpbmcgYSBuZXcgVmFyaWFibGVBY2Nlc3NEYXRhCisgICAgICAgICAgICAvLyB0aGF0IGlzbid0
IHVuaWZpZWQgd2l0aCBhbnkgb2YgdGhlIG90aGVycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcwor
ICAgICAgICAgICAgLy8gU2V0TG9jYWwgd2lsbCB0dXJuIGludG8gYSBNb3ZIaW50IGFuZCB3aWxs
IG5vdCBoYXZlIGFueSB0eXBlIGNoZWNrcy4KKyAgICAgICAgICAgIG1fZ3JhcGgubV92YXJpYWJs
ZUFjY2Vzc0RhdGEuYXBwZW5kKAorICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSh2
YXJpYWJsZS0+bG9jYWwoKSwgdmFyaWFibGUtPmlzQ2FwdHVyZWQoKSkpOworICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiBuZXdWYXJpYWJsZSA9ICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nl
c3NEYXRhLmxhc3QoKTsKKyAgICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbmV3Um9vdC0+YXBw
ZW5kTm9kZSgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNv
ZGVPcmlnaW4sIE9wSW5mbyhuZXdWYXJpYWJsZSksCisgICAgICAgICAgICAgICAgRWRnZShsb2Nh
bHNbbG9jYWxdKSk7CisgICAgICAgICAgICBzZXRMb2NhbC0+c2V0U3BlY3VsYXRpb25EaXJlY3Rp
b24oQmFja3dhcmRTcGVjdWxhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgbG9j
YWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkg
eworICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhl
YWQubG9jYWwobG9jYWwpOworICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hlYWQpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gcHJldmlvdXNIZWFkLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBsb2NhbHNbbG9jYWxdOworICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBu
ZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBT
ZXRMb2NhbCwgY29kZU9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgRWRnZShub2RlKSk7CisgICAg
ICAgICAgICBzZXRMb2NhbC0+c2V0U3BlY3VsYXRpb25EaXJlY3Rpb24oQmFja3dhcmRTcGVjdWxh
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUo
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
OCw3ICsyMjgsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAg
ICAgCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzW2luZGV4XTsKLSAgICAgICAgaW50IG9wZXJhbmQgPSBvcGVyYW5kcy5vcGVyYW5kRm9ySW5k
ZXgoaW5kZXgpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUo
KSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKQEAgLTI1MCwyMyArMjQ5LDYg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy5wYXlsb2FkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgbV9qaXQubG9hZDMyKAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpLAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCksCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0
PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsK
LSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDEsCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0yOTksNyArMjgxLDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVF
eGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50
MzJJbkdQUjoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMigKQEAgLTMxMyw3ICsyOTQsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0g
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZENlbGxJbkdQUjoKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKApAQCAtMzI3LDcgKzMwNyw2IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKICAg
ICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNw
bGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2
aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxMSArMTU2LDExIEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAvLyBkZWZpbml0ZWx5IGluIGEg
d2VsbC1rbm93biBzcG90IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciByZWdhcmRsZXNzIG9mIHdoZXRo
ZXIgaXQgaGFkCiAgICAgLy8gb3JpZ2luYWxseSBiZWVuIGluIGEgcmVnaXN0ZXIgb3Igc3BpbGxl
ZC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVjb3VwbGUgIndoZXJlIHdhcwogICAgIC8vIHRoZSB2YXJp
YWJsZSIgZnJvbSAiaG93IHdhcyBpdCByZXByZXNlbnRlZCIuIENvbnNpZGVyIHRoYXQgdGhlCi0g
ICAgLy8gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyIHJlY292ZXJ5OiBpdCB0ZWxscyB1
cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQgdGhh
dCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdGhyZWUgZGlmZmVy
ZW50Ci0gICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBjb3VsZCBiZSAoc3RhY2ssIGRpc3BsYWNl
ZCwgcmVnaXN0ZXIpIGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAotICAgIC8vIHdheXMgb2YgcmVw
cmVzZW50aW5nIGEgdmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3ZlcmllcyBpcyB0aHJlZSAqIGEg
YnVuY2guIFRoZSBjb2RlCi0gICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGhhdmUg
dGhyZWUgKyBhIGJ1bmNoIGNhc2VzIHJhdGhlciB0aGFuIHRocmVlICogYSBidW5jaC4KKyAgICAv
LyBJbnQzMkRpc3BsYWNlZEluSlNTdGFjayByZWNvdmVyeTogaXQgdGVsbHMgdXMgdGhhdCB0aGUg
dmFsdWUgaXMgaW4gYQorICAgIC8vIHBhcnRpY3VsYXIgcGxhY2UgYW5kIHRoYXQgdGhhdCBwbGFj
ZSBob2xkcyBhbiB1bmJveGVkIGludDMyLiBXZSBoYXZlIHR3byBkaWZmZXJlbnQKKyAgICAvLyBw
bGFjZXMgdGhhdCBhIHZhbHVlIGNvdWxkIGJlIChkaXNwbGFjZWQsIHJlZ2lzdGVyKSBhbmQgYSBi
dW5jaCBvZiBkaWZmZXJlbnQKKyAgICAvLyB3YXlzIG9mIHJlcHJlc2VudGluZyBhIHZhbHVlLiBU
aGUgbnVtYmVyIG9mIHJlY292ZXJpZXMgaXMgdHdvICogYSBidW5jaC4gVGhlIGNvZGUKKyAgICAv
LyBiZWxvdyBtZWFucyB0aGF0IHdlIGhhdmUgdG8gaGF2ZSB0d28gKyBhIGJ1bmNoIGNhc2VzIHJh
dGhlciB0aGFuIHR3byAqIGEgYnVuY2guCiAgICAgLy8gT25jZSB3ZSBoYXZlIGxvYWRlZCB0aGUg
dmFsdWUgZnJvbSB3aGVyZXZlciBpdCB3YXMsIHRoZSByZWJveGluZyBpcyB0aGUgc2FtZQogICAg
IC8vIHJlZ2FyZGxlc3Mgb2YgaXRzIGxvY2F0aW9uLiBMaWtld2lzZSwgYmVmb3JlIHdlIGRvIHRo
ZSByZWJveGluZywgdGhlIHdheSB3ZSBnZXQgdG8KICAgICAvLyB0aGUgdmFsdWUgKGkuZS4gd2hl
cmUgd2UgbG9hZCBpdCBmcm9tKSBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIGl0cyB0eXBlLiBC
ZWNhdXNlCkBAIC0yMzQsNyArMjM0LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVF
eGl0KGNvbnN0IAogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRz
LnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVy
eSA9IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgaW50IG9wZXJhbmQgPSBvcGVyYW5kcy5vcGVy
YW5kRm9ySW5kZXgoaW5kZXgpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50
ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKQEAgLTI0Niwx
MyArMjQ1LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAg
ICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWREb3VibGU6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUy
OgotICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMjc0LDcgKzI2Niw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAg
ICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZElu
SlNTdGFjazoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKQEAgLTI4Myw3ICsyNzQsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50NTI6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgSW50
NTJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRjaCAr
IGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0zMDcsNyArMjk3LDYgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKICAgICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgY2FzZSBE
b3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzksMTMgKzE1MzksMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAogICAgIHVuc2lnbmVkIGFy
Z3VtZW50UG9zaXRpb25TdGFydCA9IG5vZGUtPmFyZ3VtZW50UG9zaXRpb25TdGFydCgpOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeTsK
KyAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CiAgICAgICAgIGlmIChjb2RlQmxvY2st
PmlzQ2FwdHVyZWQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpKQotICAgICAgICAgICAg
cmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCk7CisgICAgICAgICAg
ICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBcmd1bWVudFBvc2l0aW9uJiBhcmd1bWVudFBvc2l0aW9uID0KICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRQ
b3NpdGlvblN0YXJ0ICsgaV07Ci0gICAgICAgICAgICBWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJjZTsK
ICAgICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRQb3NpdGlvbi5mbHVzaEZvcm1hdCgpKSB7CiAg
ICAgICAgICAgICBjYXNlIERlYWRGbHVzaDoKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFs
dWU6CkBAIC0xNTY3LDggKzE1NjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5s
aW5lU3RhcnQoCiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShCb29s
ZWFuSW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJlY292ZXJ5ID0gY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IodmFsdWVTb3VyY2Up
OwogICAgICAgICB9CisgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVjb3ZlcnkgPSBjb21wdXRlVmFs
dWVSZWNvdmVyeUZvcigKKyAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSwgdmFsdWVTb3VyY2UpOwog
ICAgICAgICAvLyBUaGUgcmVjb3Zlcnkgc2hvdWxkIHJlZmVyIGVpdGhlciB0byBzb21ldGhpbmcg
dGhhdCBoYXMgYWxyZWFkeSBiZWVuCiAgICAgICAgIC8vIHN0b3JlZCBpbnRvIHRoZSBzdGFjayBh
dCB0aGUgcmlnaHQgcGxhY2UsIG9yIHRvIGEgY29uc3RhbnQsCiAgICAgICAgIC8vIHNpbmNlIHRo
ZSBBcmd1bWVudHMgY29kZSBpc24ndCBzbWFydCBlbm91Z2ggdG8gaGFuZGxlIGFueXRoaW5nIGVs
c2UuCkBAIC0xODk4LDEwICsxODk4LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JF
bnRyaWVzKExpbmsKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMu
c2l6ZSgpKTsKIH0KIAotVmFsdWVSZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVl
UmVjb3ZlcnlGb3IoY29uc3QgVmFsdWVTb3VyY2UmIHZhbHVlU291cmNlKQorVmFsdWVSZWNvdmVy
eSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IoaW50IG9wZXJhbmQsIGNv
bnN0IFZhbHVlU291cmNlJiB2YWx1ZVNvdXJjZSkKIHsKICAgICBpZiAodmFsdWVTb3VyY2UuaXNJ
bkpTU3RhY2soKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlU291cmNlLnZhbHVlUmVjb3ZlcnkoKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlU291cmNlLnZhbHVlUmVjb3Zlcnkob3BlcmFuZCk7CiAgICAg
ICAgIAogICAgIEFTU0VSVCh2YWx1ZVNvdXJjZS5raW5kKCkgPT0gSGF2ZU5vZGUpOwogICAgIE5v
ZGUqIG5vZGUgPSB2YWx1ZVNvdXJjZS5pZCgpLm5vZGUobV9qaXQuZ3JhcGgoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyODIsMTEgKzIyODIsMTEgQEAgcHVibGljOgogICAgIFZl
Y3RvcjxPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+LCA4PiBtX3Nsb3dQYXRoR2VuZXJhdG9yczsK
ICAgICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZlUGxhbj4gbV9wbGFuczsKICAgICAKLSAgICBW
YWx1ZVJlY292ZXJ5IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGNvbnN0IFZhbHVlU291cmNlJik7
CisgICAgVmFsdWVSZWNvdmVyeSBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihpbnQgb3BlcmFuZCwg
Y29uc3QgVmFsdWVTb3VyY2UmKTsKIAogICAgIFZhbHVlUmVjb3ZlcnkgY29tcHV0ZVZhbHVlUmVj
b3ZlcnlGb3IoaW50IG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gY29tcHV0ZVZhbHVl
UmVjb3ZlcnlGb3IodmFsdWVTb3VyY2VGb3JPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5k
KSkpOworICAgICAgICByZXR1cm4gY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Iob3BlcmFuZCwgdmFs
dWVTb3VyY2VGb3JPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKSkpOwogICAgIH0KIH07
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJl
dmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDI4ICsxNzgsMTAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdmFsdWVTb3VyY2VLaW5kVG9EYXRhRm9ybWF0KGtpbmQoKSk7CiAgICAgfQogICAg
IAotICAgIFZhbHVlUmVjb3ZlcnkgdmFsdWVSZWNvdmVyeSgpIGNvbnN0CisgICAgVmFsdWVSZWNv
dmVyeSB2YWx1ZVJlY292ZXJ5KGludCBvcGVyYW5kKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVHJpdmlhbGx5UmVjb3ZlcmFibGUoKSk7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7
Ci0gICAgICAgIGNhc2UgVmFsdWVJbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVS
ZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
SW50MzJJbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJ
bnQ1MkluSlNTdGFjazoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NTIoKTsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIENl
bGxJbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZENlbGwoKTsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEJvb2xl
YW5JbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEJvb2xlYW4oKTsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIERv
dWJsZUluSlNTdGFjazoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBT
b3VyY2VJc0RlYWQ6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQo
anNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAKQEAgLTIwNyw4ICsxODksNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YXJndW1lbnRzVGhhdFdlcmVOb3RD
cmVhdGVkKCk7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNv
dmVyeSgpOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNT
dGFjayhWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCksIGRhdGFGb3JtYXQoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
RXZlbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw4ICsxMjQsMTAgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0
cnVjdCgKICAgICAvLyByZWZsZWN0IHRoaXMuCiAgICAgaWYgKCFpbmRleCkgewogICAgICAgICB2
YWx1ZVJlY292ZXJpZXMgPSBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSwgbnVtVmFyaWFibGVzKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2YWx1ZVJlY292ZXJp
ZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3Rh
Y2soCisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHZhbHVlUmVjb3Zlcmllcy5vcGVy
YW5kRm9ySW5kZXgoaSkpLCBEYXRhRm9ybWF0SlMpOworICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC0xODEsNyArMTgzLDcgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3Ry
ZWFtOjpyZWNvbnN0cnVjdCgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3BlcmFuZFNv
dXJjZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVmFsdWVTb3VyY2UmIHNvdXJjZSA9IG9wZXJh
bmRTb3VyY2VzW2ldOwogICAgICAgICBpZiAoc291cmNlLmlzVHJpdmlhbGx5UmVjb3ZlcmFibGUo
KSkgewotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gc291cmNlLnZhbHVlUmVjb3Zl
cnkoKTsKKyAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IHNvdXJjZS52YWx1ZVJlY292
ZXJ5KG9wZXJhbmRTb3VyY2VzLm9wZXJhbmRGb3JJbmRleChpKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI3OCwxMyArMjgwLDYgQEAgdm9pZCBWYXJp
YWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ld
ID0KICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjayhzdGF0aWNf
Y2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGluZm8udS52aXJ0dWFsUmVnKSwgaW5mby5mb3JtYXQpOwog
ICAgIH0KLSAgICAKLSAgICAvLyBTdGVwIDQ6IE1ha2Ugc3VyZSB0aGF0IGZvciBsb2NhbHMgdGhh
dCBjb2luY2lkZSB3aXRoIHRydWUgY2FsbCBmcmFtZSBoZWFkZXJzLCB0aGUgZXhpdCBjb21waWxl
ciBrbm93cwotICAgIC8vIHRoYXQgdGhvc2UgdmFsdWVzIGRvbid0IGhhdmUgdG8gYmUgcmVjb3Zl
cmVkLiBTaWduYWwgdGhpcyBieSB1c2luZyBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNr
KCkKLSAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IGktLTspCi0gICAgICAgICAg
ICB2YWx1ZVJlY292ZXJpZXMuc2V0TG9jYWwoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSAtIGkgLSAxLCBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5
SW5KU1N0YWNrKCkpOwotICAgIH0KIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUwLDYgKzI5NTAsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihl
ZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Cisg
ICAgICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4o
ZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMxMzIsNiArMzEzNSwxNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFs
dWUpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UgZWRn
ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdl
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIEludDUyS2luZCBraW5k
OworICAgICAgICBsb3dXaGljaGV2ZXJJbnQ1MihlZGdlLCBraW5kKTsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIGxvd0Jv
b2xlYW4oZWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXIuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25zdDsKICAgICAgICAg
aW50MzJfdCB1bmJveGVkSW50MzIoKSBjb25zdDsKICAgICAgICAgaW50NjRfdCB1bmJveGVkSW50
NTIoKSBjb25zdDsKKyAgICAgICAgaW50NjRfdCB1bmJveGVkU3RyaWN0SW50NTIoKSBjb25zdDsK
ICAgICAgICAgYm9vbCB1bmJveGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3VibGUgdW5i
b3hlZERvdWJsZSgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7
CkBAIC0xNzcsNiArMTc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdS5p
bnRlZ2VyID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVkU3RyaWN0SW50NTIoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIHUuaW50ZWdlcjsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgUmVnaXN0ZXI6OnVuYm94ZWRCb29sZWFuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiAhIXBheWxvYWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDUzICszNTYsOSBA
QCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGCiAgICAgbV9yZWdpc3Rl
ckFycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZUJhcnJpZXI8VW5rbm93bj5bXT4obV9udW1B
cmd1bWVudHMpOwogICAgIG1fcmVnaXN0ZXJzID0gbV9yZWdpc3RlckFycmF5LmdldCgpIC0gQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoMSkgLSAxOwogCi0gICAgdGVhck9mZkZvcklubGluZUNhbGxGcmFt
ZSgKLSAgICAgICAgY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCwKLSAgICAgICAgaW5saW5lQ2FsbEZyYW1lKTsKLX0K
LQotdm9pZCBBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUoVk0mIHZtLCBSZWdp
c3RlciogcmVnaXN0ZXJzLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLXsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAgICAg
VmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1tpICsg
MV07Ci0gICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2UnbGwgc3VwcG9ydCBkaXNwbGFjZWQgcmVj
b3ZlcmllcyAoaW5kaWNhdGluZyB0aGF0IHRoZQotICAgICAgICAvLyBhcmd1bWVudCB3YXMgZmx1
c2hlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiksIGJ1dCBmb3Igbm93IHdlIGRvbid0IGRvCi0g
ICAgICAgIC8vIHRoYXQgc28gdGhpcyBjb2RlIHdpbGwgZmFpbCBpZiB0aGF0IHdlcmUgdG8gaGFw
cGVuLiBPbiB0aGUgb3RoZXIgaGFuZCwKLSAgICAgICAgLy8gaXQncyBtdWNoIGxlc3MgbGlrZWx5
IHRoYXQgd2UnbGwgc3VwcG9ydCBpbi1yZWdpc3RlciByZWNvdmVyaWVzIHNpbmNlCi0gICAgICAg
IC8vIHRoaXMgY29kZSBkb2VzIG5vdCAoZWFzaWx5KSBoYXZlIGFjY2VzcyB0byByZWdpc3RlcnMu
Ci0gICAgICAgIEpTVmFsdWUgdmFsdWU7Ci0gICAgICAgIFJlZ2lzdGVyKiBsb2NhdGlvbiA9ICZy
ZWdpc3RlcnNbQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKV07Ci0gICAgICAgIHN3aXRjaCAo
cmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgot
ICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+anNWYWx1ZSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAg
ICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUy
OgotICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDUyKCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZENlbGw6Ci0gICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZEJvb2xlYW46Ci0gICAgICAgICAgICB2YWx1ZSA9IGpzQm9vbGVhbihsb2NhdGlvbi0+dW5ib3hl
ZEJvb2xlYW4oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkRG91YmxlOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICB2
YWx1ZSA9IGpzTnVtYmVyKCpiaXR3aXNlX2Nhc3Q8ZG91YmxlKj4obG9jYXRpb24pKTsKLSNlbHNl
Ci0gICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT5qc1ZhbHVlKCk7Ci0jZW5kaWYKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbnN0YW50OgotICAgICAgICAgICAgdmFsdWUg
PSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5U2V0QXJndW1lbnQodm0sIGksIHZhbHVl
KTsKKyAgICAgICAgdHJ5U2V0QXJndW1lbnQoY2FsbEZyYW1lLT52bSgpLCBpLCByZWNvdmVyeS5y
ZWNvdmVyKGNhbGxGcmFtZSkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2
Myw2IEBAIHByaXZhdGU6CiAgICAgQXJndW1lbnRzKENhbGxGcmFtZSopOwogICAgIEFyZ3VtZW50
cyhDYWxsRnJhbWUqLCBOb1BhcmFtZXRlcnNUeXBlKTsKICAgICAgICAgCi0gICAgdm9pZCB0ZWFy
T2ZmRm9ySW5saW5lQ2FsbEZyYW1lKFZNJiB2bSwgUmVnaXN0ZXIqLCBJbmxpbmVDYWxsRnJhbWUq
KTsKLQogcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAo=
</data>
<flag name="review"
          id="235314"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
    <flag name="commit-queue"
          id="235320"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213028</attachid>
            <date>2013-09-30 12:52:46 -0700</date>
            <delta_ts>2013-09-30 13:14:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52845</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBA
QAorMjAxMy0wOS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEdldCByaWQgb2YgdGhlIEFscmVhZHlJbkpTU3RhY2sgcmVjb3ZlcmllcyBzaW5jZSB0aGV5IGFy
ZSB0b3RhbGx5IHJlZHVuZGFudCB3aXRoIHRoZSBEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcmll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBIYWhuZW5iZXJnLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBtb3N0bHkganVzdCBraWxscyBhIGJ1bmNoIG9mIGNvZGUuCisgICAgICAgIAorICAg
ICAgICBCdXQgaW5jaWRlbnRhbHkgd2hpbGUga2lsbGluZyB0aGF0IGNvZGUsIEkgdW5jb3ZlcmVk
IGEgYnVnIGluIG91ciBGVEwgT1NSIGVudHJ5cG9pbnQKKyAgICAgICAgY3JlYXRpb24gcGhhc2Uu
IFRoZSBwaGFzZSBpbnNlcnRzIGEgc2VxdWVuY2Ugb2YgU2V0TG9jYWwoRXh0cmFjdE9TUkVudHJ5
TG9jYWwpIG5vZGVzLgorICAgICAgICBJZiB3ZSBob2lzdCBzb21lIHR5cGUgY2hlY2sgaW50byB0
aGUgbG9jYWwsIHRoZW4gd2UgbWlnaHQgaW5qZWN0IGEgY29udmVyc2lvbiBub2RlCisgICAgICAg
IGJldHdlZW4gdGhlIEV4dHJhY3RPU1JFbnRyeUxvY2FsIGFuZCB0aGUgU2V0TG9jYWwgLSBmb3Ig
ZXhhbXBsZSB3ZSBtaWdodCBwdXQgaW4gYQorICAgICAgICBJbnQzMlRvRG91YmxlIG5vZGUuIEJ1
dCBjdXJyZW50bHkgdGhlIEZpeHVwUGhhc2Ugd2lsbCBtYWtlIGFsbCBjb252ZXJzaW9uIG5vZGVz
IHBsYWNlZAorICAgICAgICBvbiBhbiBlZGdlIG9mIGEgU2V0TG9jYWwgdXNlIGZvcndhcmQgZXhp
dC4gVGhpcyB0aGVuIGNvbmZ1c2VzIHRoZSBPU1IgZXhpdCBtYWNoaW5lcnkuCisgICAgICAgIFdo
ZW4gT1NSIGV4aXQgc2VlcyBhIGZvcndhcmQgZXhpdCwgaXQgdHJpZXMgdG8gInJvbGwgZm9yd2Fy
ZCIgZXhlY3V0aW9uIGZyb20gdGhlIGV4aXRpbmcKKyAgICAgICAgbm9kZSB0byB0aGUgZmlyc3Qg
bm9kZSB0aGF0IGhhcyBhIGRpZmZlcmVudCBDb2RlT3JpZ2luLiBUaGlzIG9ubHkgd29ya3MgaWYg
dGhlIG5vZGVzCisgICAgICAgIGFmdGVyIHRoZSBmb3J3YXJkIGV4aXQgYXJlIE1vdkhpbnRzIG9y
IG90aGVyIHRuaW5ncyB0aGF0IHRoZSBPU1IgZXhpdCBjb21waWxlciBjYW4KKyAgICAgICAgZm9y
d2FyZC1leGVjdXRlLiBCdXQgaGVyZSwgaXQgd2lsbCBzZWUgYSBidW5jaCBvZiBTZXRMb2NhbCBh
bmQgRXh0cmFjdE9TUkVudHJ5TG9jYWwKKyAgICAgICAgbm9kZXMgZm9yIHRoZSBzYW1lIGJ5dGVj
b2RlIGluZGV4LiBUd28gcG9zc2libGUgc29sdXRpb25zIGV4aXN0LiBXZSBjb3VsZCB0ZWFjaCB0
aGUKKyAgICAgICAgZm9yd2FyZC1leGVjdXRpb24gbG9naWMgaG93IHRvIGRlYWwgd2l0aCBtdWx0
aXBsZSBTZXRMb2NhbHMgYW5kIEV4dHJhY3RPU1JFbnRyeUxvY2Fscy4KKyAgICAgICAgVGhpcyB3
b3VsZCBiZSBhIGxvdCBvZiBjb21wbGV4aXR5OyByaWdodCBub3cgaXQganVzdCBuZWVkcyB0byBk
ZWFsIHdpdGggZXhhY3RseSBvbmUKKyAgICAgICAgU2V0TG9jYWwtbGlrZSBvcGVyYXRpb24uIFRo
ZSBhbHRlcm5hdGl2ZSBpcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY29udmVyc2lvbiBub2RlIHRo
YXQKKyAgICAgICAgd2UgaW5qZWN0IGVuZHMgdXAgZXhpdGluZyAqYmFja3dhcmQqIHJhdGhlciB0
aGFuIGZvcndhcmQuCisgICAgICAgIAorICAgICAgICBCdXQgbWFraW5nIHRoZSBjb252ZXJzaW9u
IG5vZGVzIGV4aXQgYmFja3dhcmQgaXMgc29tZXdoYXQgdHJpY2t5LiBCZWZvcmUgdGhpcyBwYXRj
aCwKKyAgICAgICAgY29udmVyc2lvbiBub2RlcyBhbHdheXMgZXhpdCBmb3J3YXJkIGZvciBTZXRM
b2NhbHMgYW5kIGJhY2t3YXJkcyBvdGhlcndpc2UuIEl0IHR1cm5zIG91dAorICAgICAgICB0aGF0
IHRoZSBzb2x1dGlvbiBpcyB0byByYXRpb25hbGl6ZSBob3cgd2UgY2hvb3NlIHRoZSBzcGVjdWxh
dGlvbiBkaXJlY2l0b24gZm9yIGEKKyAgICAgICAgY29udmVyc2lvbiBub2RlLiBUaGUgY29udmVy
c2lvbiBub2RlJ3Mgc3BlY3VsYXRpb24gZGlyZWN0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0
aGUKKyAgICAgICAgc3BlY3VsYXRpb24gZGlyZWN0aW9uIG9mIHRoZSBub2RlIGZvciB3aGljaCBp
dCBpcyBkb2luZyBhIGNvbnZlcnNpb24uIFNpbmNlIFNldExvY2FsJ3MKKyAgICAgICAgYWxyZWFk
eSBleGl0IGZvcndhcmQgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgcHJlc2VydmVzIG91ciBwcmV2
aW91cyBiZWhhdmlvci4gQnV0IGl0CisgICAgICAgIGFsc28gYWxsb3dzIHRoZSBPU1IgZW50cnlw
b2ludCBjcmVhdGlvbiBwaGFzZSB0byBtYWtlIGl0cyBTZXRMb2NhbHMgZXhpdCBiYWNrd2FyZAor
ICAgICAgICBpbnN0ZWFkLgorICAgICAgICAKKyAgICAgICAgT2YgY291cnNlLCBpZiB0aGUgU2V0
TG9jYWwoRXh0cmFjdE9TUkVudHJ5TG9jYWwpIHNlcXVlbmNlcyBleGl0IGJhY2t3YXJkLCB0aGVu
IHdlIG5lZWQKKyAgICAgICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIE9TUiBleGl0IG1hY2hpbmUg
a25vd3MgdGhhdCB0aGUgbG9jYWwgdmFyaWFibGVzIGFyZSBpbmRlZWQgbGl2ZS4KKyAgICAgICAg
Q29uc2lkZXIgdGhhdCBpZiB3ZSBoYXZlOgorICAgICAgICAKKyAgICAgICAgICAgIGE6IEV4dHJh
Y3RPU1JFbnRyeUxvY2FsKGxvYzEpCisgICAgICAgICAgICBiOiBTZXRMb2NhbChAYSwgbG9jMSkK
KyAgICAgICAgICAgIGM6IEV4dHJhY3RPU1JlbnRyeUxvY2FsKGxvYzIpCisgICAgICAgICAgICBk
OiBTZXRMb2NhbChAYywgbG9jMikKKyAgICAgICAgCisgICAgICAgIFdpdGhvdXQgYWRkaXRpb25h
bCBtYWdpYywgdGhlIGV4aXQgYXQgQGIgd2lsbCB0aGluayB0aGF0IGxvYzIgaXMgZGVhZCBhbmQg
dGhlIE9TUiBleGl0CisgICAgICAgIGNvbXBpbGVyIHdpbGwgY2xvYmJlciBsb2MyIHdpdGggVW5k
ZWZpbmVkLiBTbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFjdHVhbGx5CisgICAgICAg
IGVtaXQgY29kZSBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgIGE6IEV4dHJhY3RPU1JFbnRy
eUxvY2FsKGxvYzEpCisgICAgICAgICAgICBiOiBFeHRyYWN0T1NSRW50cnlMb2NhbChsb2MyKQor
ICAgICAgICAgICAgYzogU2V0TG9jYWwoQGEsIGxvYzEpCisgICAgICAgICAgICBkOiBTZXRMb2Nh
bChAYiwgbG9jMikKKyAgICAgICAgICAgIGU6IFNldExvY2FsKEBhLCBsb2MxKQorICAgICAgICAg
ICAgZjogU2V0TG9jYWwoQGIsIGxvYzIpCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3Zl
cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6cmVjb3Zlcik6Cisg
ICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAoSlND
OjpWYWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5
Lmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4RWRnZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvZGU6OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNwZWN1bGF0aW9uRGlyZWN0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRTcGVjdWxhdGlvbkRpcmVjdGlvbik6CisgICAg
ICAgICogZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAgICogZGZnL0RGR1ZhbHVlU291cmNl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OnZhbHVlUmVjb3ZlcnkpOgorICAg
ICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3Bl
Y3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTWFj
aGluZUludCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXI6OnVuYm94ZWRTdHJpY3RJbnQ1Mik6CisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmYpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisKIDIwMTMtMDktMzAgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgVk0gaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVj
dCB0byBSZWdFeHAgY29uc3RydWN0b3IuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAogICAgIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorICAgIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCiAgICAg
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKIAogICAgIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIFwKICAg
ICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAogICAgIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcCBcCisgICAgYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogICAgIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1NjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5j
cHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3RydWN0dXJlU3R1
YkluZm8uY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlu
a2VkQ29kZUJsb2NrLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxWYWx1ZVJlY292ZXJ5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxXYXRjaHBvaW50LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29tcGlsZXJcQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb21waWxlclxOb2Rlc0NvZGVnZW4uY3BwIiAvPg0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDggKzExOCw2IEBACiAJCTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBD
Q2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0RTU0MzE3RUE5RjU5
MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNEU1M0UxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0RTU0NDE3RUE5
RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1M0YxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjI0RTU1NTE3
RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAv
KiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwICovOyB9OwotCQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIy
MTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZy
YW1lU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NDUxN0VFMjc0OTAw
QUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwICovOyB9OwogCQkwRjI0RTU0RDE3RUUyNzQ5MDBB
QkIyMTcgLyogSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1NDYxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMu
aCAqLzsgfTsKIAkJMEYyNEU1NEUxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbldyYXBw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0
RTU0NzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9uV3JhcHBlcnMuaCAqLzsgfTsKQEAg
LTEyNyw2ICsxMjUsOSBAQAogCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0
OTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgKi87IH07CiAJCTBGMjRFNTUxMTdFRTI3
NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjI0RTU0QTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oICovOyB9
OwogCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0
QjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi87IH07CisJ
CTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTMxN0YwQjcx
QzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi87IH07CisJCTBGMjRFNTU2MTdG
MEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJ
bmxpbmVDYWxsRnJhbWVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjI0RTU1ODE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1
NzE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgKi87IH07CiAJCTBGMjU2QzM2
MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNTZD
MzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBODE3QjZCNTNE
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyog
R0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMjIsOCArMTMyMyw2IEBACiAJCTBGMjRFNTNEMTdFQTlGNTkwMEFC
QjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTNFMTdF
QTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1M0YxN0VB
OUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjI0RTU1MzE3RjBC
NzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJh
bWVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1l
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTQ1MTdFRTI3NDkwMEFC
QjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVE9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjI0RTU0NjE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRPcGVyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjRFNTQ3MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25XcmFwcGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRPcGVyYXRpb25XcmFwcGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzMSw2ICsxMzMwLDkgQEAKIAkJ
MEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVwYXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGF0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NTMxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU1NzE3Rjc0RURCMDBBQkIyMTcg
LyogVmFsdWVSZWNvdmVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBWYWx1ZVJlY292ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNTZD
MzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2
QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDSW5jb21pbmdSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkI2NkE5MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzY0LDggKzM3NjYsNiBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJh
bWVTZXQuY3BwICovLAotCQkJCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxs
RnJhbWVTZXQuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKIAkJCQkwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5N0Mg
LyogQXJyYXlQcm9maWxlLmNwcCAqLywKQEAgLTM4MDAsNiArMzgwMCw4IEBACiAJCQkJMEY5MzMy
OTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk2
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJD
RjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEYyNEU1NTMxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8sCisJCQkJMEYyNEU1NTQxN0YwQjcx
QzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICovLAogCQkJCTk2OUEwNzkzMEVEMUQz
QUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oICovLAogCQkJCUJDRkQ4QzkwMEVFQjJFRTcwMDI4
Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuaCAqLywKQEAgLTM4MzgsNiArMzg0MCw3IEBACiAJCQkJQTc5RTc4MUUxNUVF
Q0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLywKIAkJCQlBNzlFNzgxRjE1
RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLywKIAkJCQkwRjk2M0IzNjEz
RkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCisJCQkJMEYyNEU1NTcxN0Y3NEVE
QjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAogCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmNwcCAqLywKQEAgLTUyNzYsNiArNTI3OSw3IEBACiAJCQkJMTRFODRG
QTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
RTVDMTkxNzI0QUYzRDAwNUM1NzRGIC8qIFdlYktpdExMVk1MaWJyYXJ5QW5jaG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAv
KiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIw
MEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZE
OUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlT3JpZ2luLmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgc3Ry
dWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxl
ZTsgLy8gVGhpcyBtYXkgYmUgbnVsbCwgaW5kaWNhdGluZyB0aGF0IHRoaXMgaXMgYSBjbG9zdXJl
IGNhbGwgYW5kIHRoYXQgdGhlIEpTRnVuY3Rpb24gYW5kIEpTU2NvcGUgYXJlIGFscmVhZHkgb24g
dGhlIHN0YWNrLgogICAgIENvZGVPcmlnaW4gY2FsbGVyOwogICAgIEJpdFZlY3RvciBjYXB0dXJl
ZFZhcnM7IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2FsbCBmcmFtZSdzIHZhcmlhYmxlIG51
bWJlcmluZy4KLSAgICBzaWduZWQgc3RhY2tPZmZzZXQgOiAzMTsKKyAgICBpbnQgc3RhY2tPZmZz
ZXQgOiAzMTsKICAgICBib29sIGlzQ2FsbCA6IDE7CiAgICAgCiAgICAgLy8gVGhlcmUgaXMgcmVh
bGx5IG5vIGdvb2Qgbm90aW9uIG9mIGEgImRlZmF1bHQiIHNldCBvZiB2YWx1ZXMgZm9yCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVj
b3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCisKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitKU1ZhbHVlIFZhbHVlUmVjb3Zlcnk6OnJlY292ZXIoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKKyAgICBj
YXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnIodmlydHVhbFJl
Z2lzdGVyKCkub2Zmc2V0KCkpLmpzVmFsdWUoKTsKKyAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIo
KS5vZmZzZXQoKSkudW5ib3hlZEludDMyKCkpOworICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpT
U3RhY2s6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLT5yKHZpcnR1YWxSZWdpc3Rlcigp
Lm9mZnNldCgpKS51bmJveGVkSW50NTIoKSk7CisgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMtPnIodmlydHVhbFJlZ2lz
dGVyKCkub2Zmc2V0KCkpLnVuYm94ZWRTdHJpY3RJbnQ1MigpKTsKKyAgICBjYXNlIERvdWJsZURp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMtPnIodmlydHVh
bFJlZ2lzdGVyKCkub2Zmc2V0KCkpLnVuYm94ZWREb3VibGUoKSk7CisgICAgY2FzZSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrOgorICAgICAgICByZXR1cm4gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIo
KS5vZmZzZXQoKSkudW5ib3hlZENlbGwoKTsKKyAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnIodmlydHVh
bFJlZ2lzdGVyKCkub2Zmc2V0KCkpLmpzVmFsdWUoKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkudW5ib3hlZEJvb2xl
YW4oKSk7CisjZW5kaWYKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICByZXR1cm4gY29uc3Rh
bnQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH0KK30KKwordm9pZCBWYWx1ZVJlY292
ZXJ5OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0
KSBjb25zdAoreworICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKKyAgICBjYXNlIEluR1BSOgor
ICAgICAgICBvdXQucHJpbnQoZ3ByKCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmJv
eGVkSW50MzJJbkdQUjoKKyAgICAgICAgb3V0LnByaW50KCJpbnQzMigiLCBncHIoKSwgIikiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAgIG91
dC5wcmludCgiaW50NTIoIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBvdXQucHJpbnQoInN0cmljdEludDUy
KCIsIGdwcigpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmJveGVkQm9vbGVh
bkluR1BSOgorICAgICAgICBvdXQucHJpbnQoImJvb2woIiwgZ3ByKCksICIpIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgIG91dC5wcmludCgi
Y2VsbCgiLCBncHIoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVUludDMySW5H
UFI6CisgICAgICAgIG91dC5wcmludCgidWludDMyKCIsIGdwcigpLCAiKSIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgb3V0LnByaW50KGZwcigpKTsKKyAgICAg
ICAgcmV0dXJuOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY2FzZSBJblBhaXI6CisgICAg
ICAgIG91dC5wcmludCgicGFpcigiLCB0YWdHUFIoKSwgIiwgIiwgcGF5bG9hZEdQUigpLCAiKSIp
OworICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgb3V0LnByaW50ZigiKiVkIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgb3V0LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgIG91dC5wcmludGYoIippbnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVy
KCkub2Zmc2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkub2Zmc2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnRmKCIqY2VsbCglZCkiLCB2aXJ0dWFsUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJvb2xlYW5EaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludGYoIipib29sKCVkKSIsIHZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJndW1lbnRzVGhh
dFdlcmVOb3RDcmVhdGVkOgorICAgICAgICBvdXQucHJpbnRmKCJhcmd1bWVudHMiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgIG91dC5wcmludCgiWyIsIGlu
Q29udGV4dChjb25zdGFudCgpLCBjb250ZXh0KSwgIl0iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgRG9udEtub3c6CisgICAgICAgIG91dC5wcmludGYoIiEiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZh
bHVlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBkdW1wSW5D
b250ZXh0KG91dCwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE1
NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyLDE0ICs0Miw2IEBAIHN0cnVjdCBEdW1wQ29udGV4dDsKIC8vIERl
c2NyaWJlcyBob3cgdG8gcmVjb3ZlciBhIGdpdmVuIGJ5dGVjb2RlIHZpcnR1YWwgcmVnaXN0ZXIg
YXQgYSBnaXZlbgogLy8gY29kZSBwb2ludC4KIGVudW0gVmFsdWVSZWNvdmVyeVRlY2huaXF1ZSB7
Ci0gICAgLy8gSXQncyBhbHJlYWR5IGluIHRoZSBzdGFjayBhdCB0aGUgcmlnaHQgbG9jYXRpb24u
Ci0gICAgQWxyZWFkeUluSlNTdGFjaywKLSAgICAvLyBJdCdzIGFscmVhZHkgaW4gdGhlIHN0YWNr
IGJ1dCB1bmJveGVkLgotICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMiwKLSAgICBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NTIsCi0gICAgQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZENlbGwsCi0gICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4sCi0gICAgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEgcmVnaXN0ZXIu
CiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCkBAIC04OSw0OCArODEsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVjaG5pcXVlICE9IERv
bnRLbm93OyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsg
fQogICAgIAotICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2soKQotICAg
IHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2hu
aXF1ZSA9IEFscmVhZHlJbkpTU3RhY2s7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
ICAgIAotICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJ
bnQzMigpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBh
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NTIoKQotICAgIHsKLSAgICAgICAgVmFsdWVSZWNv
dmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ1MjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0g
ICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKQot
ICAgIHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3Rl
Y2huaXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkQm9vbGVhbigpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZEJvb2xlYW47Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHN0
YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGUoKQotICAg
IHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2hu
aXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotICAgIAogICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGluR1BSKE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGdwciwgRGF0YUZvcm1hdCBkYXRhRm9ybWF0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGRhdGFGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpOwpAQCAtMjU2LDIx
ICsyMDYsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0Fs
cmVhZHlJbkpTU3RhY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoICh0ZWNobmlxdWUo
KSkgewotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2Vs
bDoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3By
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVk
Qm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVl
ID09IFVuYm94ZWRJbnQ1MkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRTdHJpY3RJbnQ1
MkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRDZWxsSW5HUFIpOwpAQCAtMzA5LDk1ICsy
NDQsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fc291cmNl
LmNvbnN0YW50KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3Ry
ZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAotICAgIHsKLSAgICAgICAgc3dp
dGNoICh0ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCItIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICAgICAgb3V0LnByaW50
ZigiKGludDMyKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ1Miki
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQ2VsbDoKLSAgICAgICAgICAgIG91dC5wcmludGYoIihjZWxsKSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFu
OgotICAgICAgICAgICAgb3V0LnByaW50ZigiKGJvb2wpIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIihkb3VibGUpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoZ3ByKCkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICAgICAgb3V0
LnByaW50KCJpbnQzMigiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludCgiaW50NTIo
IiwgZ3ByKCksICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hl
ZFN0cmljdEludDUySW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoInN0cmljdEludDUyKCIs
IGdwcigpLCAiKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94ZWRC
b29sZWFuSW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoImJvb2woIiwgZ3ByKCksICIpIik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAg
ICAgICAgICAgIG91dC5wcmludCgiY2VsbCgiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludCgi
dWludDMyKCIsIGdwcigpLCAiKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNl
IEluRlBSOgotICAgICAgICAgICAgb3V0LnByaW50KGZwcigpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAg
ICAgIG91dC5wcmludCgicGFpcigiLCB0YWdHUFIoKSwgIiwgIiwgcGF5bG9hZEdQUigpLCAiKSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKiVkIiwgdmlydHVhbFJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEludDMyRGlzcGxh
Y2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1
YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2Fz
ZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIippbnQ1
MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIENl
bGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIqY2VsbCglZCki
LCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIipib29sKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCJhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY2FzZSBDb25zdGFudDoKLSAgICAgICAgICAgIG91dC5wcmludCgiWyIsIGluQ29udGV4
dChjb25zdGFudCgpLCBjb250ZXh0KSwgIl0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBEb250S25vdzoKLSAgICAgICAgICAgIG91dC5wcmludGYoIiEiKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKLSAgICB9CisgICAgSlNWYWx1
ZSByZWNvdmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIAorICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3Q7CisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZhbHVlUmVj
b3ZlcnlUZWNobmlxdWUgbV90ZWNobmlxdWU7CiAgICAgdW5pb24gewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSlNWYWx1ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCksIEZvcndhcmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0MDcsMTEgKzE0MDcsMTEgQEAgcHJpdmF0ZToKICAgICAv
LyBlZGdlLCB5b3UgZWl0aGVyIGNhbGwgZml4RWRnZSgpIG9yIHBlcmZvcm0gdGhlIGVxdWl2YWxl
bnQgZnVuY3Rpb25hbGl0eQogICAgIC8vIHlvdXJzZWxmLiBPYnZpb3VzbHksIHlvdSBzaG91bGQg
aGF2ZSBhIHJlYWxseSBnb29kIHJlYXNvbiBpZiB5b3UgZG8gdGhlIGxhdHRlci4KICAgICB0ZW1w
bGF0ZTxVc2VLaW5kIHVzZUtpbmQ+Ci0gICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1
bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCisgICAgdm9p
ZCBmaXhFZGdlKEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBpZiAoaXNEb3VibGUodXNlS2lu
ZCkpIHsKICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRo
bWV0aWMoKSkgewotICAgICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2Us
IHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJs
ZU5vZGUoZWRnZSwgdXNlS2luZCwgbV9jdXJyZW50Tm9kZS0+c3BlY3VsYXRpb25EaXJlY3Rpb24o
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC0xNDI0LDYgKzE0MjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE5vZGUqIHJl
c3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgSW50NTJUb0RvdWJsZSwKICAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwg
TnVtYmVyVXNlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5zZXRTcGVjdWxhdGlvbkRpcmVj
dGlvbihtX2N1cnJlbnROb2RlLT5zcGVjdWxhdGlvbkRpcmVjdGlvbigpKTsKICAgICAgICAgICAg
ICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTE0NzcsNiArMTQ3OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICByZXN1bHQtPnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKG1f
Y3VycmVudE5vZGUtPnNwZWN1bGF0aW9uRGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgZWRnZSA9
IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAx
NTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MiwzMSArOTIsNyBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZhbHVl
UmVjb3ZlcnkgcmVjb3ZlcnkgPSByZWNvdmVyaWVzW2ldOwotICAgICAgICBKU1ZhbHVlIHZhbHVl
OwotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFjazoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
Q2VsbDoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAg
ICAgICAgICAgIHZhbHVlID0gZXhlYy0+cihvcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6Ci0g
ICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDMy
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDUyOgotICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJh
bmQpLnVuYm94ZWRJbnQ1MigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6Ci0gICAgICAgICAgICB2YWx1ZSA9IGpzRG91
YmxlTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZERvdWJsZSgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENvbnN0YW50OgotICAgICAgICAgICAgdmFsdWUgPSByZWNv
dmVyeS5jb25zdGFudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0W2ldID0gdmFsdWU7CisgICAgICAgIHJlc3Vs
dFtpXSA9IHJlY292ZXJpZXNbaV0ucmVjb3ZlcihleGVjKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwyNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJGbGFncyh+ZmxhZ3Mp
OwogICAgIH0KICAgICAKKyAgICBTcGVjdWxhdGlvbkRpcmVjdGlvbiBzcGVjdWxhdGlvbkRpcmVj
dGlvbigpCisgICAgeworICAgICAgICBpZiAoZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQpCisg
ICAgICAgICAgICByZXR1cm4gRm9yd2FyZFNwZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQmFj
a3dhcmRTcGVjdWxhdGlvbjsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRTcGVjdWxhdGlvbkRp
cmVjdGlvbihTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCisgICAgeworICAgICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgeworICAgICAgICBjYXNlIEZvcndhcmRTcGVjdWxhdGlvbjoKKyAg
ICAgICAgICAgIG1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgQmFja3dhcmRTcGVjdWxhdGlvbjoKKyAgICAgICAgICAgIGNsZWFy
RmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCBzZXRPcEFuZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1f
b3AgPSBvcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTYgKzk0LDM3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQorICAg
ICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
OwogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQg
PSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAo
IXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBwcmV2aW91c0hlYWQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisg
ICAgICAgICAgICBsb2NhbHNbbG9jYWxdID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAg
ICAgICAgICBtX2dyYXBoLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBFeHRyYWN0T1NSRW50cnlM
b2NhbCwgY29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUtPmxvY2Fs
KCkub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIE1vdkhpbnQuIFdlIGNhbid0IHVzZSBNb3ZI
aW50J3MgZGlyZWN0bHkgYXQgdGhpcyBzdGFnZSBvZgorICAgICAgICAgICAgLy8gY29tcGlsYXRp
b24sIHNvIHdlIGNvb2sgb25lIHVwIGJ5IGNyZWF0aW5nIGEgbmV3IFZhcmlhYmxlQWNjZXNzRGF0
YQorICAgICAgICAgICAgLy8gdGhhdCBpc24ndCB1bmlmaWVkIHdpdGggYW55IG9mIHRoZSBvdGhl
cnMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoaXMKKyAgICAgICAgICAgIC8vIFNldExvY2FsIHdpbGwg
dHVybiBpbnRvIGEgTW92SGludCBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgdHlwZSBjaGVja3MuCisg
ICAgICAgICAgICBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGUtPmxvY2FsKCksIHZhcmlhYmxlLT5p
c0NhcHR1cmVkKCkpKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFi
bGUgPSAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5sYXN0KCk7CisgICAgICAgICAgICBO
b2RlKiBzZXRMb2NhbCA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8obmV3VmFyaWFibGUp
LAorICAgICAgICAgICAgICAgIEVkZ2UobG9jYWxzW2xvY2FsXSkpOworICAgICAgICAgICAgc2V0
TG9jYWwtPnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKEJhY2t3YXJkU3BlY3VsYXRpb24pOworICAg
ICAgICB9CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9u
dW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKKyAgICAgICAgICAgIE5vZGUqIHByZXZpb3Vz
SGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAg
IGlmICghcHJldmlvdXNIZWFkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IHByZXZpb3VzSGVhZC0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbG9jYWxzW2xvY2FsXTsKKyAg
ICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAg
ICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2
YXJpYWJsZSksIEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgc2V0TG9jYWwtPnNldFNwZWN1bGF0
aW9uRGlyZWN0aW9uKEJhY2t3YXJkU3BlY3VsYXRpb24pOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBuZXdSb290LT5hcHBlbmROb2RlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1
NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFs
dWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIGludCBvcGVy
YW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4KTsKICAgICAgICAgCiAgICAgICAg
IHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6CkBAIC0yNTAsMjMgKzI0OSw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21w
aWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRJbnQzMjoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2Vs
bDoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAgICAg
ICAgICAgIG1faml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRh
Z0ZvcihvcGVyYW5kKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKG9wZXJhbmQpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0g
ICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2Ny
YXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjk5LDcgKzI4MSw2IEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
MzI6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJE
aXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkBAIC0zMTMsNyAr
Mjk0LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRDZWxsOgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNh
c2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0LmxvYWQzMigKQEAg
LTMyNyw3ICszMDcsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQ
UjoKICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAg
bV9qaXQubG9hZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsMTEgKzE1NiwxMSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29u
c3QgCiAgICAgLy8gZGVmaW5pdGVseSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRj
aCBidWZmZXIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGhhZAogICAgIC8vIG9yaWdpbmFsbHkg
YmVlbiBpbiBhIHJlZ2lzdGVyIG9yIHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxl
ICJ3aGVyZSB3YXMKICAgICAvLyB0aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVz
ZW50ZWQiLiBDb25zaWRlciB0aGF0IHRoZQotICAgIC8vIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRJbnQzMiByZWNvdmVyeTogaXQgdGVsbHMgdXMgdGhhdCB0aGUgdmFsdWUgaXMgaW4gYQotICAg
IC8vIHBhcnRpY3VsYXIgcGxhY2UgYW5kIHRoYXQgdGhhdCBwbGFjZSBob2xkcyBhbiB1bmJveGVk
IGludDMyLiBXZSBoYXZlIHRocmVlIGRpZmZlcmVudAotICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFs
dWUgY291bGQgYmUgKHN0YWNrLCBkaXNwbGFjZWQsIHJlZ2lzdGVyKSBhbmQgYSBidW5jaCBvZiBk
aWZmZXJlbnQKLSAgICAvLyB3YXlzIG9mIHJlcHJlc2VudGluZyBhIHZhbHVlLiBUaGUgbnVtYmVy
IG9mIHJlY292ZXJpZXMgaXMgdGhyZWUgKiBhIGJ1bmNoLiBUaGUgY29kZQotICAgIC8vIGJlbG93
IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHRocmVlICsgYSBidW5jaCBjYXNlcyByYXRoZXIg
dGhhbiB0aHJlZSAqIGEgYnVuY2guCisgICAgLy8gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgcmVj
b3Zlcnk6IGl0IHRlbGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKKyAgICAvLyBwYXJ0aWN1
bGFyIHBsYWNlIGFuZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2Ug
aGF2ZSB0d28gZGlmZmVyZW50CisgICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBjb3VsZCBiZSAo
ZGlzcGxhY2VkLCByZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50CisgICAgLy8gd2F5
cyBvZiByZXByZXNlbnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVyaWVzIGlzIHR3
byAqIGEgYnVuY2guIFRoZSBjb2RlCisgICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3ZSBoYXZlIHRv
IGhhdmUgdHdvICsgYSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBhIGJ1bmNoLgogICAg
IC8vIE9uY2Ugd2UgaGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2ZXIgaXQgd2FzLCB0
aGUgcmVib3hpbmcgaXMgdGhlIHNhbWUKICAgICAvLyByZWdhcmRsZXNzIG9mIGl0cyBsb2NhdGlv
bi4gTGlrZXdpc2UsIGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3YXkgd2UgZ2V0IHRv
CiAgICAgLy8gdGhlIHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJvbSkgaXMgdGhlIHNh
bWUgcmVnYXJkbGVzcyBvZiBpdHMgdHlwZS4gQmVjYXVzZQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKIAogICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAg
IGludCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4KTsKICAgICAgICAg
CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBE
aXNwbGFjZWRJbkpTU3RhY2s6CkBAIC0yNDYsMTMgKzI0NSw2IEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5m
bzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCksIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3NCw3ICsyNjYsNiBAQCB2b2lkIE9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAg
ICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODMsNyArMjc0LDYg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAg
bV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQ1MkluR1BSOgogICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwpAQCAt
MzA3LDcgKzI5Nyw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAK
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CiAgICAgICAg
IGNhc2UgSW5GUFI6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAg
ICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTM5LDEzICsxNTM5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bmxpbmVTdGFydCgKICAgICB1bnNpZ25lZCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBub2RlLT5h
cmd1bWVudFBvc2l0aW9uU3RhcnQoKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2Vs
aW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7Ci0gICAg
ICAgIFZhbHVlUmVjb3ZlcnkgcmVjb3Zlcnk7CisgICAgICAgIFZhbHVlU291cmNlIHZhbHVlU291
cmNlOwogICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpKSkKLSAgICAgICAgICAgIHJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6YWxy
ZWFkeUluSlNTdGFjaygpOworICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShW
YWx1ZUluSlNTdGFjayk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQXJndW1lbnRQb3Np
dGlvbiYgYXJndW1lbnRQb3NpdGlvbiA9CiAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5t
X2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRpb25TdGFydCArIGldOwotICAgICAgICAg
ICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50
UG9zaXRpb24uZmx1c2hGb3JtYXQoKSkgewogICAgICAgICAgICAgY2FzZSBEZWFkRmx1c2g6CiAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgpAQCAtMTU2Nyw4ICsxNTY2LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAogICAgICAgICAgICAgICAgIHZh
bHVlU291cmNlID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjayk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWNvdmVyeSA9IGNvbXB1dGVW
YWx1ZVJlY292ZXJ5Rm9yKHZhbHVlU291cmNlKTsKICAgICAgICAgfQorICAgICAgICBWYWx1ZVJl
Y292ZXJ5IHJlY292ZXJ5ID0gY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IoCisgICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSkub2Zmc2V0KCksIHZhbHVlU291cmNlKTsKICAgICAgICAgLy8gVGhlIHJlY292ZXJ5IHNob3Vs
ZCByZWZlciBlaXRoZXIgdG8gc29tZXRoaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlbgogICAgICAg
ICAvLyBzdG9yZWQgaW50byB0aGUgc3RhY2sgYXQgdGhlIHJpZ2h0IHBsYWNlLCBvciB0byBhIGNv
bnN0YW50LAogICAgICAgICAvLyBzaW5jZSB0aGUgQXJndW1lbnRzIGNvZGUgaXNuJ3Qgc21hcnQg
ZW5vdWdoIHRvIGhhbmRsZSBhbnl0aGluZyBlbHNlLgpAQCAtMTg5OCwxMCArMTg5OCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgQVNTRVJUKG9zckVu
dHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiB9CiAKLVZhbHVlUmVjb3Zlcnkg
U3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGNvbnN0IFZhbHVlU291cmNl
JiB2YWx1ZVNvdXJjZSkKK1ZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWx1
ZVJlY292ZXJ5Rm9yKGludCBvcGVyYW5kLCBjb25zdCBWYWx1ZVNvdXJjZSYgdmFsdWVTb3VyY2Up
CiB7CiAgICAgaWYgKHZhbHVlU291cmNlLmlzSW5KU1N0YWNrKCkpCi0gICAgICAgIHJldHVybiB2
YWx1ZVNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZS52
YWx1ZVJlY292ZXJ5KG9wZXJhbmQpOwogICAgICAgICAKICAgICBBU1NFUlQodmFsdWVTb3VyY2Uu
a2luZCgpID09IEhhdmVOb2RlKTsKICAgICBOb2RlKiBub2RlID0gdmFsdWVTb3VyY2UuaWQoKS5u
b2RlKG1faml0LmdyYXBoKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgyLDEx
ICsyMjgyLDExIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8T3duUHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiwgOD4gbV9zbG93UGF0aEdlbmVyYXRvcnM7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4+IG1fcGxhbnM7CiAgICAgCi0gICAgVmFsdWVSZWNvdmVyeSBjb21wdXRlVmFsdWVSZWNv
dmVyeUZvcihjb25zdCBWYWx1ZVNvdXJjZSYpOworICAgIFZhbHVlUmVjb3ZlcnkgY29tcHV0ZVZh
bHVlUmVjb3ZlcnlGb3IoaW50IG9wZXJhbmQsIGNvbnN0IFZhbHVlU291cmNlJik7CiAKICAgICBW
YWx1ZVJlY292ZXJ5IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGludCBvcGVyYW5kKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKHZhbHVlU291cmNlRm9yT3Bl
cmFuZChWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkpKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVW
YWx1ZVJlY292ZXJ5Rm9yKG9wZXJhbmQsIHZhbHVlU291cmNlRm9yT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIob3BlcmFuZCkpKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwy
OCArMTc4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZhbHVlU291cmNlS2luZFRvRGF0
YUZvcm1hdChraW5kKCkpOwogICAgIH0KICAgICAKLSAgICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVj
b3ZlcnkoKSBjb25zdAorICAgIFZhbHVlUmVjb3ZlcnkgdmFsdWVSZWNvdmVyeShpbnQgb3BlcmFu
ZCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RyaXZpYWxseVJlY292ZXJhYmxlKCkp
OwogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewotICAgICAgICBjYXNlIFZhbHVlSW5KU1N0YWNr
OgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2soKTsK
LSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgotICAgICAgICAgICAg
cmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpOwot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50NTJJbkpTU3RhY2s6Ci0gICAgICAgICAgICBy
ZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0
dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0
dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEb3VibGVJbkpTU3RhY2s6Ci0gICAgICAgICAgICBy
ZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSgpOwot
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU291cmNlSXNEZWFkOgogICAgICAgICAgICAgcmV0
dXJuIFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
CkBAIC0yMDcsOCArMTg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQp
LCBkYXRhRm9ybWF0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShy
ZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
RXZlbnRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDEwIEBAIHZvaWQg
VmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgLy8gcmVmbGVjdCB0aGlzLgog
ICAgIGlmICghaW5kZXgpIHsKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzID0gT3BlcmFuZHM8VmFs
dWVSZWNvdmVyeT4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6YWxyZWFk
eUluSlNTdGFjaygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlUmVjb3Zl
cmllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFs
dWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5KU1N0YWNrKAorICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3Rlcih2YWx1ZVJlY292ZXJpZXMub3BlcmFuZEZvckluZGV4KGkpKSwgRGF0YUZvcm1hdEpT
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTgxLDcgKzE4
Myw3IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG9wZXJhbmRTb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFZhbHVlU291cmNlJiBzb3VyY2UgPSBvcGVyYW5kU291cmNlc1tpXTsKICAgICAgICAgaWYgKHNv
dXJjZS5pc1RyaXZpYWxseVJlY292ZXJhYmxlKCkpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zl
cmllc1tpXSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAgICB2YWx1ZVJlY292
ZXJpZXNbaV0gPSBzb3VyY2UudmFsdWVSZWNvdmVyeShvcGVyYW5kU291cmNlcy5vcGVyYW5kRm9y
SW5kZXgoaSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCkBA
IC0yNzgsMTMgKzI4MCw2IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3Qo
CiAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9CiAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5
OjpkaXNwbGFjZWRJbkpTU3RhY2soc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmZvLnUu
dmlydHVhbFJlZyksIGluZm8uZm9ybWF0KTsKICAgICB9Ci0gICAgCi0gICAgLy8gU3RlcCA0OiBN
YWtlIHN1cmUgdGhhdCBmb3IgbG9jYWxzIHRoYXQgY29pbmNpZGUgd2l0aCB0cnVlIGNhbGwgZnJh
bWUgaGVhZGVycywgdGhlIGV4aXQgY29tcGlsZXIga25vd3MKLSAgICAvLyB0aGF0IHRob3NlIHZh
bHVlcyBkb24ndCBoYXZlIHRvIGJlIHJlY292ZXJlZC4gU2lnbmFsIHRoaXMgYnkgdXNpbmcgVmFs
dWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpCi0gICAgZm9yIChJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxs
RnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOyBpLS07KQotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzLnNldExvY2FsKFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgLSBp
IC0gMSwgVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpKTsKLSAgICB9CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk1MCw2ICsyOTUwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAg
ICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlTWFjaGluZUlu
dChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAg
ICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMTMyLDYgKzMxMzUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQg
c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoIW1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgICAgICBJbnQ1MktpbmQga2luZDsKKyAgICAgICAgbG93V2hpY2hldmVySW50NTIo
ZWRnZSwga2luZCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdl
IGVkZ2UpCiAgICAgewogICAgICAgICBsb3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDE1NjY2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVj
dGlvbiogdlBDKCkgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdW5ib3hlZEludDMyKCkgY29uc3Q7
CiAgICAgICAgIGludDY0X3QgdW5ib3hlZEludDUyKCkgY29uc3Q7CisgICAgICAgIGludDY0X3Qg
dW5ib3hlZFN0cmljdEludDUyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdW5ib3hlZEJvb2xlYW4o
KSBjb25zdDsKICAgICAgICAgZG91YmxlIHVuYm94ZWREb3VibGUoKSBjb25zdDsKICAgICAgICAg
SlNDZWxsKiB1bmJveGVkQ2VsbCgpIGNvbnN0OwpAQCAtMTc3LDYgKzE3OCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHUuaW50ZWdlciA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0
QW1vdW50OwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5i
b3hlZFN0cmljdEludDUyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB1LmludGVnZXI7
CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVh
bigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NjY2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1Niw1MyArMzU2LDkgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmYoQ2Fs
bEZyYW1lKiBjYWxsRgogICAgIG1fcmVnaXN0ZXJBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8V3Jp
dGVCYXJyaWVyPFVua25vd24+W10+KG1fbnVtQXJndW1lbnRzKTsKICAgICBtX3JlZ2lzdGVycyA9
IG1fcmVnaXN0ZXJBcnJheS5nZXQoKSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEpIC0gMTsKIAot
ICAgIHRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUoCi0gICAgICAgIGNhbGxGcmFtZS0+dm0oKSwg
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQsCi0g
ICAgICAgIGlubGluZUNhbGxGcmFtZSk7Ci19Ci0KLXZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmRm9y
SW5saW5lQ2FsbEZyYW1lKFZNJiB2bSwgUmVnaXN0ZXIqIHJlZ2lzdGVycywgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUpCi17CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251
bUFyZ3VtZW50czsgKytpKSB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbaSArIDFdOwotICAgICAgICAvLyBJbiB0aGUgZnV0dXJl
IHdlJ2xsIHN1cHBvcnQgZGlzcGxhY2VkIHJlY292ZXJpZXMgKGluZGljYXRpbmcgdGhhdCB0aGUK
LSAgICAgICAgLy8gYXJndW1lbnQgd2FzIGZsdXNoZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24p
LCBidXQgZm9yIG5vdyB3ZSBkb24ndCBkbwotICAgICAgICAvLyB0aGF0IHNvIHRoaXMgY29kZSB3
aWxsIGZhaWwgaWYgdGhhdCB3ZXJlIHRvIGhhcHBlbi4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAg
ICAgIC8vIGl0J3MgbXVjaCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIHN1cHBvcnQgaW4tcmVnaXN0
ZXIgcmVjb3ZlcmllcyBzaW5jZQotICAgICAgICAvLyB0aGlzIGNvZGUgZG9lcyBub3QgKGVhc2ls
eSkgaGF2ZSBhY2Nlc3MgdG8gcmVnaXN0ZXJzLgotICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAg
ICAgICBSZWdpc3RlciogbG9jYXRpb24gPSAmcmVnaXN0ZXJzW0NhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoaSldOwotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFjazoKLSAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24t
PmpzVmFsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRp
b24tPnVuYm94ZWRJbnQzMigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1i
ZXIobG9jYXRpb24tPnVuYm94ZWRJbnQ1MigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICAgICAgdmFsdWUg
PSBsb2NhdGlvbi0+dW5ib3hlZENlbGwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgdmFsdWUg
PSBqc0Jvb2xlYW4obG9jYXRpb24tPnVuYm94ZWRCb29sZWFuKCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcigqYml0d2lzZV9jYXN0
PGRvdWJsZSo+KGxvY2F0aW9uKSk7Ci0jZWxzZQotICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlv
bi0+anNWYWx1ZSgpOwotI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
b25zdGFudDoKLSAgICAgICAgICAgIHZhbHVlID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IHRyeVNldEFyZ3VtZW50KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgIHRyeVNldEFyZ3VtZW50KGNh
bGxGcmFtZS0+dm0oKSwgaSwgcmVjb3ZlcnkucmVjb3ZlcihjYWxsRnJhbWUpKTsKICAgICB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZp
c2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsNiBAQCBwcml2YXRlOgogICAgIEFyZ3VtZW50
cyhDYWxsRnJhbWUqKTsKICAgICBBcmd1bWVudHMoQ2FsbEZyYW1lKiwgTm9QYXJhbWV0ZXJzVHlw
ZSk7CiAgICAgICAgIAotICAgIHZvaWQgdGVhck9mZkZvcklubGluZUNhbGxGcmFtZShWTSYgdm0s
IFJlZ2lzdGVyKiwgSW5saW5lQ2FsbEZyYW1lKik7Ci0KIHB1YmxpYzoKICAgICBERUNMQVJFX0lO
Rk87CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213031</attachid>
            <date>2013-09-30 13:14:41 -0700</date>
            <delta_ts>2013-09-30 13:14:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52149</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NjY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBA
QAorMjAxMy0wOS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEdldCByaWQgb2YgdGhlIEFscmVhZHlJbkpTU3RhY2sgcmVjb3ZlcmllcyBzaW5jZSB0aGV5IGFy
ZSB0b3RhbGx5IHJlZHVuZGFudCB3aXRoIHRoZSBEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcmll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBIYWhuZW5iZXJnLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBtb3N0bHkganVzdCBraWxscyBhIGJ1bmNoIG9mIGNvZGUuCisgICAgICAgIAorICAg
ICAgICBCdXQgaW5jaWRlbnRhbHkgd2hpbGUga2lsbGluZyB0aGF0IGNvZGUsIEkgdW5jb3ZlcmVk
IGEgYnVnIGluIG91ciBGVEwgT1NSIGVudHJ5cG9pbnQKKyAgICAgICAgY3JlYXRpb24gcGhhc2Uu
IFRoZSBwaGFzZSBpbnNlcnRzIGEgc2VxdWVuY2Ugb2YgU2V0TG9jYWwoRXh0cmFjdE9TUkVudHJ5
TG9jYWwpIG5vZGVzLgorICAgICAgICBJZiB3ZSBob2lzdCBzb21lIHR5cGUgY2hlY2sgaW50byB0
aGUgbG9jYWwsIHRoZW4gd2UgbWlnaHQgaW5qZWN0IGEgY29udmVyc2lvbiBub2RlCisgICAgICAg
IGJldHdlZW4gdGhlIEV4dHJhY3RPU1JFbnRyeUxvY2FsIGFuZCB0aGUgU2V0TG9jYWwgLSBmb3Ig
ZXhhbXBsZSB3ZSBtaWdodCBwdXQgaW4gYQorICAgICAgICBJbnQzMlRvRG91YmxlIG5vZGUuIEJ1
dCBjdXJyZW50bHkgdGhlIEZpeHVwUGhhc2Ugd2lsbCBtYWtlIGFsbCBjb252ZXJzaW9uIG5vZGVz
IHBsYWNlZAorICAgICAgICBvbiBhbiBlZGdlIG9mIGEgU2V0TG9jYWwgdXNlIGZvcndhcmQgZXhp
dC4gVGhpcyB0aGVuIGNvbmZ1c2VzIHRoZSBPU1IgZXhpdCBtYWNoaW5lcnkuCisgICAgICAgIFdo
ZW4gT1NSIGV4aXQgc2VlcyBhIGZvcndhcmQgZXhpdCwgaXQgdHJpZXMgdG8gInJvbGwgZm9yd2Fy
ZCIgZXhlY3V0aW9uIGZyb20gdGhlIGV4aXRpbmcKKyAgICAgICAgbm9kZSB0byB0aGUgZmlyc3Qg
bm9kZSB0aGF0IGhhcyBhIGRpZmZlcmVudCBDb2RlT3JpZ2luLiBUaGlzIG9ubHkgd29ya3MgaWYg
dGhlIG5vZGVzCisgICAgICAgIGFmdGVyIHRoZSBmb3J3YXJkIGV4aXQgYXJlIE1vdkhpbnRzIG9y
IG90aGVyIHRuaW5ncyB0aGF0IHRoZSBPU1IgZXhpdCBjb21waWxlciBjYW4KKyAgICAgICAgZm9y
d2FyZC1leGVjdXRlLiBCdXQgaGVyZSwgaXQgd2lsbCBzZWUgYSBidW5jaCBvZiBTZXRMb2NhbCBh
bmQgRXh0cmFjdE9TUkVudHJ5TG9jYWwKKyAgICAgICAgbm9kZXMgZm9yIHRoZSBzYW1lIGJ5dGVj
b2RlIGluZGV4LiBUd28gcG9zc2libGUgc29sdXRpb25zIGV4aXN0LiBXZSBjb3VsZCB0ZWFjaCB0
aGUKKyAgICAgICAgZm9yd2FyZC1leGVjdXRpb24gbG9naWMgaG93IHRvIGRlYWwgd2l0aCBtdWx0
aXBsZSBTZXRMb2NhbHMgYW5kIEV4dHJhY3RPU1JFbnRyeUxvY2Fscy4KKyAgICAgICAgVGhpcyB3
b3VsZCBiZSBhIGxvdCBvZiBjb21wbGV4aXR5OyByaWdodCBub3cgaXQganVzdCBuZWVkcyB0byBk
ZWFsIHdpdGggZXhhY3RseSBvbmUKKyAgICAgICAgU2V0TG9jYWwtbGlrZSBvcGVyYXRpb24uIFRo
ZSBhbHRlcm5hdGl2ZSBpcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY29udmVyc2lvbiBub2RlIHRo
YXQKKyAgICAgICAgd2UgaW5qZWN0IGVuZHMgdXAgZXhpdGluZyAqYmFja3dhcmQqIHJhdGhlciB0
aGFuIGZvcndhcmQuCisgICAgICAgIAorICAgICAgICBCdXQgbWFraW5nIHRoZSBjb252ZXJzaW9u
IG5vZGVzIGV4aXQgYmFja3dhcmQgaXMgc29tZXdoYXQgdHJpY2t5LiBCZWZvcmUgdGhpcyBwYXRj
aCwKKyAgICAgICAgY29udmVyc2lvbiBub2RlcyBhbHdheXMgZXhpdCBmb3J3YXJkIGZvciBTZXRM
b2NhbHMgYW5kIGJhY2t3YXJkcyBvdGhlcndpc2UuIEl0IHR1cm5zIG91dAorICAgICAgICB0aGF0
IHRoZSBzb2x1dGlvbiBpcyB0byByYXRpb25hbGl6ZSBob3cgd2UgY2hvb3NlIHRoZSBzcGVjdWxh
dGlvbiBkaXJlY2l0b24gZm9yIGEKKyAgICAgICAgY29udmVyc2lvbiBub2RlLiBUaGUgY29udmVy
c2lvbiBub2RlJ3Mgc3BlY3VsYXRpb24gZGlyZWN0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0
aGUKKyAgICAgICAgc3BlY3VsYXRpb24gZGlyZWN0aW9uIG9mIHRoZSBub2RlIGZvciB3aGljaCBp
dCBpcyBkb2luZyBhIGNvbnZlcnNpb24uIFNpbmNlIFNldExvY2FsJ3MKKyAgICAgICAgYWxyZWFk
eSBleGl0IGZvcndhcmQgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgcHJlc2VydmVzIG91ciBwcmV2
aW91cyBiZWhhdmlvci4gQnV0IGl0CisgICAgICAgIGFsc28gYWxsb3dzIHRoZSBPU1IgZW50cnlw
b2ludCBjcmVhdGlvbiBwaGFzZSB0byBtYWtlIGl0cyBTZXRMb2NhbHMgZXhpdCBiYWNrd2FyZAor
ICAgICAgICBpbnN0ZWFkLgorICAgICAgICAKKyAgICAgICAgT2YgY291cnNlLCBpZiB0aGUgU2V0
TG9jYWwoRXh0cmFjdE9TUkVudHJ5TG9jYWwpIHNlcXVlbmNlcyBleGl0IGJhY2t3YXJkLCB0aGVu
IHdlIG5lZWQKKyAgICAgICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIE9TUiBleGl0IG1hY2hpbmUg
a25vd3MgdGhhdCB0aGUgbG9jYWwgdmFyaWFibGVzIGFyZSBpbmRlZWQgbGl2ZS4KKyAgICAgICAg
Q29uc2lkZXIgdGhhdCBpZiB3ZSBoYXZlOgorICAgICAgICAKKyAgICAgICAgICAgIGE6IEV4dHJh
Y3RPU1JFbnRyeUxvY2FsKGxvYzEpCisgICAgICAgICAgICBiOiBTZXRMb2NhbChAYSwgbG9jMSkK
KyAgICAgICAgICAgIGM6IEV4dHJhY3RPU1JlbnRyeUxvY2FsKGxvYzIpCisgICAgICAgICAgICBk
OiBTZXRMb2NhbChAYywgbG9jMikKKyAgICAgICAgCisgICAgICAgIFdpdGhvdXQgYWRkaXRpb25h
bCBtYWdpYywgdGhlIGV4aXQgYXQgQGIgd2lsbCB0aGluayB0aGF0IGxvYzIgaXMgZGVhZCBhbmQg
dGhlIE9TUiBleGl0CisgICAgICAgIGNvbXBpbGVyIHdpbGwgY2xvYmJlciBsb2MyIHdpdGggVW5k
ZWZpbmVkLiBTbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFjdHVhbGx5CisgICAgICAg
IGVtaXQgY29kZSBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgIGE6IEV4dHJhY3RPU1JFbnRy
eUxvY2FsKGxvYzEpCisgICAgICAgICAgICBiOiBFeHRyYWN0T1NSRW50cnlMb2NhbChsb2MyKQor
ICAgICAgICAgICAgYzogU2V0TG9jYWwoQGEsIGxvYzEpCisgICAgICAgICAgICBkOiBTZXRMb2Nh
bChAYiwgbG9jMikKKyAgICAgICAgICAgIGU6IFNldExvY2FsKEBhLCBsb2MxKQorICAgICAgICAg
ICAgZjogU2V0TG9jYWwoQGIsIGxvYzIpCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3Zl
cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6cmVjb3Zlcik6Cisg
ICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAoSlND
OjpWYWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5
Lmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4RWRnZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvZGU6OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNwZWN1bGF0aW9uRGlyZWN0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRTcGVjdWxhdGlvbkRpcmVjdGlvbik6CisgICAg
ICAgICogZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAgICogZGZnL0RGR1ZhbHVlU291cmNl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OnZhbHVlUmVjb3ZlcnkpOgorICAg
ICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3Bl
Y3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTWFj
aGluZUludCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXI6OnVuYm94ZWRTdHJpY3RJbnQ1Mik6CisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmYpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisKIDIwMTMtMDktMzAgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgVk0gaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVj
dCB0byBSZWdFeHAgY29uc3RydWN0b3IuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAogICAgIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorICAgIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCiAgICAg
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKIAogICAgIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIFwKICAg
ICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAogICAgIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcCBcCisgICAgYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogICAgIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1NjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5j
cHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcU3RydWN0dXJlU3R1
YkluZm8uY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlu
a2VkQ29kZUJsb2NrLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxWYWx1ZVJlY292ZXJ5LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxXYXRjaHBvaW50LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29tcGlsZXJcQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb21waWxlclxOb2Rlc0NvZGVnZW4uY3BwIiAvPg0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDggKzExOCw2IEBACiAJCTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBD
Q2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0RTU0MzE3RUE5RjU5
MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNEU1M0UxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0RTU0NDE3RUE5
RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1M0YxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjI0RTU1NTE3
RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAv
KiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwICovOyB9OwotCQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIy
MTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZy
YW1lU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NDUxN0VFMjc0OTAw
QUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwICovOyB9OwogCQkwRjI0RTU0RDE3RUUyNzQ5MDBB
QkIyMTcgLyogSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1NDYxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMu
aCAqLzsgfTsKIAkJMEYyNEU1NEUxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbldyYXBw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0
RTU0NzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9uV3JhcHBlcnMuaCAqLzsgfTsKQEAg
LTEyNyw2ICsxMjUsOSBAQAogCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0
OTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgKi87IH07CiAJCTBGMjRFNTUxMTdFRTI3
NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjI0RTU0QTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oICovOyB9
OwogCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0
QjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi87IH07CisJ
CTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NTMxN0YwQjcx
QzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi87IH07CisJCTBGMjRFNTU2MTdG
MEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJ
bmxpbmVDYWxsRnJhbWVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjI0RTU1ODE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1
NzE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgKi87IH07CiAJCTBGMjU2QzM2
MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNTZD
MzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBODE3QjZCNTNE
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyog
R0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMjIsOCArMTMyMyw2IEBACiAJCTBGMjRFNTNEMTdFQTlGNTkwMEFC
QjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTNFMTdF
QTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1M0YxN0VB
OUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjI0RTU1MzE3RjBC
NzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJh
bWVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1l
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTQ1MTdFRTI3NDkwMEFC
QjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVE9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjI0RTU0NjE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRPcGVyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjRFNTQ3MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25XcmFwcGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRPcGVyYXRpb25XcmFwcGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzMSw2ICsxMzMwLDkgQEAKIAkJ
MEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVwYXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcGF0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NTMxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmxpbmVDYWxsRnJhbWVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU1NzE3Rjc0RURCMDBBQkIyMTcg
LyogVmFsdWVSZWNvdmVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBWYWx1ZVJlY292ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNTZD
MzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2
QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDSW5jb21pbmdSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkI2NkE5MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzY0LDggKzM3NjYsNiBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJh
bWVTZXQuY3BwICovLAotCQkJCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxs
RnJhbWVTZXQuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKIAkJCQkwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5N0Mg
LyogQXJyYXlQcm9maWxlLmNwcCAqLywKQEAgLTM4MDAsNiArMzgwMCw4IEBACiAJCQkJMEY5MzMy
OTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk2
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJD
RjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEYyNEU1NTMxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8sCisJCQkJMEYyNEU1NTQxN0YwQjcx
QzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICovLAogCQkJCTk2OUEwNzkzMEVEMUQz
QUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oICovLAogCQkJCUJDRkQ4QzkwMEVFQjJFRTcwMDI4
Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAogCQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuaCAqLywKQEAgLTM4MzgsNiArMzg0MCw3IEBACiAJCQkJQTc5RTc4MUUxNUVF
Q0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLywKIAkJCQlBNzlFNzgxRjE1
RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLywKIAkJCQkwRjk2M0IzNjEz
RkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCisJCQkJMEYyNEU1NTcxN0Y3NEVE
QjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAogCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmNwcCAqLywKQEAgLTUyNzYsNiArNTI3OSw3IEBACiAJCQkJMTRFODRG
QTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
RTVDMTkxNzI0QUYzRDAwNUM1NzRGIC8qIFdlYktpdExMVk1MaWJyYXJ5QW5jaG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAv
KiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIw
MEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZE
OUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCisKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitKU1ZhbHVlIFZhbHVlUmVjb3Zlcnk6OnJlY292ZXIoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKKyAgICBjYXNlIERpc3BsYWNl
ZEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCkub2Zm
c2V0KCkpLmpzVmFsdWUoKTsKKyAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSku
dW5ib3hlZEludDMyKCkpOworICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgIHJldHVybiBqc051bWJlcihleGVjLT5yKHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKS51
bmJveGVkSW50NTIoKSk7CisgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCkpLnVuYm94ZWRTdHJpY3RJbnQ1MigpKTsKKyAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNT
dGFjazoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCku
b2Zmc2V0KCkpLnVuYm94ZWREb3VibGUoKSk7CisgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICByZXR1cm4gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSku
dW5ib3hlZENlbGwoKTsKKyAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyKCku
b2Zmc2V0KCkpLmpzVmFsdWUoKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZXhl
Yy0+cih2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSkudW5ib3hlZEJvb2xlYW4oKSk7CisjZW5k
aWYKKyAgICBjYXNlIENvbnN0YW50OgorICAgICAgICByZXR1cm4gY29uc3RhbnQoKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgIH0KK30KKwordm9pZCBWYWx1ZVJlY292ZXJ5OjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAorewor
ICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKKyAgICBjYXNlIEluR1BSOgorICAgICAgICBvdXQu
cHJpbnQoZ3ByKCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQ
UjoKKyAgICAgICAgb3V0LnByaW50KCJpbnQzMigiLCBncHIoKSwgIikiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAgIG91dC5wcmludCgiaW50
NTIoIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVuYm94ZWRTdHJp
Y3RJbnQ1MkluR1BSOgorICAgICAgICBvdXQucHJpbnQoInN0cmljdEludDUyKCIsIGdwcigpLCAi
KSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAg
ICAgICBvdXQucHJpbnQoImJvb2woIiwgZ3ByKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgIG91dC5wcmludCgiY2VsbCgiLCBncHIo
KSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVUludDMySW5HUFI6CisgICAgICAg
IG91dC5wcmludCgidWludDMyKCIsIGdwcigpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBJbkZQUjoKKyAgICAgICAgb3V0LnByaW50KGZwcigpKTsKKyAgICAgICAgcmV0dXJuOwor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY2FzZSBJblBhaXI6CisgICAgICAgIG91dC5wcmlu
dCgicGFpcigiLCB0YWdHUFIoKSwgIiwgIiwgcGF5bG9hZEdQUigpLCAiKSIpOworICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKyAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgb3V0
LnByaW50ZigiKiVkIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50
ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmlu
dGYoIippbnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBv
dXQucHJpbnRmKCIqc3RyaWN0SW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgor
ICAgICAgICBvdXQucHJpbnRmKCIqY2VsbCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgIG91dC5wcmludGYoIipib29sKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNl
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVh
dGVkOgorICAgICAgICBvdXQucHJpbnRmKCJhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgIG91dC5wcmludCgiWyIsIGluQ29udGV4dChjb25z
dGFudCgpLCBjb250ZXh0KSwgIl0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG9udEtu
b3c6CisgICAgICAgIG91dC5wcmludGYoIiEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZhbHVlUmVjb3Zlcnk6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBkdW1wSW5Db250ZXh0KG91dCwg
MCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDE0ICs0Miw2IEBAIHN0cnVjdCBEdW1wQ29udGV4dDsKIC8vIERlc2NyaWJlcyBob3cg
dG8gcmVjb3ZlciBhIGdpdmVuIGJ5dGVjb2RlIHZpcnR1YWwgcmVnaXN0ZXIgYXQgYSBnaXZlbgog
Ly8gY29kZSBwb2ludC4KIGVudW0gVmFsdWVSZWNvdmVyeVRlY2huaXF1ZSB7Ci0gICAgLy8gSXQn
cyBhbHJlYWR5IGluIHRoZSBzdGFjayBhdCB0aGUgcmlnaHQgbG9jYXRpb24uCi0gICAgQWxyZWFk
eUluSlNTdGFjaywKLSAgICAvLyBJdCdzIGFscmVhZHkgaW4gdGhlIHN0YWNrIGJ1dCB1bmJveGVk
LgotICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMiwKLSAgICBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkSW50NTIsCi0gICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwsCi0g
ICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4sCi0gICAgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEgcmVnaXN0ZXIuCiAgICAgSW5HUFIs
CiAgICAgVW5ib3hlZEludDMySW5HUFIsCkBAIC04OSw0OCArODEsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVjaG5pcXVlICE9IERvbnRLbm93OyB9CiAg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAotICAg
IHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2soKQotICAgIHsKLSAgICAgICAg
VmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVh
ZHlJbkpTU3RhY2s7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHN0
YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpCi0gICAg
ewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOwotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkSW50NTIoKQotICAgIHsKLSAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJ
bnQ1MjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFZh
bHVlUmVjb3ZlcnkgYWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKQotICAgIHsKLSAgICAg
ICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkQm9vbGVhbigpCi0gICAgewotICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAg
ICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW47
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBWYWx1ZVJl
Y292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGUoKQotICAgIHsKLSAgICAgICAg
VmFsdWVSZWNvdmVyeSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotICAgIAogICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGluR1BSKE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGdwciwgRGF0YUZvcm1hdCBkYXRhRm9ybWF0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGRhdGFGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpOwpAQCAtMjU2LDIxICsyMDYsNiBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0FscmVhZHlJbkpTU3Rh
Y2soKSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoICh0ZWNobmlxdWUoKSkgewotICAgICAg
ICBjYXNlIEFscmVhZHlJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDMyOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ1
MjoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKLSAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9
PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BS
IHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJ
bnQ1MkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSIHx8IG1f
dGVjaG5pcXVlID09IFVuYm94ZWRDZWxsSW5HUFIpOwpAQCAtMzA5LDk1ICsyNDQsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fc291cmNlLmNvbnN0YW50KTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoICh0ZWNobmlx
dWUoKSkgewotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCItIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKGludDMyKSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQ1MjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ1MikiKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoK
LSAgICAgICAgICAgIG91dC5wcmludGYoIihjZWxsKSIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiKGJvb2wpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIihkb3VibGUpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5HUFI6
Ci0gICAgICAgICAgICBvdXQucHJpbnQoZ3ByKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50KCJpbnQz
MigiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBVbmJv
eGVkSW50NTJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludCgiaW50NTIoIiwgZ3ByKCksICIp
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUy
SW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnQoInN0cmljdEludDUyKCIsIGdwcigpLCAiKSIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6
Ci0gICAgICAgICAgICBvdXQucHJpbnQoImJvb2woIiwgZ3ByKCksICIpIik7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgIG91
dC5wcmludCgiY2VsbCgiLCBncHIoKSwgIikiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBVSW50MzJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludCgidWludDMyKCIsIGdw
cigpLCAiKSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEluRlBSOgotICAg
ICAgICAgICAgb3V0LnByaW50KGZwcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIG91dC5wcmlu
dCgicGFpcigiLCB0YWdHUFIoKSwgIiwgIiwgcGF5bG9hZEdQUigpLCAiKSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCi0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgb3V0LnByaW50ZigiKiVkIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3Rlcigp
Lm9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIippbnQ1MiglZCkiLCB2aXJ0
dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIqc3RyaWN0SW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zm
c2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIqY2VsbCglZCkiLCB2aXJ0dWFsUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQm9v
bGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG91dC5wcmludGYoIipib29sKCVk
KSIsIHZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY2FzZSBBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCJhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBD
b25zdGFudDoKLSAgICAgICAgICAgIG91dC5wcmludCgiWyIsIGluQ29udGV4dChjb25zdGFudCgp
LCBjb250ZXh0KSwgIl0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBEb250
S25vdzoKLSAgICAgICAgICAgIG91dC5wcmludGYoIiEiKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKLSAgICB9CisgICAgSlNWYWx1ZSByZWNvdmVyKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgIAorICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3Q7CisgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3ZlcnlUZWNobmlx
dWUgbV90ZWNobmlxdWU7CiAgICAgdW5pb24gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE5
LDcgKzEyMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCksIEZvcndh
cmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEludDMyOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKQEAgLTE0MDcsMTEgKzE0MDcsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBlZGdlLCB5b3Ug
ZWl0aGVyIGNhbGwgZml4RWRnZSgpIG9yIHBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgZnVuY3Rpb25h
bGl0eQogICAgIC8vIHlvdXJzZWxmLiBPYnZpb3VzbHksIHlvdSBzaG91bGQgaGF2ZSBhIHJlYWxs
eSBnb29kIHJlYXNvbiBpZiB5b3UgZG8gdGhlIGxhdHRlci4KICAgICB0ZW1wbGF0ZTxVc2VLaW5k
IHVzZUtpbmQ+Ci0gICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCisgICAgdm9pZCBmaXhFZGdlKEVk
Z2UmIGVkZ2UpCiAgICAgewogICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkpIHsKICAgICAg
ICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewot
ICAgICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRp
cmVjdGlvbik7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwg
dXNlS2luZCwgbV9jdXJyZW50Tm9kZS0+c3BlY3VsYXRpb25EaXJlY3Rpb24oKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNDI0LDYg
KzE0MjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50NTJBc0RvdWJsZSwgSW50NTJUb0RvdWJsZSwKICAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0LT5zZXRTcGVjdWxhdGlvbkRpcmVjdGlvbihtX2N1cnJl
bnROb2RlLT5zcGVjdWxhdGlvbkRpcmVjdGlvbigpKTsKICAgICAgICAgICAgICAgICBlZGdlID0g
RWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KQEAgLTE0NzcsNiArMTQ3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKICAgICAgICAgICAgICAgICBtX2N1
cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVkVXNlKSk7Cisg
ICAgICAgICAgICByZXN1bHQtPnNldFNwZWN1bGF0aW9uRGlyZWN0aW9uKG1fY3VycmVudE5vZGUt
PnNwZWN1bGF0aW9uRGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0
LCB1c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MiwzMSArOTIsNyBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVj
b3ZlcnkgPSByZWNvdmVyaWVzW2ldOwotICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBz
d2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFjazoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKLSAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHZh
bHVlID0gZXhlYy0+cihvcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6Ci0gICAgICAgICAgICB2
YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDMyKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUy
OgotICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJ
bnQ1MigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWREb3VibGU6Ci0gICAgICAgICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKGV4
ZWMtPnIob3BlcmFuZCkudW5ib3hlZERvdWJsZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENvbnN0YW50OgotICAgICAgICAgICAgdmFsdWUgPSByZWNvdmVyeS5jb25zdGFu
dCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgcmVzdWx0W2ldID0gdmFsdWU7CisgICAgICAgIHJlc3VsdFtpXSA9IHJlY292
ZXJpZXNbaV0ucmVjb3ZlcihleGVjKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwyNiBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBmaWx0ZXJGbGFncyh+ZmxhZ3MpOwogICAgIH0KICAg
ICAKKyAgICBTcGVjdWxhdGlvbkRpcmVjdGlvbiBzcGVjdWxhdGlvbkRpcmVjdGlvbigpCisgICAg
eworICAgICAgICBpZiAoZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQpCisgICAgICAgICAgICBy
ZXR1cm4gRm9yd2FyZFNwZWN1bGF0aW9uOworICAgICAgICByZXR1cm4gQmFja3dhcmRTcGVjdWxh
dGlvbjsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRTcGVjdWxhdGlvbkRpcmVjdGlvbihTcGVj
dWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCisgICAgeworICAgICAgICBzd2l0Y2ggKGRpcmVj
dGlvbikgeworICAgICAgICBjYXNlIEZvcndhcmRTcGVjdWxhdGlvbjoKKyAgICAgICAgICAgIG1l
cmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgQmFja3dhcmRTcGVjdWxhdGlvbjoKKyAgICAgICAgICAgIGNsZWFyRmxhZ3MoTm9kZUV4
aXRzRm9yd2FyZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzZXRPcEFu
ZERlZmF1bHRGbGFncyhOb2RlVHlwZSBvcCkKICAgICB7CiAgICAgICAgIG1fb3AgPSBvcDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsMTYgKzk0LDM3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBPcElu
Zm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQorICAgICAgICBWZWN0b3I8
Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwogICAgICAgICBm
b3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQgPSB0YXJnZXQtPnZh
cmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSGVh
ZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBwcmV2aW91c0hlYWQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICBs
b2NhbHNbbG9jYWxdID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dy
YXBoLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBFeHRyYWN0T1NSRW50cnlMb2NhbCwgY29kZU9y
aWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0KCkp
KTsKLSAgICAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIE1vdkhpbnQuIFdlIGNhbid0IHVzZSBNb3ZIaW50J3MgZGlyZWN0
bHkgYXQgdGhpcyBzdGFnZSBvZgorICAgICAgICAgICAgLy8gY29tcGlsYXRpb24sIHNvIHdlIGNv
b2sgb25lIHVwIGJ5IGNyZWF0aW5nIGEgbmV3IFZhcmlhYmxlQWNjZXNzRGF0YQorICAgICAgICAg
ICAgLy8gdGhhdCBpc24ndCB1bmlmaWVkIHdpdGggYW55IG9mIHRoZSBvdGhlcnMuIFRoaXMgZW5z
dXJlcyB0aGF0IHRoaXMKKyAgICAgICAgICAgIC8vIFNldExvY2FsIHdpbGwgdHVybiBpbnRvIGEg
TW92SGludCBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgdHlwZSBjaGVja3MuCisgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEodmFyaWFibGUtPmxvY2FsKCksIHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkp
KTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGUgPSAmbV9ncmFw
aC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5sYXN0KCk7CisgICAgICAgICAgICBOb2RlKiBzZXRMb2Nh
bCA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05v
bmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8obmV3VmFyaWFibGUpLAorICAgICAgICAg
ICAgICAgIEVkZ2UobG9jYWxzW2xvY2FsXSkpOworICAgICAgICAgICAgc2V0TG9jYWwtPnNldFNw
ZWN1bGF0aW9uRGlyZWN0aW9uKEJhY2t3YXJkU3BlY3VsYXRpb24pOworICAgICAgICB9CisgICAg
ICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdp
c3RlcnM7ICsrbG9jYWwpIHsKKyAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdl
dC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgIGlmICghcHJldmlv
dXNIZWFkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IHByZXZpb3VzSGVhZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbG9jYWxzW2xvY2FsXTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldExvY2FsID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSksIEVk
Z2Uobm9kZSkpOworICAgICAgICAgICAgc2V0TG9jYWwtPnNldFNwZWN1bGF0aW9uRGlyZWN0aW9u
KEJhY2t3YXJkU3BlY3VsYXRpb24pOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBuZXdS
b290LT5hcHBlbmROb2RlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IAogICAgIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBv
cGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYg
cmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIGludCBvcGVyYW5kID0gb3BlcmFu
ZHMub3BlcmFuZEZvckluZGV4KGluZGV4KTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAocmVj
b3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CkBA
IC0yNTAsMjMgKzI0OSw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MjoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKLSAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKLSAgICAgICAgICAgIG1faml0
LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5k
KSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5s
b2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJh
bmQpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIG1faml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjk5LDcgKzI4MSw2IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCkBAIC0zMTMsNyArMjk0LDYgQEAgdm9p
ZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxs
OgogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CiAgICAgICAgIGNhc2UgQ2VsbERpc3Bs
YWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1faml0LmxvYWQzMigKQEAgLTMyNyw3ICszMDcs
NiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKICAgICAgICAg
Y2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDMy
KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1
NiwxMSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8g
ZGVmaW5pdGVseSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRjaCBidWZmZXIgcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIGl0IGhhZAogICAgIC8vIG9yaWdpbmFsbHkgYmVlbiBpbiBhIHJl
Z2lzdGVyIG9yIHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxlICJ3aGVyZSB3YXMK
ICAgICAvLyB0aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVzZW50ZWQiLiBDb25z
aWRlciB0aGF0IHRoZQotICAgIC8vIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMiByZWNv
dmVyeTogaXQgdGVsbHMgdXMgdGhhdCB0aGUgdmFsdWUgaXMgaW4gYQotICAgIC8vIHBhcnRpY3Vs
YXIgcGxhY2UgYW5kIHRoYXQgdGhhdCBwbGFjZSBob2xkcyBhbiB1bmJveGVkIGludDMyLiBXZSBo
YXZlIHRocmVlIGRpZmZlcmVudAotICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUgY291bGQgYmUg
KHN0YWNrLCBkaXNwbGFjZWQsIHJlZ2lzdGVyKSBhbmQgYSBidW5jaCBvZiBkaWZmZXJlbnQKLSAg
ICAvLyB3YXlzIG9mIHJlcHJlc2VudGluZyBhIHZhbHVlLiBUaGUgbnVtYmVyIG9mIHJlY292ZXJp
ZXMgaXMgdGhyZWUgKiBhIGJ1bmNoLiBUaGUgY29kZQotICAgIC8vIGJlbG93IG1lYW5zIHRoYXQg
d2UgaGF2ZSB0byBoYXZlIHRocmVlICsgYSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0aHJlZSAq
IGEgYnVuY2guCisgICAgLy8gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcnk6IGl0IHRl
bGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKKyAgICAvLyBwYXJ0aWN1bGFyIHBsYWNlIGFu
ZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2UgaGF2ZSB0d28gZGlm
ZmVyZW50CisgICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBjb3VsZCBiZSAoZGlzcGxhY2VkLCBy
ZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50CisgICAgLy8gd2F5cyBvZiByZXByZXNl
bnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVyaWVzIGlzIHR3byAqIGEgYnVuY2gu
IFRoZSBjb2RlCisgICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGhhdmUgdHdvICsg
YSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBhIGJ1bmNoLgogICAgIC8vIE9uY2Ugd2Ug
aGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2ZXIgaXQgd2FzLCB0aGUgcmVib3hpbmcg
aXMgdGhlIHNhbWUKICAgICAvLyByZWdhcmRsZXNzIG9mIGl0cyBsb2NhdGlvbi4gTGlrZXdpc2Us
IGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3YXkgd2UgZ2V0IHRvCiAgICAgLy8gdGhl
IHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJvbSkgaXMgdGhlIHNhbWUgcmVnYXJkbGVz
cyBvZiBpdHMgdHlwZS4gQmVjYXVzZQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVS
ZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIGludCBvcGVyYW5k
ID0gb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4KTsKICAgICAgICAgCiAgICAgICAgIHN3
aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpT
U3RhY2s6CkBAIC0yNDYsMTMgKzI0NSw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxl
RXhpdChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKLSAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTI3NCw3ICsyNjYsNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkSW50MzI6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2Ug
SW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRj
aCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0yODMsNyArMjc0LDYgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgbV9qaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEludDUyOgogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgog
ICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMzA3LDcgKzI5Nyw2
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAg
IG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CiAgICAgICAgIGNhc2UgSW5GUFI6
CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9q
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwg
R1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM5
LDEzICsxNTM5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmxpbmVTdGFydCgK
ICAgICB1bnNpZ25lZCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBub2RlLT5hcmd1bWVudFBvc2l0
aW9uU3RhcnQoKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7Ci0gICAgICAgIFZhbHVlUmVj
b3ZlcnkgcmVjb3Zlcnk7CisgICAgICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlOwogICAgICAg
ICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KSkKLSAgICAgICAgICAgIHJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFj
aygpOworICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFj
ayk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgYXJndW1l
bnRQb3NpdGlvbiA9CiAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50UG9z
aXRpb25zW2FyZ3VtZW50UG9zaXRpb25TdGFydCArIGldOwotICAgICAgICAgICAgVmFsdWVTb3Vy
Y2UgdmFsdWVTb3VyY2U7CiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50UG9zaXRpb24uZmx1
c2hGb3JtYXQoKSkgewogICAgICAgICAgICAgY2FzZSBEZWFkRmx1c2g6CiAgICAgICAgICAgICBj
YXNlIEZsdXNoZWRKU1ZhbHVlOgpAQCAtMTU2Nyw4ICsxNTY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0g
VmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWNvdmVyeSA9IGNvbXB1dGVWYWx1ZVJlY292ZXJ5
Rm9yKHZhbHVlU291cmNlKTsKICAgICAgICAgfQorICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292
ZXJ5ID0gY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IoCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCks
IHZhbHVlU291cmNlKTsKICAgICAgICAgLy8gVGhlIHJlY292ZXJ5IHNob3VsZCByZWZlciBlaXRo
ZXIgdG8gc29tZXRoaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlbgogICAgICAgICAvLyBzdG9yZWQg
aW50byB0aGUgc3RhY2sgYXQgdGhlIHJpZ2h0IHBsYWNlLCBvciB0byBhIGNvbnN0YW50LAogICAg
ICAgICAvLyBzaW5jZSB0aGUgQXJndW1lbnRzIGNvZGUgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGhh
bmRsZSBhbnl0aGluZyBlbHNlLgpAQCAtMTg5OCwxMCArMTg5OCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0g
bV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiB9CiAKLVZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVK
SVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGNvbnN0IFZhbHVlU291cmNlJiB2YWx1ZVNvdXJj
ZSkKK1ZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9y
KGludCBvcGVyYW5kLCBjb25zdCBWYWx1ZVNvdXJjZSYgdmFsdWVTb3VyY2UpCiB7CiAgICAgaWYg
KHZhbHVlU291cmNlLmlzSW5KU1N0YWNrKCkpCi0gICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZS52
YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZS52YWx1ZVJlY292ZXJ5
KG9wZXJhbmQpOwogICAgICAgICAKICAgICBBU1NFUlQodmFsdWVTb3VyY2Uua2luZCgpID09IEhh
dmVOb2RlKTsKICAgICBOb2RlKiBub2RlID0gdmFsdWVTb3VyY2UuaWQoKS5ub2RlKG1faml0Lmdy
YXBoKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMTU2NjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgyLDExICsyMjgyLDExIEBA
IHB1YmxpYzoKICAgICBWZWN0b3I8T3duUHRyPFNsb3dQYXRoR2VuZXJhdG9yPiwgOD4gbV9zbG93
UGF0aEdlbmVyYXRvcnM7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4+IG1fcGxh
bnM7CiAgICAgCi0gICAgVmFsdWVSZWNvdmVyeSBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihjb25z
dCBWYWx1ZVNvdXJjZSYpOworICAgIFZhbHVlUmVjb3ZlcnkgY29tcHV0ZVZhbHVlUmVjb3ZlcnlG
b3IoaW50IG9wZXJhbmQsIGNvbnN0IFZhbHVlU291cmNlJik7CiAKICAgICBWYWx1ZVJlY292ZXJ5
IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKHZhbHVlU291cmNlRm9yT3BlcmFuZChWaXJ0dWFs
UmVnaXN0ZXIob3BlcmFuZCkpKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVWYWx1ZVJlY292ZXJ5
Rm9yKG9wZXJhbmQsIHZhbHVlU291cmNlRm9yT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkpKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyOCArMTc4LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZhbHVlU291cmNlS2luZFRvRGF0YUZvcm1hdChraW5k
KCkpOwogICAgIH0KICAgICAKLSAgICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVjb3ZlcnkoKSBjb25z
dAorICAgIFZhbHVlUmVjb3ZlcnkgdmFsdWVSZWNvdmVyeShpbnQgb3BlcmFuZCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpc1RyaXZpYWxseVJlY292ZXJhYmxlKCkpOwogICAgICAgICBz
d2l0Y2ggKGtpbmQoKSkgewotICAgICAgICBjYXNlIFZhbHVlSW5KU1N0YWNrOgotICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2soKTsKLSAgICAgICAgICAg
IAotICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVl
UmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpOwotICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgSW50NTJJbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVS
ZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyKCk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuKCk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBEb3VibGVJbkpTU3RhY2s6Ci0gICAgICAgICAgICByZXR1cm4gVmFsdWVS
ZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSgpOwotICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgU291cmNlSXNEZWFkOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVj
b3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgCkBAIC0yMDcsOCAr
MTg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFyZ3Vt
ZW50c1RoYXRXZXJlTm90Q3JlYXRlZCgpOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIFZhbHVlUmVjb3ZlcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5
OjpkaXNwbGFjZWRJbkpTU3RhY2soVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLCBkYXRhRm9ybWF0
KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAxNTY2
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDEwIEBAIHZvaWQgVmFyaWFibGVFdmVu
dFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgLy8gcmVmbGVjdCB0aGlzLgogICAgIGlmICghaW5k
ZXgpIHsKICAgICAgICAgdmFsdWVSZWNvdmVyaWVzID0gT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVSZWNvdmVyaWVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlUmVjb3Zlcmllcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6
ZGlzcGxhY2VkSW5KU1N0YWNrKAorICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZVJlY292ZXJpZXMub3BlcmFuZEZvckluZGV4KGkpKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTgxLDcgKzE4Myw3IEBAIHZvaWQg
VmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG9wZXJhbmRTb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlU291cmNl
JiBzb3VyY2UgPSBvcGVyYW5kU291cmNlc1tpXTsKICAgICAgICAgaWYgKHNvdXJjZS5pc1RyaXZp
YWxseVJlY292ZXJhYmxlKCkpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IHNv
dXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBz
b3VyY2UudmFsdWVSZWNvdmVyeShvcGVyYW5kU291cmNlcy5vcGVyYW5kRm9ySW5kZXgoaSkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNzgsMTMgKzI4
MCw2IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgIHZh
bHVlUmVjb3Zlcmllc1tpXSA9CiAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJ
bkpTU3RhY2soc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmZvLnUudmlydHVhbFJlZyks
IGluZm8uZm9ybWF0KTsKICAgICB9Ci0gICAgCi0gICAgLy8gU3RlcCA0OiBNYWtlIHN1cmUgdGhh
dCBmb3IgbG9jYWxzIHRoYXQgY29pbmNpZGUgd2l0aCB0cnVlIGNhbGwgZnJhbWUgaGVhZGVycywg
dGhlIGV4aXQgY29tcGlsZXIga25vd3MKLSAgICAvLyB0aGF0IHRob3NlIHZhbHVlcyBkb24ndCBo
YXZlIHRvIGJlIHJlY292ZXJlZC4gU2lnbmFsIHRoaXMgYnkgdXNpbmcgVmFsdWVSZWNvdmVyeTo6
YWxyZWFkeUluSlNTdGFjaygpCi0gICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGlu
ZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgewot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOyBp
LS07KQotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzLnNldExvY2FsKFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgLSBpIC0gMSwgVmFsdWVS
ZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpKTsKLSAgICB9CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTY2NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1MCw2ICsy
OTUwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVOdW1iZXIoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVCb29sZWFuKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTMyLDYgKzMx
MzUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlTWFj
aGluZUludChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVl
ZHNUeXBlQ2hlY2soZWRnZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICBJbnQ1MktpbmQga2luZDsKKyAgICAgICAgbG93V2hpY2hldmVySW50NTIoZWRnZSwga2luZCk7
CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAg
ewogICAgICAgICBsb3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbiogdlBDKCkg
Y29uc3Q7CiAgICAgICAgIGludDMyX3QgdW5ib3hlZEludDMyKCkgY29uc3Q7CiAgICAgICAgIGlu
dDY0X3QgdW5ib3hlZEludDUyKCkgY29uc3Q7CisgICAgICAgIGludDY0X3QgdW5ib3hlZFN0cmlj
dEludDUyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdW5ib3hlZEJvb2xlYW4oKSBjb25zdDsKICAg
ICAgICAgZG91YmxlIHVuYm94ZWREb3VibGUoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiB1bmJv
eGVkQ2VsbCgpIGNvbnN0OwpAQCAtMTc3LDYgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIHUuaW50ZWdlciA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50OwogICAg
IH0KIAorICAgIEFMV0FZU19JTkxJTkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5ib3hlZFN0cmljdElu
dDUyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB1LmludGVnZXI7CisgICAgfQorCiAg
ICAgQUxXQVlTX0lOTElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NjY2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1Niw1MyArMzU2LDkgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmYoQ2FsbEZyYW1lKiBjYWxs
RgogICAgIG1fcmVnaXN0ZXJBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVCYXJyaWVyPFVu
a25vd24+W10+KG1fbnVtQXJndW1lbnRzKTsKICAgICBtX3JlZ2lzdGVycyA9IG1fcmVnaXN0ZXJB
cnJheS5nZXQoKSAtIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEpIC0gMTsKIAotICAgIHRlYXJPZmZG
b3JJbmxpbmVDYWxsRnJhbWUoCi0gICAgICAgIGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQsCi0gICAgICAgIGlubGlu
ZUNhbGxGcmFtZSk7Ci19Ci0KLXZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmRm9ySW5saW5lQ2FsbEZy
YW1lKFZNJiB2bSwgUmVnaXN0ZXIqIHJlZ2lzdGVycywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUpCi17CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50czsg
KytpKSB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHNbaSArIDFdOwotICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIHN1cHBv
cnQgZGlzcGxhY2VkIHJlY292ZXJpZXMgKGluZGljYXRpbmcgdGhhdCB0aGUKLSAgICAgICAgLy8g
YXJndW1lbnQgd2FzIGZsdXNoZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24pLCBidXQgZm9yIG5v
dyB3ZSBkb24ndCBkbwotICAgICAgICAvLyB0aGF0IHNvIHRoaXMgY29kZSB3aWxsIGZhaWwgaWYg
dGhhdCB3ZXJlIHRvIGhhcHBlbi4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAgICAgIC8vIGl0J3Mg
bXVjaCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIHN1cHBvcnQgaW4tcmVnaXN0ZXIgcmVjb3Zlcmll
cyBzaW5jZQotICAgICAgICAvLyB0aGlzIGNvZGUgZG9lcyBub3QgKGVhc2lseSkgaGF2ZSBhY2Nl
c3MgdG8gcmVnaXN0ZXJzLgotICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBSZWdpc3Rl
ciogbG9jYXRpb24gPSAmcmVnaXN0ZXJzW0NhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSldOwot
ICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFjazoKLSAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24tPmpzVmFsdWUoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRJbnQzMjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJ
bnQzMigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ1MjoKLSAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24t
PnVuYm94ZWRJbnQ1MigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgotICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+
dW5ib3hlZENlbGwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgdmFsdWUgPSBqc0Jvb2xlYW4o
bG9jYXRpb24tPnVuYm94ZWRCb29sZWFuKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcigqYml0d2lzZV9jYXN0PGRvdWJsZSo+KGxv
Y2F0aW9uKSk7Ci0jZWxzZQotICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+anNWYWx1ZSgp
OwotI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb25zdGFudDoKLSAg
ICAgICAgICAgIHZhbHVlID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHRyeVNldEFyZ3Vt
ZW50KHZtLCBpLCB2YWx1ZSk7CisgICAgICAgIHRyeVNldEFyZ3VtZW50KGNhbGxGcmFtZS0+dm0o
KSwgaSwgcmVjb3ZlcnkucmVjb3ZlcihjYWxsRnJhbWUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxNTY2Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsOCArNjMsNiBAQCBwcml2YXRlOgogICAgIEFyZ3VtZW50cyhDYWxsRnJhbWUq
KTsKICAgICBBcmd1bWVudHMoQ2FsbEZyYW1lKiwgTm9QYXJhbWV0ZXJzVHlwZSk7CiAgICAgICAg
IAotICAgIHZvaWQgdGVhck9mZkZvcklubGluZUNhbGxGcmFtZShWTSYgdm0sIFJlZ2lzdGVyKiwg
SW5saW5lQ2FsbEZyYW1lKik7Ci0KIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>