<?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>48058</bug_id>
          
          <creation_ts>2010-10-21 03:26:14 -0700</creation_ts>
          <short_desc>Web Inspector: decouple ScriptArguments from ScriptCallStack</short_desc>
          <delta_ts>2010-11-12 07:21:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>48122</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297337</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 03:26:14 -0700</bug_when>
    <thetext>We need ScriptState* only for script arguments serialization. However, in many cases we need to store stack trace and don&apos;t have any script arguments. To support those cases we need to extract script arguments into a separate class ScriptArguments and use it instead of ScriptCallStack for passing the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297344</commentid>
    <comment_count>1</comment_count>
      <attachid>71416</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 03:43:03 -0700</bug_when>
    <thetext>Created attachment 71416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297351</commentid>
    <comment_count>2</comment_count>
      <attachid>71419</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 03:57:35 -0700</bug_when>
    <thetext>Created attachment 71419
Manually uploaded patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297356</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-21 04:05:04 -0700</bug_when>
    <thetext>Attachment 71416 did not build on qt:
Build output: http://queues.webkit.org/results/4671008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297358</commentid>
    <comment_count>4</comment_count>
      <attachid>71419</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-21 04:05:48 -0700</bug_when>
    <thetext>Comment on attachment 71419
Manually uploaded patch

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

&gt; WebCore/bindings/scripts/CodeGeneratorJS.pm:1970
&gt; +                        push(@implContent, &quot;    size_t maxStackSize = imp-&gt;shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1;\n&quot;);

Nit: I&apos;d use the opposite one &quot;shouldCaptureTopFrameOnly()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297381</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-21 04:56:27 -0700</bug_when>
    <thetext>Attachment 71419 did not build on qt:
Build output: http://queues.webkit.org/results/4724001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297382</commentid>
    <comment_count>6</comment_count>
      <attachid>71424</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 05:11:34 -0700</bug_when>
    <thetext>Created attachment 71424
Patch to land

Added necessary changes to other projects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297387</commentid>
    <comment_count>7</comment_count>
      <attachid>71425</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 05:28:04 -0700</bug_when>
    <thetext>Created attachment 71425
Patch to land

Updated V8TestObj.cpp and JSTestObj.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297388</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 05:35:18 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/bindings/js/ScriptCallFrame.cpp =&gt; WebCore/bindings/js/ScriptCallStackFactory.h
	C	WebCore/bindings/js/ScriptCallFrame.cpp =&gt; WebCore/bindings/v8/ScriptCallStackFactory.h
	C	WebCore/bindings/v8/ScriptCallFrame.cpp =&gt; WebCore/inspector/ScriptArguments.cpp
	C	WebCore/bindings/js/ScriptCallFrame.h =&gt; WebCore/inspector/ScriptArguments.h
	R	WebCore/bindings/js/ScriptCallStack.cpp =&gt; WebCore/bindings/js/ScriptCallStackFactory.cpp
	R	WebCore/bindings/v8/ScriptCallStack.cpp =&gt; WebCore/bindings/v8/ScriptCallStackFactory.cpp
	R	WebCore/bindings/v8/ScriptCallFrame.cpp =&gt; WebCore/inspector/ScriptCallFrame.cpp
	R	WebCore/bindings/js/ScriptCallFrame.h =&gt; WebCore/inspector/ScriptCallFrame.h
	R	WebCore/bindings/js/ScriptCallFrame.cpp =&gt; WebCore/inspector/ScriptCallStack.cpp
	R	WebCore/bindings/js/ScriptCallStack.h =&gt; WebCore/inspector/ScriptCallStack.h
	D	WebCore/bindings/v8/ScriptCallFrame.h
	D	WebCore/bindings/v8/ScriptCallStack.h
	M	WebCore/Android.jscbindings.mk
	M	WebCore/Android.v8bindings.mk
	M	WebCore/CMakeLists.txt
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSBindingsAllInOne.cpp
	M	WebCore/bindings/js/ScriptState.h
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
	M	WebCore/bindings/scripts/CodeGeneratorV8.pm
	M	WebCore/bindings/scripts/test/JS/JSTestObj.cpp
	M	WebCore/bindings/scripts/test/V8/V8TestObj.cpp
	M	WebCore/bindings/v8/ScriptController.cpp
	M	WebCore/bindings/v8/ScriptState.h
	M	WebCore/bindings/v8/V8ConsoleMessage.cpp
	M	WebCore/bindings/v8/V8ConsoleMessage.h
	M	WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/ConsoleMessage.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/page/Console.cpp
	M	WebCore/page/Console.h
Committed r70232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297410</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 07:00:47 -0700</bug_when>
    <thetext>The patch was reverted in r70235.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297497</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-21 10:31:30 -0700</bug_when>
    <thetext>Attachment 71416 did not build on mac:
Build output: http://queues.webkit.org/results/4634013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297520</commentid>
    <comment_count>11</comment_count>
      <attachid>71463</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-21 11:23:37 -0700</bug_when>
    <thetext>Created attachment 71463
patch

This patch fixes compilation issue on Chromium Linux and profiler layout test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297922</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 05:34:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70298 might have broken Leopard Intel Debug (Tests)
The following tests are not passing:
editing/spelling/context-menu-suggestions.html
editing/spelling/spellcheck-attribute.html
editing/spelling/spelling-backspace-between-lines.html
editing/spelling/spelling-contenteditable.html
editing/spelling/spelling-textarea.html
platform/mac/accessibility/attributed-string-includes-misspelled-with-selection.html
platform/mac/accessibility/misspelled-attributed-string.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297982</commentid>
    <comment_count>13</comment_count>
      <attachid>71565</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-22 08:20:11 -0700</bug_when>
    <thetext>Created attachment 71565
Patch

This patch should compile on WebKit Win bot after I fixed transitive include issue in ScriptState.h, also fixed console-log-before-inspector-open test failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298077</commentid>
    <comment_count>14</comment_count>
      <attachid>71419</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-22 11:02:33 -0700</bug_when>
    <thetext>Comment on attachment 71419
Manually uploaded patch

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 71419 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308533</commentid>
    <comment_count>15</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-12 07:21:37 -0800</bug_when>
    <thetext>Commited r71515.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71416</attachid>
            <date>2010-10-21 03:43:03 -0700</date>
            <delta_ts>2010-10-21 03:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48058-20101021144259.patch</filename>
            <type>text/plain</type>
            <size>60167</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmNiYjEyNTU5ZTdmNDg1NWJmMDVlN2ZlOGE1NDA3NzJlOTc3YmFjYi4uNDdjY2JhOTUyNjhkMzEz
OTVmOWNhZDgzMDQzMTUyYmRhMDNiZGFiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTMgQEAKKzIwMTAtMTAtMjEgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGVjb3VwbGUgU2Ny
aXB0QXJndW1lbnRzIGZyb20gU2NyaXB0Q2FsbFN0YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODA1OAorCisgICAgICAgIFNjcmlwdENhbGxGcmFt
ZSBhbmQgU2NyaXB0Q2FsbFN0YWNrIGFyZSBub3cgdGhlIHNhbWUgZm9yIGJvdGggSlNDIGFuZCBW
OC4KKyAgICAgICAgVGhlIGZhY3RvcnkgZnVuY3Rpb25zIHRoYXQgYWxsb3cgdG8gY3JlYXRlIFNj
cmlwdENhbGxTdGFjayBmcm9tIFZNLXNwZWNpZmljCisgICAgICAgIG9iamVjdHMgYXJlIGRlZmlu
ZWQgaW4gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAuCisKKyAgICAgICAgU2NyaXB0QXJndW1l
bnRzIGNsYXNzIGlzIHVzZWQgZm9yIHBhc3NpbmcgYXJndW1lbnRzIGZyb20gSlMgY29kZSB0byB0
aGUgbmF0aXZlCisgICAgICAgIHBhcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJl
ZmFjdG9yaW5nIGlzIGNvdmVyZWQgd2l0aCBleGlzdGluZyBDb25zb2xlIHRlc3RzLgorCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmg6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0
YWNrVHJhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxG
cmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1l
Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b1NjcmlwdENhbGxGcmFtZXNWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRp
b25zKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhDb25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGVNZXNz
YWdlOjpoYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmRpc3Bh
dGNoTm93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhD
b25zb2xlOjphc3NlcnRDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmlzRXF1YWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6c3RhcnRHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEFyZ3VtZW50czo6Z2xvYmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QXJndW1lbnRzOjppc0VxdWFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2Ny
aXB0QXJndW1lbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRz
Ojphcmd1bWVudENvdW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxsRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjppc0VxdWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDYWxsRnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxs
RnJhbWU6OmxpbmVOdW1iZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2Fs
bFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6flNjcmlwdENhbGxT
dGFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmF0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDYWxsU3RhY2s6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNr
OjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpk
ZWJ1Zyk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjplcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpDb25zb2xlOjppbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmxvZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29s
ZTo6ZGlyeG1sKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRyYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OmFzc2VydENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjptYXJrVGltZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb25zb2xlOjpwcm9maWxlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z3JvdXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6Z3JvdXBDb2xsYXBzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6
c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
Ondhcm4pOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5oOgorCiAyMDEwLTEwLTIwICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNzA1YTQzMDY3YzQ3OGUzMzYzOTAzY2FjZDNjZDM0NzlhZDcy
NTlhZi4uMGE3OGQ5ZTUxM2I2YmI2MmNiM2FkNjlmMGFiNmVlYWI1NzcwNjQzNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY5
OSwxMCArNjk5LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAnLAotICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlckd0ay5jcHAnLApAQCAtODY5LDEw
ICs4NjUsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
cmlwdENhbGxTdGFjay5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxT
dGFjay5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAnLApAQCAtMTk1Myw2ICsxOTQ3LDEyIEBA
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVu
dHMuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCcsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVu
ZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViYzQ0MGJiZDFhNjI0
MzAyYjA5MWIxNTJlNWE2MDA2NGI0ZTZmMWQuLjg3ZDg5Mjg4NTQxNjE5NjU0NWY1OTY5NjI0MmIw
ZDJkZTAzYjNmNDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NDU5LDYgKzU0NTksMTAgQEAKIAkJRjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIElu
amVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi87
IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkUxMTE5ODA1
OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07CiAJCUYzNzVDQzA3MTE1MEQzMDAw
MDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIElu
c3BlY3RvcldvcmtlclJlc291cmNlLmggKi87IH07CisJCUYzOTIyNDlDMTI2RjExQUUwMEE5MjZE
OSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOTIyNDlBMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcCAqLzsgfTsKKwkJRjM5MjI0OUQxMjZGMTFBRTAwQTkyNkQ5IC8q
IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmggKi87IH07CisJCUYzOUJFOTVCMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRB
cmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi87IH07
CisJCUYzOUJFOTVDMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOUJFOTVBMTI2NzNCRjQw
MEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLzsgfTsKIAkJRjNENDYxNDgxMTYxRDUzMjAw
Q0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkg
LyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCAqLzsgfTsKIAkJRjNENDYxNDkxMTYx
RDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNENDYxNDcxMTYxRDUzMjAwQ0Ew
RDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovOyB9OwogCQlGNEVBRjRBRTEw
Qzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8q
IE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsgfTsKQEAgLTExNDg1LDYgKzExNDg5LDEwIEBACiAJ
CUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlw
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERC
ODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzOTIyNDlCMTI2
RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3Vt
ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcmd1
bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzlCRTk1QTEyNjczQkY0
MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
M0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ3MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RUFGNEFDMTBDNzQyQjEwMDkxMDBEMyAvKiBP
cGVuVHlwZVNhbml0aXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBPcGVuVHlwZVNhbml0aXplci5jcHA7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVNhbml0aXpl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI1Niw4ICsxMjI2NCwxNCBA
QAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJj
ZS5oICovLAogCQkJCTFDODFCQTA1MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3Ry
aW5ncy5qcyAqLywKKwkJCQlGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1l
bnRzLmNwcCAqLywKKwkJCQlGMzlCRTk1QTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1l
bnRzLmggKi8sCiAJCQkJMjAwQjE5MDgxMUMyNzdEOTAwRENDRDNBIC8qIFNjcmlwdEJyZWFrcG9p
bnQuY3BwICovLAogCQkJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3Bv
aW50LmggKi8sCisJCQkJNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFt
ZS5jcHAgKi8sCisJCQkJNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFt
ZS5oICovLAorCQkJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2su
Y3BwICovLAorCQkJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2su
aCAqLywKIAkJCQk3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5l
ci5oICovLAogCQkJCTlGQTM3RUVGMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlLmlk
bCAqLywKIAkJCQk5RkEzN0VGMDExNzJGRDQxMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUu
aWRsICovLApAQCAtMTY3NzMsMTAgKzE2Nzg3LDggQEAKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBC
NzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4
NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi8sCiAJCQkJNDFGMUQyMUQwRUYzNUMy
QTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovLAotCQkJCTQxNkU3NUNBMEVE
RjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAotCQkJCTQxNkU3NUM5MEVE
RjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKLQkJCQk0MTZFNzVCRDBFREY4
RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKLQkJCQk0MTZFNzVCQzBFREY4
RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCisJCQkJRjM5MjI0OUExMjZGMTFB
RTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAorCQkJCUYzOTIyNDlC
MTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCiAJCQkJOTNC
NzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTkz
QjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJQTgz
RTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gKi8sCkBAIC0y
MDU1Miw2ICsyMDU2NCw3IEBACiAJCQkJMUNFRkM5QjkwRDc4REM4QzAwN0QyNTc5IC8qIFNjaGVk
dWxlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MkM3RjUxMUY3N0VGQjAwNjEyRUZFIC8q
IFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFCRTBDMjc0REFDMDA5
RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzlCRTk1QzEyNjczQkY0MDBF
MEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODREODJDMTEx
RDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTEyNiw2ICsyMTEzOSw3IEBACiAJCQkJ
MDgxQ0RGQjkxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFDREZCQTEyNkVDRkRCMDBEMjE1Q0EgLyog
RGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MUNE
RkJGMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGMzkyMjQ5RDEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDg4QTBFMDUxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjMxNzksNiArMjMxOTMsNyBA
QAogCQkJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjM5QkU5NUIxMjY3M0JGNDAw
RTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyMDBCMTkw
OTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxNkU3NUNDMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRD
YWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMzY4Nyw2ICsyMzcwMiw3IEBACiAJCQkJ
OTcyOEMzMTMxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzOTIyNDlDMTI2RjExQUUwMEE5MjZEOSAvKiBT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCmluZGV4IDZiZWY0ZjdhYmVkYTNmMTExNDk0MzgwZTFmYzYyMmJiMDZmMWYzNTYu
LmNlNDM1MTYyYjEwMTQ2NzYzODI5YmIyNzQ3OTE3ZGNlMTY4OTM4YjEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgU2NyaXB0U3RhdGVQcm90ZWN0
ZWRQdHIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIFNjcmlwdFN0YXRlUHJv
dGVjdGVkUHRyKCkgeyB9CiAgICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKSA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpIHsgfQotICAgIFNjcmlwdFN0YXRlKiBnZXQoKQorICAgIFNjcmlwdFN0YXRlKiBn
ZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fZ2xvYmFsT2JqZWN0KQogICAgICAgICAg
ICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwYjU2ZjEzZDdkOWExZjUwMzdiZDBl
OWZiMjFhYmM0OTE0M2MxOGFlLi4yM2RiOTU3OGY4N2YwZGNkYjgwZDg4NWZhYjdmZTM2YWQyY2Ji
MDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTE5NjYsOCArMTk2NiwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICBteSAkaGFzT3B0aW9uYWxBcmd1bWVudHMgPSAwOwogCiAgICAgICAgICAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCAkbnVtUGFy
YW1ldGVycyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3Jp
cHRBcmd1bWVudHMoZXhlYywgJG51bVBhcmFtZXRlcnMpKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGlt
cC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENh
bGxTdGFja1NpemVUb0NhcHR1cmUgOiAxO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2so
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSkpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRBcmd1bWVudHMuaCJ9ID0gMTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5o
In0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwpAQCAtMjM1Nyw4ICsyMzYxLDggQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7
CiAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OwotICAgICAg
ICArKyRwYXJhbUluZGV4OwotICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiZjYWxsU3RhY2si
OworICAgICAgICAkcGFyYW1JbmRleCArPSAyOworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0g
InNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkiOwogICAgIH0K
IAogICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDc1MWUzNTA0MTMxODU4NzUx
NDUzMWYxMTkxNzEyOWZjNzA3YzViYTQuLjBjNzllNjQxMmZkMDA1OTcwOTZjMDY5YzA0NGVmZGU0
YTNkMGI5NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtMTMwNCwxMSArMTMwNCwxNSBAQCBFTkQKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGFyZ3MsICRudW1Q
YXJhbWV0ZXJzKSk7CisgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRz
KGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAkbnVtUGFyYW1ldGVycykpOworICAgIHNpemVf
dCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2Ny
aXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTsKKyAgICBPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKG1heFN0YWNr
U2l6ZSkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogRU5ECisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAx
OwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2suaCJ9ID0gMTsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAxOwogICAgIH0K
ICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTVkdD
aGVja1NlY3VyaXR5RG9jdW1lbnQifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCA8PEVORCk7CkBAIC0yNzE5LDggKzI3MjMsOCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxT
dHJpbmcoKQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CiAgICAgICAgICRmdW5jdGlvblN0cmlu
ZyAuPSAiLCAiIGlmICRpbmRleDsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJjYWxsU3Rh
Y2suZ2V0KCkiOwotICAgICAgICAkaW5kZXgrKzsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49
ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpIjsKKyAgICAg
ICAgJGluZGV4ICs9IDI7CiAgICAgfQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVlZHNVc2VyR2VzdHVyZUNoZWNrIn0pIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
Zjc3ZDRhODUyMjU1MWI4Njg3ODZjMjQ2YWFkMWU5MzA2NzlhYjIyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKLQotI2luY2x1ZGUg
IktVUkwuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAg
ICBjbGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBT
Y3JpcHRWYWx1ZTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmV0cmlldmluZyBsaW5lIG51
bWJlciBhbmQgc291cmNlIFVSTCBhbmQgc3RvcmluZyBoZXJlCi0gICAgLy8gZm9yIGFsbCBjYWxs
IGZyYW1lcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1Nj4gYW5kCi0gICAgLy8gPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4MD4KLSAgICBjbGFzcyBTY3JpcHRD
YWxsRnJhbWUgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVt
YmVyLCBjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwot
ICAgICAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcik7Ci0gICAgICAgIH5TY3JpcHRDYWxs
RnJhbWUoKTsKLQotICAgICAgICBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQotCi0gICAgICAgIC8vIGFyZ3Vt
ZW50IHJldHJpZXZhbCBtZXRob2RzCi0gICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVu
dEF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKLQotICAgICAgICBWZWN0b3I8U2NyaXB0VmFs
dWU+IG1fYXJndW1lbnRzOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFNjcmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2su
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThlNTE5NWVlM2RmZjI4NzIwYmRlMjc4
NWNhM2I3YzIwZTRmNDNiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCisrKyAvZGV2L251
bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCi0jZGVm
aW5lIFNjcmlwdENhbGxTdGFja19oCi0KLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgdjggewotICAgIGNsYXNzIEFyZ3VtZW50czsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLQotY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgaW50IG1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmU7Ci0gICAgc3RhdGljIGNvbnN0IHY4OjpTdGFja1RyYWNlOjpTdGFja1Ry
YWNlT3B0aW9ucyBzdGFja1RyYWNlT3B0aW9uczsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gY3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lw
QXJndW1lbnRDb3VudCA9IDAsIGludCBmcmFtQ291bnRMaW1pdCA9IDEpOwotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFNjcmlwdFN0YXRlKiwgdjg6OkhhbmRs
ZTx2ODo6U3RhY2tUcmFjZT4pOwotICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKLQotICAgIC8vIFJl
dHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gcnVubmluZyBKYXZhU2NyaXB0IG9yIGlmIGZldGNo
aW5nIHRoZSBzdGFjayBmYWlsZWQuCi0gICAgLy8gU2V0cyBzdGFja1RyYWNlIHRvIGJlIGFuIGFy
cmF5IG9mIHN0YWNrIGZyYW1lIG9iamVjdHMuCi0gICAgLy8gQSBzdGFjayBmcmFtZSBvYmplY3Qg
bG9va3MgbGlrZToKLSAgICAvLyB7Ci0gICAgLy8gICBzY3JpcHROYW1lOiA8ZmlsZSBuYW1lIGZv
ciB0aGUgYXNzb2NpYXRlZCBzY3JpcHQgcmVzb3VyY2U+Ci0gICAgLy8gICBmdW5jdGlvbk5hbWU6
IDxuYW1lIG9mIHRoZSBKYXZhU2NyaXB0IGZ1bmN0aW9uPgotICAgIC8vICAgbGluZU51bWJlcjog
PDEgYmFzZWQgbGluZSBudW1iZXI+Ci0gICAgLy8gICBjb2x1bW46IDwxIGJhc2VkIGNvbHVtbiBv
ZmZzZXQgb24gdGhlIGxpbmU+Ci0gICAgLy8gfQotICAgIHN0YXRpYyBib29sIHN0YWNrVHJhY2Uo
aW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0YWNrVHJhY2Up
OwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBhdCh1bnNpZ25lZCk7Ci0gICAgdW5zaWdu
ZWQgc2l6ZSgpOwotCi0gICAgU2NyaXB0U3RhdGUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JpcHRTdGF0ZTsgfQotICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0U3RhdGU7IH0KLQotcHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2soU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9wRnJh
bWUsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKTsK
LSAgICBTY3JpcHRDYWxsU3RhY2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxl
PHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKTsKLQotICAgIE93blB0cjxTY3JpcHRDYWxsRnJh
bWU+IG1fdG9wRnJhbWU7Ci0gICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7Ci0gICAgVmVj
dG9yPE93blB0cjxTY3JpcHRDYWxsRnJhbWU+ID4gbV9zY3JpcHRDYWxsRnJhbWVzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQ5MDRhNGU2NWZkZTlj
YjNiZjQzYmJhNTRhNWIxOGQyYWY3ODJkMTAuLmZhMzdjMzhiN2M4ZGNhYzU2MTgzMmNhMWU3NjUw
NGI5MjA0NzczNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTQ2OCw3
ICs0NjksNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoYm9vbCkK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJl
Q2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGJvb2wgdmFsdWUpCiB7Ci0gICAgdjg6OlY4
OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0
Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBTY3JpcHRDYWxsU3RhY2s6OnN0
YWNrVHJhY2VPcHRpb25zKTsKKyAgICB2ODo6Vjg6OlNldENhcHR1cmVTdGFja1RyYWNlRm9yVW5j
YXVnaHRFeGNlcHRpb25zKHZhbHVlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVU
b0NhcHR1cmUsIHN0YWNrVHJhY2VPcHRpb25zKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmgKaW5kZXggY2UzNTBkYTQyZDY0NTRlMzRmZDFkY2ZmMGVkMDg4MDQ3NDBiYTNj
NS4uMTE4MTNiMDllZDNhNmIwNGVjODQ0OTA5ZTA5ZjE3OWQ5Mjc4NjBmYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0U3RhdGUuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2NvbnRleHQuQ2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBTY3JpcHRTdGF0ZSogZ2V0
KCkgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQorICAgIFNjcmlwdFN0YXRlKiBnZXQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiBwcml2YXRlOgogICAgIFNjcmlwdFN0YXRlKiBt
X3NjcmlwdFN0YXRlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA4YjZiYjE3ODZh
ODVjNzliY2YwMmZkZGU4NTQxNjUxN2QxZDFhODczLi40MGY5YTdhYjU2YjA3M2RiMTQ1YmE4Njhi
ZmUzOWI1YjU3YWQyYWRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJPd25QdHIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIApAQCAtMTE3LDE4ICsxMTgsMTcgQEAgdm9pZCBWOENvbnNvbGVNZXNzYWdlOjpoYW5kbGVy
KHY4OjpIYW5kbGU8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UsIHY4OjpIYW5kbGU8djg6OlYKICAgICAv
LyBDdXJyZW50bHkgc3RhY2sgdHJhY2UgaXMgb25seSBjb2xsZWN0ZWQgd2hlbiBpbnNwZWN0b3Ig
aXMgb3Blbi4KICAgICBpZiAoIXN0YWNrVHJhY2UuSXNFbXB0eSgpICYmIHN0YWNrVHJhY2UtPkdl
dEZyYW1lQ291bnQoKSA+IDApIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKTsKLSAgICAgICAgU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgIGNh
bGxTdGFjayA9IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBzdGFja1RyYWNl
KTsKKyAgICAgICAgY2FsbFN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGNvbnRleHQsIHN0
YWNrVHJhY2UsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAg
ICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc291cmNlTmFtZSA9IG1lc3NhZ2Ut
PkdldFNjcmlwdFJlc291cmNlTmFtZSgpOwogICAgIGJvb2wgdXNlVVJMID0gcmVzb3VyY2VOYW1l
LklzRW1wdHkoKSB8fCAhcmVzb3VyY2VOYW1lLT5Jc1N0cmluZygpOwogICAgIFN0cmluZyByZXNv
dXJjZU5hbWVTdHJpbmcgPSB1c2VVUkwgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkgOiB0b1dl
YkNvcmVTdHJpbmcocmVzb3VyY2VOYW1lKTsKICAgICBWOENvbnNvbGVNZXNzYWdlIGNvbnNvbGVN
ZXNzYWdlKGVycm9yTWVzc2FnZSwgcmVzb3VyY2VOYW1lU3RyaW5nLCBtZXNzYWdlLT5HZXRMaW5l
TnVtYmVyKCkpOwotICAgIGNvbnNvbGVNZXNzYWdlLmRpc3BhdGNoTm93KHBhZ2UsIGNhbGxTdGFj
ay5nZXQoKSk7CisgICAgY29uc29sZU1lc3NhZ2UuZGlzcGF0Y2hOb3cocGFnZSwgY2FsbFN0YWNr
LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgVjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3coUGFn
ZSogcGFnZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIFY4Q29uc29sZU1lc3Nh
Z2U6OmRpc3BhdGNoTm93KFBhZ2UqIHBhZ2UsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2spCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25z
b2xlTWVzc2FnZS5oCmluZGV4IDM4N2I1ZWUzNGI1NjhlNjgzZjRjZTdlZWFlZjE0YzI2YjE1Njdl
NTMuLjZiODkyZGQyNmIzMzQ0NTg2NjQ3OWIxNmIzZTlhZjJmYWMxYWJiMTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTgxLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJp
bmcgbV9zb3VyY2VJRDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbV9saW5lTnVtYmVyOwogCi0g
ICAgICAgIHZvaWQgZGlzcGF0Y2hOb3coUGFnZSosIFNjcmlwdENhbGxTdGFjayopOworICAgICAg
ICB2b2lkIGRpc3BhdGNoTm93KFBhZ2UqLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwog
CiAgICAgICAgIC8vIEFsbCBkZWxheWVkIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdGhpcyB2ZWN0
b3IuIElmIHRoZSB2ZWN0b3IKICAgICAgICAgLy8gaXMgMCwgdGhlcmUgYXJlIG5vIGRlbGF5ZWQg
bWVzc2FnZXMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNv
bGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9t
LmNwcAppbmRleCBmYzgzYjYxZDVmNDJmMTdjZjgzMGUyZTAyNGEyYTZjNjBiMjI2YjA0Li5lNTg1
Y2M4MGFjNGUwMmE3NzdjY2JiM2UwMTUxYjdhZGExNjZjNzdiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKICNp
bmNsdWRlICJWOENvbnNvbGUuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJT
Y3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKQEAgLTYyLDExICs2
NCw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db25zb2xlLnRy
YWNlQ2FsbGJhY2siKTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICBTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwotICAgIHY4OjpM
b2NhbDx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSA9IHY4OjpTdGFja1RyYWNlOjpDdXJyZW50
U3RhY2tUcmFjZShTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIFNj
cmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZU9wdGlvbnMpOwotICAgIE93blB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgc3Rh
Y2tUcmFjZSkpOwotICAgIGltcC0+dHJhY2UoY2FsbFN0YWNrLmdldCgpKTsKKyAgICBPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkpOworICAgIE93blB0cjxTY3JpcHRB
cmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJncywgMCkp
OworICAgIGltcC0+dHJhY2Uoc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJl
bGVhc2UoKSk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQogCkBAIC03
NCw5ICs3NCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNv
bnNvbGUuYXNzZXJ0Q2FsbGJhY2siKTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjayhTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShhcmdzLCAxLCBTY3JpcHRDYWxsU3RhY2s6Om1h
eENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0
YWNrU2l6ZVRvQ2FwdHVyZSkpOwogICAgIGJvb2wgY29uZGl0aW9uID0gYXJnc1swXS0+Qm9vbGVh
blZhbHVlKCk7Ci0gICAgaW1wLT5hc3NlcnRDb25kaXRpb24oY29uZGl0aW9uLCBjYWxsU3RhY2su
Z2V0KCkpOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVh
dGVTY3JpcHRBcmd1bWVudHMoYXJncywgMSkpOworICAgIGltcC0+YXNzZXJ0Q29uZGl0aW9uKGNv
bmRpdGlvbiwgc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7
CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNjc5MzBjZDZlZWM5MDI2Y2JkNTI4Mjg5ZGY0Yzg3ZDlj
MWQ0NzY2MS4uNWMwZmIzODU0NGZiMzRiN2VmMjExMDEzMTAyOTcwMDQ5MTE3ZTg5MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzMsNDYgKzMzLDE0IEBACiAKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OkNhbGxGcmFtZShjb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIGZyYW1lKQotICAgIDogbV9mdW5jdGlvbk5hbWUoZnJhbWUuZnVuY3Rpb25O
YW1lKCkpCi0gICAgLCBtX3NvdXJjZVVSTChmcmFtZS5zb3VyY2VVUkwoKSkKLSAgICAsIG1fbGlu
ZU51bWJlcihmcmFtZS5saW5lTnVtYmVyKCkpCi17Ci19Ci0KLUNvbnNvbGVNZXNzYWdlOjpDYWxs
RnJhbWU6OkNhbGxGcmFtZSgpCi0gICAgOiBtX2xpbmVOdW1iZXIoMCkKLXsKLX0KLQotYm9vbCBD
b25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjppc0VxdWFsKGNvbnN0IENvbnNvbGVNZXNzYWdlOjpD
YWxsRnJhbWUmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnVuY3Rpb25OYW1lID09IG8ubV9m
dW5jdGlvbk5hbWUKLSAgICAgICAgJiYgbV9zb3VyY2VVUkwgPT0gby5tX3NvdXJjZVVSTAotICAg
ICAgICAmJiBtX2xpbmVOdW1iZXIgPT0gby5tX2xpbmVOdW1iZXI7Ci19Ci0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IENvbnNvbGVNZXNzYWdlOjpD
YWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBmcmFtZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZnJh
bWUtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgbV9mdW5jdGlvbk5hbWUpOwotICAgIGZyYW1l
LT5zZXRTdHJpbmcoInNvdXJjZVVSTCIsIG1fc291cmNlVVJMKTsKLSAgICBmcmFtZS0+c2V0TnVt
YmVyKCJsaW5lTnVtYmVyIiwgbV9saW5lTnVtYmVyKTsKLSAgICByZXR1cm4gZnJhbWU7Ci19Ci0j
ZW5kaWYKLQogQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugcywg
TWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQg
bGksIGNvbnN0IFN0cmluZyYgdSwgdW5zaWduZWQgZykKICAgICA6IG1fc291cmNlKHMpCiAgICAg
LCBtX3R5cGUodCkKQEAgLTg1LDM1ICs1MywyNiBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgYwog
ewogfQogCi1Db25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBN
ZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaywgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNlKQorQ29uc29sZU1l
c3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVz
c2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+
IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWdu
ZWQgZykKICAgICA6IG1fc291cmNlKHMpCiAgICAgLCBtX3R5cGUodCkKICAgICAsIG1fbGV2ZWwo
bCkKICAgICAsIG1fbWVzc2FnZShtKQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgLCBtX2Fy
Z3VtZW50cyhjYWxsU3RhY2stPmF0KDApLmFyZ3VtZW50Q291bnQoKSkKLSAgICAsIG1fc2NyaXB0
U3RhdGUoY2FsbFN0YWNrLT5nbG9iYWxTdGF0ZSgpKQotI2VuZGlmCi0gICAgLCBtX2ZyYW1lcyhz
dG9yZVRyYWNlID8gY2FsbFN0YWNrLT5zaXplKCkgOiAwKQorICAgICwgbV9hcmd1bWVudHMoYXJn
dW1lbnRzKQorICAgICwgbV9jYWxsU3RhY2soY2FsbFN0YWNrKQogICAgICwgbV9ncm91cExldmVs
KGcpCiAgICAgLCBtX3JlcGVhdENvdW50KDEpCiB7Ci0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1l
JiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAgICBjb25zdCBTY3JpcHRDYWxsRnJh
bWUmIGxhc3RDYWxsZXIgPSBtX2NhbGxTdGFjay0+YXQoMCk7CiAgICAgbV9saW5lID0gbGFzdENh
bGxlci5saW5lTnVtYmVyKCk7CiAgICAgbV91cmwgPSBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpOwog
Ci0gICAgaWYgKHN0b3JlVHJhY2UpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNhbGxTdGFjay0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lc1tpXSA9IENvbnNv
bGVNZXNzYWdlOjpDYWxsRnJhbWUoY2FsbFN0YWNrLT5hdChpKSk7Ci0gICAgfQogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5h
cmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgbV9hcmd1bWVudHNbaV0gPSBsYXN0Q2FsbGVy
LmFyZ3VtZW50QXQoaSk7Ci0jZW5kaWYKKyAgICBib29sIHN0b3JlVHJhY2UgPSAodCA9PSBUcmFj
ZU1lc3NhZ2VUeXBlIHx8IHQgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSB8fCB0ID09
IEFzc2VydE1lc3NhZ2VUeXBlKTsKKyAgICBpZiAoIXN0b3JlVHJhY2UpCisgICAgICAgIG1fY2Fs
bFN0YWNrLmNsZWFyKCk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBDb25zb2xl
TWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVj
dGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGpzb25PYmogPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTI1LDEy
ICs4NCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25PYmotPnNldE51bWJl
cigiZ3JvdXBMZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNv
bk9iai0+c2V0TnVtYmVyKCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGludD4obV9yZXBlYXRD
b3VudCkpOwogICAgIGpzb25PYmotPnNldFN0cmluZygibWVzc2FnZSIsIG1fbWVzc2FnZSk7Ci0g
ICAgaWYgKCFtX2FyZ3VtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1f
c2NyaXB0U3RhdGUuZ2V0KCkpOworICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xv
YmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25BcmdzID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1f
YXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fy
Z3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEZvckNv
bnNvbGUobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkpOwogICAgICAgICAgICAgICAgIGlmICgh
aW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MCwxMiArOTksOCBAQCB2b2lk
IENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgICAgICAgICAganNvbk9iai0+c2V0QXJyYXkoInBhcmFt
ZXRlcnMiLCBqc29uQXJncyk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFtX2ZyYW1lcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBmcmFtZXMgPSBJbnNw
ZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2ZyYW1lcy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGZyYW1lcy0+cHVzaE9iamVjdChtX2Zy
YW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKLSAgICAgICAganNvbk9iai0+c2V0
QXJyYXkoInN0YWNrVHJhY2UiLCBmcmFtZXMpOwotICAgIH0KKyAgICBpZiAobV9jYWxsU3RhY2sp
CisgICAgICAgIGpzb25PYmotPnNldEFycmF5KCJzdGFja1RyYWNlIiwgbV9jYWxsU3RhY2stPmJ1
aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIGZyb250ZW5kLT5hZGRDb25zb2xlTWVzc2FnZShq
c29uT2JqKTsKIH0KIApAQCAtMTUzLDMyICsxMDgsMjAgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6
dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQog
ewogICAgIGZyb250ZW5kLT51cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KG1fcmVwZWF0
Q291bnQpOwogfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKIGJvb2wgQ29uc29sZU1l
c3NhZ2U6OmlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3QKIHsKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChtc2ctPm1fYXJndW1lbnRzLnNpemUoKSAhPSBtX2FyZ3VtZW50
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1zZy0+bV9zY3JpcHRT
dGF0ZS5nZXQoKSAmJiBtc2ctPm1fYXJndW1lbnRzLnNpemUoKSkgewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KCFtX2FyZ3VtZW50c1tpXS5pc0VxdWFsKG1zZy0+bV9zY3JpcHRTdGF0ZS5nZXQoKSwgbXNnLT5t
X2FyZ3VtZW50c1tpXSkpCisgICAgaWYgKG1fYXJndW1lbnRzKSB7CisgICAgICAgIGlmICghbV9h
cmd1bWVudHMtPmlzRXF1YWwobXNnLT5tX2FyZ3VtZW50cy5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLSAgICBz
aXplX3QgZnJhbWVDb3VudCA9IG1zZy0+bV9mcmFtZXMuc2l6ZSgpOwotICAgIGlmIChmcmFtZUNv
dW50ICE9IG1fZnJhbWVzLnNpemUoKSkKKyAgICB9IGVsc2UgaWYgKG1zZy0+bV9hcmd1bWVudHMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJh
bWVDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghbV9mcmFtZXNbaV0uaXNFcXVhbChtc2ctPm1f
ZnJhbWVzW2ldKSkKKyAgICBpZiAobV9jYWxsU3RhY2spIHsKKyAgICAgICAgaWYgKCFtX2NhbGxT
dGFjay0+aXNFcXVhbChtc2ctPm1fY2FsbFN0YWNrLmdldCgpKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CisgICAgfSBlbHNlIGlmIChtc2ctPm1fY2FsbFN0YWNrKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbXNnLT5tX3NvdXJjZSA9PSBtX3NvdXJjZQog
ICAgICAgICAmJiBtc2ctPm1fdHlwZSA9PSBtX3R5cGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5oCmluZGV4IDZjM2YyYzcyNjg0MjBkY2RmZjFjMmMxYTY5MTA0MjI2NTU2ZTgwOTQuLjIzNzIw
YmY3ZTc4ZmE4MGFlMjE3NmRkZWIxYzg4ZGJiZWMzN2Q4NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNiBAQAogI2RlZmluZSBDb25zb2xlTWVzc2FnZV9o
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgU2NyaXB0QXJn
dW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwog
Y2xhc3MgU2NyaXB0VmFsdWU7CkBAIC00OCwxMiArNDgsMTAgQEAgY2xhc3MgU2NyaXB0VmFsdWU7
CiBjbGFzcyBDb25zb2xlTWVzc2FnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAg
ICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1LCB1bnNpZ25l
ZCBnKTsKLSAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFNjcmlwdENhbGxTdGFjayosIHVuc2lnbmVkIGcs
IGJvb2wgc3RvcmVUcmFjZSA9IGZhbHNlKTsKKyAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+LCB1bnNpZ25l
ZCBnKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgdm9pZCBhZGRUb0Zyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKiwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAgdm9pZCB1cGRhdGVS
ZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwotI2VuZGlm
CiAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKyttX3JlcGVhdENvdW50OyB9CiAgICAgYm9v
bCBpc0VxdWFsKENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0OwogCkBAIC02MSwzMCArNTksMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVzc2FnZTsgfQogCiBwcml2YXRlOgotICAgIGNsYXNzIENhbGxGcmFtZSB7Ci0gICAgcHVibGlj
OgotICAgICAgICBleHBsaWNpdCBDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFt
ZSk7Ci0gICAgICAgIENhbGxGcmFtZSgpOwotICAgICAgICBib29sIGlzRXF1YWwoY29uc3QgQ2Fs
bEZyYW1lJiBvKSBjb25zdDsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKLSNlbmRp
ZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgICAg
ICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKLSAg
ICB9OwotCiAgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBNZXNzYWdlVHlwZSBtX3R5
cGU7CiAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7
Ci0gICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsKLSNlbmRpZgotICAg
IFZlY3RvcjxDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+
IG1fYXJndW1lbnRzOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fY2FsbFN0YWNrOwog
ICAgIHVuc2lnbmVkIG1fbGluZTsKICAgICBTdHJpbmcgbV91cmw7CiAgICAgdW5zaWduZWQgbV9n
cm91cExldmVsOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRl
eCBmOTlkNDg3M2Y3NzdlYjI4ZTM0NTRlNTJjZGYzNTczZjMzMzdhM2ZjLi5iMTk1YzM4MDFhN2Q5
NWFmMGIyM2Q3OGE2MmNiN2M3YTlmNjg1OGEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKQEAgLTMzOSwxMyArMzQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIG1f
Y29uc29sZU1lc3NhZ2VzW2ldLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCksIG1faW5q
ZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewog
ICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN0b3JlU3Rh
Y2tUcmFjZSA9IHR5cGUgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0eXBlID09IFVuY2F1Z2h0RXhj
ZXB0aW9uTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBBc3NlcnRNZXNzYWdlVHlwZTsKLSAgICBhZGRD
b25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwsIHN0b3JlU3RhY2tUcmFjZSkpOworICAgIGFk
ZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCkBA
IC0zOTEsMTEgKzM5MSwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29s
ZU1lc3NhZ2VzKCkKICAgICAgICAgbV9mcm9udGVuZC0+Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBi
b29sIGNvbGxhcHNlZCkKIHsKICAgICArK21fZ3JvdXBMZXZlbDsKIAotICAgIGFkZENvbnNvbGVN
ZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBD
b2xsYXBzZWRNZXNzYWdlVHlwZSA6IFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxl
dmVsLCBTdHJpbmcoKSwgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBjb2xsYXBzZWQgPyBT
dGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmRHcm91cChNZXNzYWdlU291cmNlIHNv
dXJjZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNmQ0ZDllMDI3MDkxZmEyOGEx
YWI5OTVkNTk3OTVjMDczYmE0YzI0NC4uNjhhYTE0N2I0NTE0ZjExYTQyNGM1ZWExODkyZGM4ZDQ3
ZjJkZGRkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODEs
NiArODEsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTY3JpcHRBcmd1bWVu
dHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRQcm9maWxlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwpAQCAtMTQ1LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9udGVuZCgpOwogCiAgICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3Rh
Y2sqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwor
ICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwogICAgIGNvbnN0IFZl
Y3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4mIGNvbnNvbGVNZXNzYWdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc29sZU1lc3NhZ2VzOyB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBib29sIHN0
b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlJiBlbGFwc2VkKTsKIAotICAgIHZv
aWQgc3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
RnJhbWUsIGJvb2wgY29sbGFwc2VkID0gZmFsc2UpOworICAgIHZvaWQgc3RhcnRHcm91cChQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
RnJhbWUsIGJvb2wgY29sbGFwc2VkID0gZmFsc2UpOwogICAgIHZvaWQgZW5kR3JvdXAoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKIAogICAgIHZvaWQgbWFya1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5jcHAKaW5kZXggMmQ0Y2M5ODhhNWQ4Njk2MTU2NTYzOGNiN2Y4NzFkMjAwZTNlZjEyOS4uN2Rk
ODVhNmYyMmIwYmEyYzYxNTNhMTNiMWQ4NGFkM2RmY2VkNGQzMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZXIuaCIKQEAgLTc3LDE5ICs3OCw2IEBAIHN0YXRpYyB2b2lkIHByaW50U291cmNlVVJM
QW5kTGluZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlcikKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lLCBTdHJpbmcm
IHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCA9IGZhbHNlKQotewotICAgIGlm
ICghY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gY2FsbEZyYW1lLmFyZ3VtZW50QXQoMCk7Ci0g
ICAgaWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1
ZS5pc1VuZGVmaW5lZCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0g
dmFsdWUudG9TdHJpbmcoc2NyaXB0U3RhdGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0
aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIGNvbnN0IGNoYXIqIHNvdXJjZVN0cmlu
ZzsKQEAgLTE0NCw3ICsxMzIsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291cmNlQW5k
TGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbAogICAgIHByaW50
ZigiJXMgJXM6Iiwgc291cmNlU3RyaW5nLCBsZXZlbFN0cmluZyk7CiB9CiAKLXZvaWQgQ29uc29s
ZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykK
K3ZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGFkZE1lc3Nh
Z2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCAw
KTsKK30KKwordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xNTUsNyArMTQ4LDcgQEAgdm9pZCBDb25zb2xl
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNz
YWdlTGV2ZWwgbGUKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGNhbGxTdGFjaywgbWVzc2FnZSk7CisgICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOwogICAgIGVsc2UKICAgICAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAjZW5kaWYKQEAgLTE2OSw3
ICsxNjIsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZQogICAgIHByaW50ZigiICVzXG4iLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50cykKK3ZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiBhcmd1bWVudHMsICBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
LCBib29sIGFjY2VwdE5vQXJndW1lbnRzKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTc3LDE1ICsxNzAsMTUgQEAgdm9pZCBDb25zb2xlOjph
ZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgU2NyaXB0Q2Fs
bFN0YWNrKgogCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0
YWNrLT5hdCgwKTsKIAotICAgIGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWxhc3RDYWxsZXIu
YXJndW1lbnRDb3VudCgpKQorICAgIGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWFyZ3VtZW50
cy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2Fn
ZTsKLSAgICBpZiAoZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwg
bGFzdENhbGxlciwgbWVzc2FnZSkpCisgICAgaWYgKGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVu
dEFzU3RyaW5nKG1lc3NhZ2UpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
bGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0YWNrLCBt
ZXNzYWdlKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0
YWNrKTsKICNlbmRpZgogCiAgICAgaWYgKCFDb25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMo
KSkKQEAgLTE5NCw0OSArMTg3LDQ5IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayoKICAgICBwcmlu
dFNvdXJjZVVSTEFuZExpbmUobGFzdENhbGxlci5zb3VyY2VVUkwoKSwgMCk7CiAgICAgcHJpbnRN
ZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoSlNNZXNzYWdlU291cmNlLCBsZXZlbCk7CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVudENvdW50KCk7ICsr
aSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZzsKLSAgICAgICAgaWYgKGxh
c3RDYWxsZXIuYXJndW1lbnRBdChpKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBhcmdB
c1N0cmluZykpCisgICAgICAgIGlmIChhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkuZ2V0U3RyaW5n
KGFyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSwgYXJnQXNTdHJpbmcpKQogICAgICAgICAgICAgcHJp
bnRmKCIgJXMiLCBhcmdBc1N0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAgICAgcHJpbnRm
KCJcbiIpOwogfQogCi12b2lkIENvbnNvbGU6OmRlYnVnKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQordm9pZCBDb25zb2xlOjpkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIC8v
IEluIEZpcmVidWcsIGNvbnNvbGUuZGVidWcgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNvbnNv
bGUubG9nLiBTbyB3ZSdsbCBkbyB0aGUgc2FtZS4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBs
b2coYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OmVycm9yKFNjcmlw
dENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjplcnJvcihQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBjYWxsU3RhY2spOworICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6aW5m
byhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6aW5mbyhQYXNzT3du
UHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQogewotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVudHMs
IGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjpsb2coUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBh
ZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7Cisg
ICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMs
IGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjpkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBh
ZGRNZXNzYWdlKE9iamVjdE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7
CisgICAgYWRkTWVzc2FnZShPYmplY3RNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1
bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyeG1sKFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpkaXJ4bWwoUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aykKIHsKICAgICAvLyBUaGUgc3RhbmRhcmQgYmVoYXZpb3Igb2Ygb3VyIGNvbnNvbGUubG9nIHdp
bGwgcHJpbnQgdGhlIERPTSB0cmVlIGZvciBub2Rlcy4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAg
ICBsb2coYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OnRyYWNlKFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjp0cmFjZShQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2Fn
ZUxldmVsLCBjYWxsU3RhY2ssIHRydWUpOworICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlw
ZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7CiAKICAgICBp
ZiAoIXNob3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0yNDgsMTUg
KzI0MSwxNSBAQCB2b2lkIENvbnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KQogICAgIH0KIH0KIAotdm9pZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRp
b24sIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphc3NlcnRDb25k
aXRpb24oYm9vbCBjb25kaXRpb24sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgaWYgKGNv
bmRpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjaywgdHJ1ZSk7CisgICAgYWRkTWVzc2Fn
ZShBc3NlcnRNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0
YWNrLCB0cnVlKTsKIH0KIAotdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6Y291bnQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+
IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CkBAIC0y
NjcsNyArMjYwLDcgQEAgdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaykKICAgICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGgg
bnVsbCBhbmQgdW5kZWZpbmVkIHRpdGxlIGluCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5v
IGFyZ3VtZW50CiAgICAgU3RyaW5nIHRpdGxlOwotICAgIGdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIHRpdGxlKTsKKyAgICBhcmd1bWVudHMt
PmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyh0aXRsZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmNvdW50KHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENh
bGxlci5zb3VyY2VVUkwoKSk7CiAjZWxzZQpAQCAtMjc1LDIwICsyNjgsMTkgQEAgdm9pZCBDb25z
b2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQogCi12b2lk
IENvbnNvbGU6Om1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQg
Q29uc29sZTo6bWFya1RpbWVsaW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxs
U3RhY2stPmF0KDApOwogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpOworICAgIGFy
Z3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwogCiAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5tYXJrVGltZWxpbmUobWVzc2FnZSk7CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwog
I2VuZGlmCiB9CiAKQEAgLTMyMSw3ICszMTMsNyBAQCBTdHJpbmcgQ29uc29sZTo6bGFzdFdNTEVy
cm9yTWVzc2FnZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAot
dm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCkBAIC0zNDIsNyArMzM0LDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAgICAg
ICByZXNvbHZlZFRpdGxlID0gIiI7CiAjZW5kaWYKIAotICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFy
dChjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOworICAgIFNjcmlwdFByb2ZpbGVy
OjpzdGFydChhcmd1bWVudHMtPmdsb2JhbFN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIg
PSBjYWxsU3RhY2stPmF0KDApOwpAQCAtMzUwLDcgKzM0Miw3IEBAIHZvaWQgQ29uc29sZTo6cHJv
ZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNl
bmRpZgogfQogCi12b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwg
U2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29u
c3QgU3RyaW5nJiB0aXRsZSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTM2Miw3ICszNTQsNyBAQCB2b2lk
IENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsU3RhY2spCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0YXRl
KCksIHRpdGxlKTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFBy
b2ZpbGVyOjpzdG9wKGFyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSwgdGl0bGUpOwogICAgIGlmICgh
cHJvZmlsZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTQsNyArMzg2LDcgQEAgdm9pZCBDb25z
b2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xl
Ojp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KQordm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NPd25QdHI8
U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7
CkBAIC00MjAsMjggKzQxMiwzMCBAQCB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAjZW5kaWYKIH0KIAotdm9pZCBD
b25zb2xlOjpncm91cChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6
Z3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoSlNNZXNz
YWdlU291cmNlLCBjYWxsU3RhY2spOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c3RhcnRHcm91cChhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlmCiB9CiAK
LXZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2sp
Cit2b2lkIENvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRz
PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5zdGFydEdyb3VwKEpTTWVzc2FnZVNvdXJjZSwgY2FsbFN0YWNrLCB0cnVlKTsKKyAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxs
U3RhY2ssIHRydWUpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKICNlbmRpZgogfQpAQCAtNDU3LDkgKzQ1MSwyMiBAQCB2
b2lkIENvbnNvbGU6Omdyb3VwRW5kKCkKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Ondhcm4o
U2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCitib29sIENvbnNvbGU6OnNob3VsZENhcHR1cmVG
dWxsU3RhY2tUcmFjZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzRnJvbnRl
bmQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgQ29uc29s
ZTo6d2FybihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2Fn
ZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShM
b2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2sp
OwogfQogCiBNZW1vcnlJbmZvKiBDb25zb2xlOjptZW1vcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKaW5kZXggYWI2
MjUyNTJlNGNlZDdiZjNjMGU2M2RlNWU1MmRlMTAxNWJjZTNhMi4uOWE0OGZiNjM5MTZkMjNiZmRm
Y2E5YWZkYmVjNjgyNDZiODNiZDAzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
aAorKysgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2NyaXB0QXJndW1lbnRzOworCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
PiBQcm9maWxlc0FycmF5OwogI2VuZGlmCkBAIC04MywzMiArODUsMzUgQEAgcHVibGljOgogICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKLSAg
ICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2sgPSAwKTsKLQotICAgIHZv
aWQgZGVidWcoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBlcnJvcihTY3JpcHRDYWxsU3Rh
Y2sqKTsKLSAgICB2b2lkIGluZm8oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBsb2coU2Ny
aXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCB3YXJuKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZv
aWQgZGlyKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgZGlyeG1sKFNjcmlwdENhbGxTdGFj
ayopOwotICAgIHZvaWQgdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBhc3NlcnRD
b25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgY291
bnQoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBtYXJrVGltZWxpbmUoU2NyaXB0Q2FsbFN0
YWNrKik7CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKTsKKworICAgIHZvaWQgZGVidWcoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQg
ZXJyb3IoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4pOworICAgIHZvaWQgaW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBsb2coUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgd2FybihQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7
CisgICAgdm9pZCBkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgZGlyeG1sKFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIHRyYWNlKFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICB2b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgY291bnQo
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4p
OworICAgIHZvaWQgbWFya1RpbWVsaW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICNpZiBFTkFCTEUoV01MKQogICAgIFN0cmluZyBs
YXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLSAgICB2b2lkIHByb2ZpbGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0
YWNrKik7Ci0gICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFj
ayopOworICAgIHZvaWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBwcm9maWxl
RW5kKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKICNlbmRpZgogICAgIHZvaWQgdGltZShjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0g
ICAgdm9pZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGdyb3VwQ29sbGFwc2Vk
KFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Cisg
ICAgdm9pZCBncm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBncm91cENvbGxhcHNlZChQYXNzT3duUHRyPFNjcmlw
dEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBncm91
cEVuZCgpOwogCisgICAgYm9vbCBzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSBjb25zdDsK
KwogICAgIHN0YXRpYyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRpYyB2
b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKIApAQCAtMTIwLDcgKzEyNSw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwotICAg
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3Rh
Y2sqLCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOworICAgIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9IGZh
bHNlKTsKIAogICAgIENvbnNvbGUoRnJhbWUqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71419</attachid>
            <date>2010-10-21 03:57:35 -0700</date>
            <delta_ts>2010-10-22 11:02:33 -0700</delta_ts>
            <desc>Manually uploaded patch</desc>
            <filename>script-arguments.patch</filename>
            <type>text/plain</type>
            <size>114404</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmNiYjEyNS4uNDdjY2JhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTMgQEAKKzIwMTAtMTAtMjEgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGVjb3VwbGUgU2NyaXB0QXJndW1l
bnRzIGZyb20gU2NyaXB0Q2FsbFN0YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODA1OAorCisgICAgICAgIFNjcmlwdENhbGxGcmFtZSBhbmQgU2Ny
aXB0Q2FsbFN0YWNrIGFyZSBub3cgdGhlIHNhbWUgZm9yIGJvdGggSlNDIGFuZCBWOC4KKyAgICAg
ICAgVGhlIGZhY3RvcnkgZnVuY3Rpb25zIHRoYXQgYWxsb3cgdG8gY3JlYXRlIFNjcmlwdENhbGxT
dGFjayBmcm9tIFZNLXNwZWNpZmljCisgICAgICAgIG9iamVjdHMgYXJlIGRlZmluZWQgaW4gU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAuCisKKyAgICAgICAgU2NyaXB0QXJndW1lbnRzIGNsYXNz
IGlzIHVzZWQgZm9yIHBhc3NpbmcgYXJndW1lbnRzIGZyb20gSlMgY29kZSB0byB0aGUgbmF0aXZl
CisgICAgICAgIHBhcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHJlZmFjdG9yaW5n
IGlzIGNvdmVyZWQgd2l0aCBleGlzdGluZyBDb25zb2xlIHRlc3RzLgorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdEFy
Z3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0b1NjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Nj
cmlwdENhbGxGcmFtZXNWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDb25z
b2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGVNZXNzYWdlOjpoYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OENvbnNvbGU6OnRyYWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlOjph
c3NlcnRDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmlzRXF1YWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
c3RhcnRHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEFyZ3VtZW50czo6Z2xvYmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJn
dW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0QXJndW1lbnRzOjppc0VxdWFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxsRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjppc0VxdWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxs
RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6Omxp
bmVOdW1iZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6flNjcmlwdENhbGxTdGFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmF0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENhbGxTdGFjazo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3Rh
Y2s6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpidWlsZElu
c3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkZWJ1Zyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlOjppbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmxvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjpkaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyeG1s
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnNvbGU6OmFzc2VydENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpj
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjptYXJrVGltZWxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
Ojpwcm9maWxlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29s
ZTo6Z3JvdXBDb2xsYXBzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6c2hvdWxkQ2Fw
dHVyZUZ1bGxTdGFja1RyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Ondhcm4pOgor
ICAgICAgICAqIHBhZ2UvQ29uc29sZS5oOgorCiAyMDEwLTEwLTIwICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2No
dWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNzA1YTQzMC4uMGE3OGQ5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY5OSwxMCArNjk5LDYgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxGcmFtZS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2su
Y3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlckd0ay5jcHAnLApAQCAtODY5LDEwICs4NjUsOCBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAnLApAQCAtMTk1Myw2ICsxOTQ3LDEyIEBACiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9TY3JpcHRCcmVha3BvaW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEJy
ZWFrcG9pbnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCcsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9TY3JpcHRDYWxsRnJhbWUuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViYzQ0MGIuLjg3ZDg5MjggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDU5LDYgKzU0NTksMTAgQEAKIAkJ
RjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUw
RDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi87IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUw
RDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0
LmggKi87IH07CiAJCUYzNzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi87
IH07CisJCUYzOTIyNDlDMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOTIy
NDlBMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCAqLzsgfTsK
KwkJRjM5MjI0OUQxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOTIyNDlCMTI2
RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi87IH07CisJCUYzOUJF
OTVCMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0
IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi87IH07CisJCUYzOUJFOTVDMTI2NzNCRjQwMEUwQTY3
NCAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMu
aCAqLzsgfTsKIAkJRjNENDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyLmNwcCAqLzsgfTsKIAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5oICovOyB9OwogCQlGNEVBRjRBRTEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVT
YW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsg
fTsKQEAgLTExNDg1LDYgKzExNDg5LDEwIEBACiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAv
KiBJbmplY3RlZFNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmplY3RlZFNjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0
QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVz
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5MjI0OUExMjZGMTFBRTAw
QTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5QkU5NTkx
MjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGMzlCRTk1QTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyog
SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RUFGNEFDMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPcGVuVHlwZVNhbml0aXplci5jcHA7IHBh
dGggPSBvcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjI1Niw4ICsxMjI2NCwxNCBAQAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhE
REI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovLAogCQkJCTFDODFCQTA1MEU5NzM0
ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1RjBE
Q0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKKwkJCQlGMzlCRTk1OTEy
NjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLywKKwkJCQlGMzlCRTk1QTEy
NjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJMjAwQjE5MDgxMUMy
NzdEOTAwRENDRDNBIC8qIFNjcmlwdEJyZWFrcG9pbnQuY3BwICovLAogCQkJCTdBRkQ0QThBMTEz
MUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8sCisJCQkJNDE2RTc1Q0EwRURG
OTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCisJCQkJNDE2RTc1QzkwRURG
OTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovLAorCQkJCTQxNkU3NUJEMEVERjhG
RDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovLAorCQkJCTQxNkU3NUJDMEVERjhG
RDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLywKIAkJCQk3QUZENEZGMzExMzI3N0I2
MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovLAogCQkJCTlGQTM3RUVGMTE3MkZE
NDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlLmlkbCAqLywKIAkJCQk5RkEzN0VGMDExNzJGRDQx
MDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUuaWRsICovLApAQCAtMTY3NzMsMTAgKzE2Nzg3
LDggQEAKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmgg
Ki8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAgKi8sCiAJCQkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZy
YW1lRGF0YS5oICovLAotCQkJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
RnJhbWUuY3BwICovLAotCQkJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
RnJhbWUuaCAqLywKLQkJCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0
YWNrLmNwcCAqLywKLQkJCQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0
YWNrLmggKi8sCisJCQkJRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwICovLAorCQkJCUYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmggKi8sCiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNj
cmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCTkzQjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBT
Y3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNj
cmlwdENvbnRyb2xsZXJNYWMubW0gKi8sCkBAIC0yMDU1Miw2ICsyMDU2NCw3IEBACiAJCQkJMUNF
RkM5QjkwRDc4REM4QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE2MkM3RjUxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0VDMDFCRTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGMzlCRTk1QzEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUZENEE4QjExMzFDMjc2MDAz
NUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMUQyMUYw
RUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMTEyNiw2ICsyMTEzOSw3IEBACiAJCQkJMDgxQ0RGQjkxMjZFQ0ZEQjAwRDIxNUNBIC8q
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODFDREZCQTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MUNERkJGMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdB
bmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzkyMjQ5
RDEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4QTBFMDQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDUxMjZFRjFEQjAwOTc4RjdB
IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA2MTI2
RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjMxNzksNiArMjMxOTMsNyBAQAogCQkJCTUxNjJDN0Y0MTFGNzdFRkIwMDYx
MkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VDMDFCRDBD
Mjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NEQ4MkMy
MTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRjM5QkU5NUIxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0
QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3
NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNkU3
NUNDMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yMzY4Nyw2ICsyMzcwMiw3IEBACiAJCQkJOTcyOEMzMTMxMjY4RTQzOTAwNDFFODlCIC8q
IE1hcmt1cEFjY3VtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2
MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTFGMkI1MjEy
NkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUYzOTIyNDlDMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
RnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjc0Yjk2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5o
IgotCi0jaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3Ry
aW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
U2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYgZnVuY3Rpb25O
YW1lLCBjb25zdCBVU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQotICAgIDogbV9mdW5jdGlvbk5hbWUo
dXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSkpCi0gICAgLCBtX3NvdXJjZVVSTCh1c3RyaW5n
VG9TdHJpbmcodXJsU3RyaW5nKSkKLSAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQotewot
ICAgIGlmICghZXhlYykKLSAgICAgICAgcmV0dXJuOwotICAgIHNpemVfdCBhcmd1bWVudENvdW50
ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSBza2lwQXJndW1l
bnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgbV9hcmd1bWVudHMuYXBw
ZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7Ci19Ci0KLVNjcmlwdENhbGxGcmFt
ZTo6flNjcmlwdENhbGxGcmFtZSgpCi17Ci19Ci0KLWNvbnN0IFNjcmlwdFZhbHVlICZTY3JpcHRD
YWxsRnJhbWU6OmFyZ3VtZW50QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fYXJndW1lbnRzLnNpemUoKSA+IGluZGV4KTsKLSAgICByZXR1cm4gbV9hcmd1bWVudHNbaW5k
ZXhdOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
YWxsRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFhZWM3ZS4uMDAwMDAw
MAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdENhbGxGcmFtZV9oCi0jZGVmaW5l
IFNjcmlwdENhbGxGcmFtZV9oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIFVTdHJpbmc7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0Q2FsbEZyYW1lICB7Ci1wdWJsaWM6Ci0gICAgU2NyaXB0
Q2FsbEZyYW1lKGNvbnN0IEpTQzo6VVN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBKU0M6OlVT
dHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWdu
ZWQgc2tpcEFyZ3VtZW50Q291bnQpOwotICAgIH5TY3JpcHRDYWxsRnJhbWUoKTsKLQotICAgIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
VVJMOyB9Ci0gICAgdW5zaWduZWQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51
bWJlcjsgfQotCi0gICAgLy8gYXJndW1lbnQgcmV0cmlldmFsIG1ldGhvZHMKLSAgICBjb25zdCBT
Y3JpcHRWYWx1ZSYgYXJndW1lbnRBdCh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKLSAgICBTdHJpbmcgbV9zb3VyY2VVUkw7
Ci0gICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOwotCi0gICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBt
X2FyZ3VtZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNj
cmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENh
bGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNjFiMDcuLjAwMDAwMDAKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
ay5oIgotCi0jaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+Ci0jaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgotCi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2Fs
bFN0YWNrKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCi0gICAg
OiBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgICwgbV9leGVjKGV4ZWMpCi0gICAgLCBtX2NhbGxl
cigwKQotewotICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwotICAgIGludHB0cl90IHNvdXJjZUlE
OwotICAgIFVTdHJpbmcgdXJsU3RyaW5nOwotICAgIEpTVmFsdWUgZnVuY3Rpb247Ci0KLSAgICBl
eGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywgc2lnbmVkTGluZU51
bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOwotCi0gICAgdW5zaWduZWQgbGlu
ZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOwot
Ci0gICAgaWYgKGZ1bmN0aW9uKSB7Ci0gICAgICAgIG1fY2FsbGVyID0gYXNGdW5jdGlvbihmdW5j
dGlvbik7Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUobV9jYWxsZXIt
Pm5hbWUobV9leGVjKSwgdXJsU3RyaW5nLCBsaW5lTnVtYmVyLCBtX2V4ZWMsIHNraXBBcmd1bWVu
dENvdW50KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gQ2FsbGVyIGlzIHVua25vd24sIGJ1
dCB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBmcmFtZSwgYmVjYXVzZQotICAgICAgICAvLyBzb21l
dGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1bWVudHMuCi0gICAgICAgIG1fZnJhbWVz
LmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoVVN0cmluZygpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIs
IG1fZXhlYywgc2tpcEFyZ3VtZW50Q291bnQpKTsKLSAgICB9Ci19Ci0KLVNjcmlwdENhbGxTdGFj
azo6flNjcmlwdENhbGxTdGFjaygpCi17Ci19Ci0KLWNvbnN0IFNjcmlwdENhbGxGcmFtZSAmU2Ny
aXB0Q2FsbFN0YWNrOjphdCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBGaXJzdCBmcmFtZSBp
cyBwcmUtcG9wdWxhdGVkIGluIGNvbnN0cnVjdG9yLCBzbyBkb24ndCB0cmlnZ2VyCi0gICAgLy8g
aW5pdGlhbGl6YXRpb24gdW5sZXNzIGxvb2tpbmcgYmV5b25kIHRoZSBmaXJzdCBmcmFtZS4KLSAg
ICBpZiAoaW5kZXggPiAwKQotICAgICAgICBpbml0aWFsaXplKCk7Ci0gICAgQVNTRVJUKG1fZnJh
bWVzLnNpemUoKSA+IGluZGV4KTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdOwotfQotCi11
bnNpZ25lZCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQotewotICAgIGluaXRpYWxpemUoKTsKLSAg
ICByZXR1cm4gbV9mcmFtZXMuc2l6ZSgpOwotfQotCi12b2lkIFNjcmlwdENhbGxTdGFjazo6aW5p
dGlhbGl6ZSgpCi17Ci0gICAgaWYgKCFtX2NhbGxlciB8fCBtX2luaXRpYWxpemVkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKLSAgICBpbnRwdHJfdCBzb3Vy
Y2VJRDsKLSAgICBVU3RyaW5nIHVybFN0cmluZzsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uOwotICAg
IC8vIGNhbGxGcmFtZSBtdXN0IGV4aXN0IGlmIG1fY2FsbGVyIGlzIG5vdCBudWxsLgotICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gbV9leGVjLT5jYWxsZXJGcmFtZSgpOwotICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOwotICAgICAgICBtX2V4ZWMtPmludGVy
cHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIs
IHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbikK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBKU0Z1bmN0aW9uKiBqc0Z1bmN0aW9uID0gYXNG
dW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRM
aW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDogMDsKLSAgICAgICAgbV9mcmFtZXMu
YXBwZW5kKFNjcmlwdENhbGxGcmFtZShqc0Z1bmN0aW9uLT5uYW1lKG1fZXhlYyksIHVybFN0cmlu
ZywgbGluZU51bWJlciwgbV9leGVjLCAwKSk7Ci0gICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKLSAgICB9Ci0gICAgbV9pbml0aWFsaXplZCA9IHRydWU7Ci19Ci0K
LWJvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5o
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTdkMWM0Ni4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFNjcmlwdENhbGxTdGFja19oCi0jZGVmaW5lIFNjcmlwdENhbGxTdGFja19oCi0KLSNpbmNs
dWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIEpTVmFsdWU7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEluc3BlY3RvckFycmF5OwotCi0gICAg
Y2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFNjcmlwdENhbGxTdGFjayhKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50ID0gMCk7Ci0gICAgICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKLQotICAgICAg
ICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWM7IH0KLSAgICAgICAg
U2NyaXB0U3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsgfQotICAgICAgICAvLyBmcmFtZSByZXRyaWV2
YWwgbWV0aG9kcwotICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHVuc2lnbmVkKTsK
LSAgICAgICAgdW5zaWduZWQgc2l6ZSgpOwotICAgICAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNl
KGludCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLQot
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwotICAgICAgICBWZWN0b3I8U2NyaXB0Q2Fs
bEZyYW1lPiBtX2ZyYW1lczsKLSAgICAgICAgSlNDOjpKU0Z1bmN0aW9uKiBtX2NhbGxlcjsKLSAg
ICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTY3JpcHRDYWxsU3Rh
Y2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmYWJkZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAg
LTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJT
Y3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJl
dGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbERhdGEuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBzaXplX3QgbWF4U3RhY2tTaXplKQoreworICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IGZy
YW1lczsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGV4ZWM7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgICAgIGludCBzaWduZWRMaW5lTnVt
YmVyOworICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICAgICAgVVN0cmluZyB1cmxTdHJp
bmc7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb247CisKKyAgICAgICAgZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291
cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOworICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFt
ZTsKKyAgICAgICAgaWYgKGZ1bmN0aW9uKQorICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gYXNG
dW5jdGlvbihmdW5jdGlvbiktPm5hbWUoZXhlYyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgLy8gQ2FsbGVyIGlzIHVua25vd24sIGJ1dCBpZiBmcmFtZXMgaXMgZW1wdHkgd2Ugc2hvdWxk
IHN0aWxsIGFkZCB0aGUgZnJhbWUsIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHNvbWV0aGluZyBj
YWxsZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIGlmICghZnJhbWVz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGluZU51
bWJlciA6IDA7CisgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKHVzdHJpbmdU
b1N0cmluZyhmdW5jdGlvbk5hbWUpLCB1c3RyaW5nVG9TdHJpbmcodXJsU3RyaW5nKSwgbGluZU51
bWJlcikpOworICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8IGZyYW1lcy5zaXplKCkgPT0gbWF4U3Rh
Y2tTaXplKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2so
ZnJhbWVzKTsKK30KKworUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFy
Z3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQp
Cit7CisgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgZm9yIChzaXplX3QgaSA9IHNr
aXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQorICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50KGkpKSk7CisgICAgcmV0dXJuIG5l
dyBTY3JpcHRBcmd1bWVudHMoZXhlYywgYXJndW1lbnRzKTsKK30KKworYm9vbCBTY3JpcHRDYWxs
U3RhY2s6OnN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JikKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzQ0ZDg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAorI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgRXhlY1N0YXRlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlw
dEFyZ3VtZW50czsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKKworUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0M6OkV4ZWNTdGF0ZSosIHNpemVfdCBt
YXhTdGFja1NpemUpOworUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFy
Z3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggNmJlZjRmNy4uY2U0MzUxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTY3JpcHRT
dGF0ZVByb3RlY3RlZFB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgU2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHIoKSB7IH0KICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cihT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIDogbV9nbG9iYWxPYmplY3Qoc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkgeyB9Ci0gICAgU2NyaXB0U3RhdGUqIGdldCgpCisgICAgU2Ny
aXB0U3RhdGUqIGdldCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9nbG9iYWxPYmplY3Qp
CiAgICAgICAgICAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDBiNTZmMTMuLjIz
ZGI5NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMTk2Niw4ICsxOTY2LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBTY3JpcHRDYWxsU3RhY2sgY2FsbFN0YWNrKGV4ZWMsICRudW1Q
YXJhbWV0ZXJzKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNj
cmlwdEFyZ3VtZW50cyhleGVjLCAkbnVtUGFyYW1ldGVycykpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzaXplX3QgbWF4U3RhY2tTaXplID0g
aW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4
Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgbWF4U3RhY2tTaXplKSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAx
OwogICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNr
LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgICAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CkBAIC0yMzU3LDggKzIzNjEsOCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAKICAgICBpZiAoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0p
IHsKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7Ci0gICAg
ICAgICsrJHBhcmFtSW5kZXg7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiJmNhbGxTdGFj
ayI7CisgICAgICAgICRwYXJhbUluZGV4ICs9IDI7CisgICAgICAgICRmdW5jdGlvblN0cmluZyAu
PSAic2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSI7CiAgICAg
fQogCiAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNzUxZTM1MC4uMGM3OWU2
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
MzA0LDExICsxMzA0LDE1IEBAIEVORAogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywgJG51bVBhcmFtZXRl
cnMpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRl
U2NyaXB0QXJndW1lbnRzKGFyZ3MsICRudW1QYXJhbWV0ZXJzKSk7CisgICAgc2l6ZV90IG1heFN0
YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgPyBTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxOworICAgIE93blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2sobWF4U3RhY2tTaXplKSk7
CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiBF
TkQKKyAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0QXJndW1lbnRzLmgifSA9IDE7CiAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAgICAgfQogICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNWR0NoZWNrU2Vj
dXJpdHlEb2N1bWVudCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5E
KTsKQEAgLTI3MTksOCArMjcyMyw4IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygp
CiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIs
ICIgaWYgJGluZGV4OwotICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImNhbGxTdGFjay5nZXQo
KSI7Ci0gICAgICAgICRpbmRleCsrOworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gInNjcmlw
dEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkiOworICAgICAgICAkaW5k
ZXggKz0gMjsKICAgICB9CiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJOZWVkc1VzZXJHZXN0dXJlQ2hlY2sifSkgewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM3
MzQzLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotCi0jaW5jbHVkZSA8djguaD4KLQotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkK
LSAgICA6IG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKLSAgICAsIG1fc291cmNlVVJMKHVy
bFN0cmluZykKLSAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQotewotICAgIGZvciAoaW50
IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50cy5MZW5ndGgoKTsgKytpKQotICAg
ICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoYXJndW1lbnRzW2ldKSk7Ci19Ci0K
LVNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIpCi0gICAgOiBtX2Z1
bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCi0gICAgLCBtX3NvdXJjZVVSTCh1cmxTdHJpbmcpCi0g
ICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKLXsKLX0KLQotU2NyaXB0Q2FsbEZyYW1lOjp+
U2NyaXB0Q2FsbEZyYW1lKCkKLXsKLX0KLQotY29uc3QgU2NyaXB0VmFsdWUmIFNjcmlwdENhbGxG
cmFtZTo6YXJndW1lbnRBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9h
cmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxG
cmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjc3ZDRhLi4wMDAwMDAwCi0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUg
U2NyaXB0Q2FsbEZyYW1lX2gKLQotI2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKLQotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgcmV0cmlldmluZyBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTCBhbmQgc3Rv
cmluZyBoZXJlCi0gICAgLy8gZm9yIGFsbCBjYWxsIGZyYW1lcywgbm90IGp1c3QgdGhlIGZpcnN0
IG9uZS4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU1Nj4gYW5kCi0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTE4MD4KLSAgICBjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCB2ODo6QXJndW1lbnRzJiwg
dW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwotICAgICAgICBTY3JpcHRDYWxsRnJhbWUoY29u
c3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGlu
ZU51bWJlcik7Ci0gICAgICAgIH5TY3JpcHRDYWxsRnJhbWUoKTsKLQotICAgICAgICBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9Ci0g
ICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VV
Ukw7IH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZU51bWJlcjsgfQotCi0gICAgICAgIC8vIGFyZ3VtZW50IHJldHJpZXZhbCBtZXRob2RzCi0gICAg
ICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNp
emUoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwot
ICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJl
cjsKLQotICAgICAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotICAgIH07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxGcmFtZV9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNlMjljN2EuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKLSNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKLQotI2luY2x1ZGUgPHY4LWRlYnVnLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQgZ2V0RnJhbWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4
OjpTdGFja0ZyYW1lPiBmcmFtZSwgU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVO
dW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKQotewotICAgIEFTU0VSVCghZnJhbWUuSXNFbXB0
eSgpKTsKLSAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc291cmNlTmFtZVZhbHVlKGZyYW1lLT5H
ZXRTY3JpcHROYW1lT3JTb3VyY2VVUkwoKSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1
bmN0aW9uTmFtZVZhbHVlKGZyYW1lLT5HZXRGdW5jdGlvbk5hbWUoKSk7Ci0gICAgKnNvdXJjZU5h
bWUgPSBzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc291
cmNlTmFtZVZhbHVlKTsKLSAgICAqZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lVmFsdWUuSXNF
bXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lVmFsdWUpOwotICAgICpz
b3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKLX0KLQotc3RhdGljIHZv
aWQgZ2V0VG9wRnJhbWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1Ry
YWNlLCBTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBm
dW5jdGlvbk5hbWUpCi17Ci0gICAgaWYgKHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKSA8PSAw
KSB7Ci0gICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhl
cmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9y
IGZvciBleGFtcGxlLgotICAgICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIg
dG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KLSAgICAg
ICAgKnNvdXJjZU5hbWUgPSAidW5kZWZpbmVkIjsKLSAgICAgICAgKnNvdXJjZUxpbmVOdW1iZXIg
PSAwOwotICAgICAgICAqZnVuY3Rpb25OYW1lID0gInVuZGVmaW5lZCI7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSBzdGFja1RyYWNlLT5H
ZXRGcmFtZSgwKTsKLSAgICAgICAgZ2V0RnJhbWVMb2NhdGlvbihmcmFtZSwgc291cmNlTmFtZSwg
c291cmNlTGluZU51bWJlciwgZnVuY3Rpb25OYW1lKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQYXNz
T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6
U3RhY2tGcmFtZT4gZnJhbWUpCi17Ci0gICAgU3RyaW5nIHNvdXJjZU5hbWU7Ci0gICAgaW50IHNv
dXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBnZXRGcmFtZUxv
Y2F0aW9uKGZyYW1lLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5h
bWUpOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNl
TmFtZSwgc291cmNlTGluZU51bWJlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZy
YW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6
OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+
JiBzY3JpcHRDYWxsRnJhbWVzKQotewotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2Nv
cGUoY29udGV4dCk7Ci0gICAgaW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNv
dW50KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKLSAgICAg
ICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0
RnJhbWUoaSk7Ci0gICAgICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZy
YW1lKHN0YWNrRnJhbWUpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IGludCBTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgPSAyMDA7Ci1jb25zdCB2ODo6U3RhY2tUcmFjZTo6
U3RhY2tUcmFjZU9wdGlvbnMgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyA9IHN0
YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCi0gICAgIHY4OjpT
dGFja1RyYWNlOjprTGluZU51bWJlcgotICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtDb2x1bW5PZmZz
ZXQKLSAgICB8IHY4OjpTdGFja1RyYWNlOjprU2NyaXB0TmFtZU9yU291cmNlVVJMCi0gICAgfCB2
ODo6U3RhY2tUcmFjZTo6a0Z1bmN0aW9uTmFtZSk7Ci0KLQotUGFzc093blB0cjxTY3JpcHRDYWxs
U3RhY2s+IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Vt
ZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIGludCBmcmFtQ291bnRMaW1pdCkKLXsK
LSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBj
b250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKLSAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1Db3VudExp
bWl0LCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRpb25zKSk7Ci0KLSAgICBpZiAoc3Rh
Y2tUcmFjZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNvdXJj
ZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFt
ZTsKLSAgICBnZXRUb3BGcmFtZUxvY2F0aW9uKHN0YWNrVHJhY2UsICZzb3VyY2VOYW1lLCAmc291
cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7Ci0KLSAgICBWZWN0b3I8T3duUHRyPFNjcmlw
dENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOwotICAgIGlmIChmcmFtQ291bnRMaW1pdCA+
IDEpCi0gICAgICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNl
LCBzY3JpcHRDYWxsRnJhbWVzKTsKLQotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKFNj
cmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpLCBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0
aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJn
dW1lbnRDb3VudCksIHNjcmlwdENhbGxGcmFtZXMpOwotfQotCi1QYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6
SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKQotewotICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKLSAgICBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRDYWxs
RnJhbWVzOwotICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3RvcihzdGF0ZS0+Y29udGV4dCgpLCBz
dGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsKLQotICAgIFN0cmluZyBzb3VyY2VOYW1lOwot
ICAgIGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7Ci0gICAg
Z2V0VG9wRnJhbWVMb2NhdGlvbihzdGFja1RyYWNlLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVO
dW1iZXIsICZmdW5jdGlvbk5hbWUpOwotCi0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2so
c3RhdGUsIG5ldyBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3Vy
Y2VMaW5lTnVtYmVyKSwgc2NyaXB0Q2FsbEZyYW1lcyk7Ci19Ci0KLVNjcmlwdENhbGxTdGFjazo6
U2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxTY3Jp
cHRDYWxsRnJhbWU+IHRvcEZyYW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiYg
c2NyaXB0Q2FsbEZyYW1lcykKLSAgICA6IG1fdG9wRnJhbWUodG9wRnJhbWUpCi0gICAgLCBtX3Nj
cmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotICAgIG1fc2NyaXB0Q2FsbEZyYW1lcy5zd2FwKHNj
cmlwdENhbGxGcmFtZXMpOwotfQotCi1TY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2so
KQotewotfQotCi1jb25zdCBTY3JpcHRDYWxsRnJhbWUmIFNjcmlwdENhbGxTdGFjazo6YXQodW5z
aWduZWQgaW5kZXgpCi17Ci0gICAgaWYgKCFpbmRleCAmJiBtX3RvcEZyYW1lKQotICAgICAgICBy
ZXR1cm4gKm1fdG9wRnJhbWU7Ci0gICAgcmV0dXJuICptX3NjcmlwdENhbGxGcmFtZXMuYXQoaW5k
ZXgpOwotfQotCi11bnNpZ25lZCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQotewotICAgIGlmICht
X3NjcmlwdENhbGxGcmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1
cm4gbV9zY3JpcHRDYWxsRnJhbWVzLnNpemUoKTsKLX0KLQotCi1ib29sIFNjcmlwdENhbGxTdGFj
azo6c3RhY2tUcmFjZShpbnQgZnJhbWVMaW1pdCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYgc3RhY2tUcmFjZSkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmICghdjg6OkNv
bnRleHQ6OkluQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAg
aWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29u
dGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gdHJhY2Uodjg6OlN0YWNrVHJh
Y2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1lTGltaXQpKTsKLSAgICBpbnQgZnJhbWVDb3VudCA9
IHRyYWNlLT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgaWYgKHRyYWNlLklzRW1wdHkoKSB8fCAhZnJh
bWVDb3VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+IGZy
YW1lID0gdHJhY2UtPkdldEZyYW1lKGkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBzY3JpcHROYW1lID0gZnJhbWUtPkdldFNjcmlwdE5hbWUoKTsKLSAg
ICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygic2NyaXB0TmFtZSIsIHNjcmlwdE5hbWUuSXNF
bXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc2NyaXB0TmFtZSkpOwotICAgICAgICB2ODo6
TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1lID0gZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgp
OwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBmdW5jdGlv
bk5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lKSk7Ci0g
ICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBmcmFtZS0+R2V0TGlu
ZU51bWJlcigpKTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigiY29sdW1uIiwgZnJh
bWUtPkdldENvbHVtbigpKTsKLSAgICAgICAgc3RhY2tUcmFjZS0+cHVzaE9iamVjdChmcmFtZU9i
amVjdCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZTUxOTUuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAorKysgL2Rl
di9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAot
I2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAotCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KLWNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWxs
U3RhY2tTaXplVG9DYXB0dXJlOwotICAgIHN0YXRpYyBjb25zdCB2ODo6U3RhY2tUcmFjZTo6U3Rh
Y2tUcmFjZU9wdGlvbnMgc3RhY2tUcmFjZU9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQg
c2tpcEFyZ3VtZW50Q291bnQgPSAwLCBpbnQgZnJhbUNvdW50TGltaXQgPSAxKTsKLSAgICBzdGF0
aWMgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIHY4OjpI
YW5kbGU8djg6OlN0YWNrVHJhY2U+KTsKLSAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgSmF2YVNjcmlwdCBvciBpZiBm
ZXRjaGluZyB0aGUgc3RhY2sgZmFpbGVkLgotICAgIC8vIFNldHMgc3RhY2tUcmFjZSB0byBiZSBh
biBhcnJheSBvZiBzdGFjayBmcmFtZSBvYmplY3RzLgotICAgIC8vIEEgc3RhY2sgZnJhbWUgb2Jq
ZWN0IGxvb2tzIGxpa2U6Ci0gICAgLy8gewotICAgIC8vICAgc2NyaXB0TmFtZTogPGZpbGUgbmFt
ZSBmb3IgdGhlIGFzc29jaWF0ZWQgc2NyaXB0IHJlc291cmNlPgotICAgIC8vICAgZnVuY3Rpb25O
YW1lOiA8bmFtZSBvZiB0aGUgSmF2YVNjcmlwdCBmdW5jdGlvbj4KLSAgICAvLyAgIGxpbmVOdW1i
ZXI6IDwxIGJhc2VkIGxpbmUgbnVtYmVyPgotICAgIC8vICAgY29sdW1uOiA8MSBiYXNlZCBjb2x1
bW4gb2Zmc2V0IG9uIHRoZSBsaW5lPgotICAgIC8vIH0KLSAgICBzdGF0aWMgYm9vbCBzdGFja1Ry
YWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1Ry
YWNlKTsKLQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpOwotICAgIHVu
c2lnbmVkIHNpemUoKTsKLQotICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyaXB0U3RhdGU7IH0KLSAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2NyaXB0Q2FsbFN0YWNr
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRv
cEZyYW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1l
cyk7Ci0gICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6Okhh
bmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSk7Ci0KLSAgICBPd25QdHI8U2NyaXB0Q2Fs
bEZyYW1lPiBtX3RvcEZyYW1lOwotICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAg
IFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+IG1fc2NyaXB0Q2FsbEZyYW1lczsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja19o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmZiZWVmCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMCww
ICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisKKyNpbmNsdWRlIDx2OC1k
ZWJ1Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTY3JpcHRDYWxsRnJhbWUg
dG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCit7Cisg
ICAgU3RyaW5nIHNvdXJjZU5hbWU7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJjZU5h
bWVWYWx1ZShmcmFtZS0+R2V0U2NyaXB0TmFtZU9yU291cmNlVVJMKCkpOworICAgIGlmICghc291
cmNlTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0
cmluZyhzb3VyY2VOYW1lVmFsdWUpOworCisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICB2
ODo6TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9u
TmFtZSgpKTsKKyAgICBpZiAoIWZ1bmN0aW9uTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAg
ZnVuY3Rpb25OYW1lID0gdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZVZhbHVlKTsKKworICAg
IGludCBzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKKyAgICByZXR1
cm4gU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51
bWJlcik7Cit9CisKK3N0YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNr
VHJhY2UsIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBzY3JpcHRDYWxsRnJhbWVzLCBzaXplX3Qg
bWF4U3RhY2tTaXplKQoreworICAgIC8vIFRPRE8oeXVyeXMpOiByZW1vdmUgdGhpcz8/PworICAg
IHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisgICAgaW50IGZyYW1l
Q291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7CisgICAgaWYgKGZyYW1lQ291bnQg
PiBzdGF0aWNfY2FzdDxpbnQ+KG1heFN0YWNrU2l6ZSkpCisgICAgICAgIGZyYW1lQ291bnQgPSBt
YXhTdGFja1NpemU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFj
ZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0
Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFmcmFtZUNvdW50
KSB7CisgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhl
cmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9y
IGZvciBleGFtcGxlLgorICAgICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIg
dG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KKyAgICAg
ICAgc2NyaXB0Q2FsbEZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKCJ1bmRlZmluZWQiLCAi
dW5kZWZpbmVkIiwgMCkpOworICAgIH0KK30KKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4
OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIHNpemVfdCBtYXhTdGFja1NpemUp
Cit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBj
b250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBzY3Jp
cHRDYWxsRnJhbWVzOworICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFj
a1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzLCBtYXhTdGFja1NpemUpOworICAgIHJldHVybiBuZXcg
U2NyaXB0Q2FsbFN0YWNrKHNjcmlwdENhbGxGcmFtZXMpOworfQorCitQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUpCit7
CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgLy8gVE9ETyh5dXJ5cyk6
IHJlbW92ZT8KKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwor
ICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6
OkN1cnJlbnRTdGFja1RyYWNlKG1heFN0YWNrU2l6ZSwgc3RhY2tUcmFjZU9wdGlvbnMpKTsKKyAg
ICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGNvbnRleHQsIHN0YWNrVHJhY2UsIG1heFN0
YWNrU2l6ZSk7Cit9CisKK1Bhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRB
cmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50KQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAg
IFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOwor
CisgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgZm9yIChpbnQgaSA9IHNr
aXBBcmd1bWVudENvdW50OyBpIDwgdjhhcmd1bWVudHMuTGVuZ3RoKCk7ICsraSkKKyAgICAgICAg
YXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZSh2OGFyZ3VtZW50c1tpXSkpOworCisgICAgcmV0
dXJuIG5ldyBTY3JpcHRBcmd1bWVudHMoc3RhdGUsIGFyZ3VtZW50cyk7Cit9CisKK2Jvb2wgU2Ny
aXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJl
bnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZShjb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiB0cmFjZSh2
ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoZnJhbWVMaW1pdCkpOworICAgIGludCBm
cmFtZUNvdW50ID0gdHJhY2UtPkdldEZyYW1lQ291bnQoKTsKKyAgICBpZiAodHJhY2UuSXNFbXB0
eSgpIHx8ICFmcmFtZUNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3Rh
Y2tGcmFtZT4gZnJhbWUgPSB0cmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdE5hbWUgPSBmcmFtZS0+R2V0U2NyaXB0
TmFtZSgpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJzY3JpcHROYW1lIiwgc2Ny
aXB0TmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhzY3JpcHROYW1lKSk7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBmdW5jdGlvbk5hbWUgPSBmcmFtZS0+R2V0RnVu
Y3Rpb25OYW1lKCk7CisgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFt
ZSIsIGZ1bmN0aW9uTmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlv
bk5hbWUpKTsKKyAgICAgICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigibGluZU51bWJlciIsIGZy
YW1lLT5HZXRMaW5lTnVtYmVyKCkpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJj
b2x1bW4iLCBmcmFtZS0+R2V0Q29sdW1uKCkpOworICAgICAgICBzdGFja1RyYWNlLT5wdXNoT2Jq
ZWN0KGZyYW1lT2JqZWN0KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjYxM2FmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKKyNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0U3RhdGU7CisKK2NvbnN0IHY4OjpT
dGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucyBzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19j
YXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCisgICAgICB2ODo6U3RhY2tU
cmFjZTo6a0xpbmVOdW1iZXIKKyAgICB8IHY4OjpTdGFja1RyYWNlOjprQ29sdW1uT2Zmc2V0Cisg
ICAgfCB2ODo6U3RhY2tUcmFjZTo6a1NjcmlwdE5hbWVPclNvdXJjZVVSTAorICAgIHwgdjg6OlN0
YWNrVHJhY2U6OmtGdW5jdGlvbk5hbWUpOworCitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CitjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7CisKK1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2sodjg6OkxvY2FsPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2ODo6U3Rh
Y2tUcmFjZT4sIHNpemVfdCBtYXhTdGFja1NpemUpOworUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplKTsKK1Bhc3NPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0OTA0YTRlLi5mYTM3
YzM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC00NjgsNyArNDY5LDcg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wpCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFj
a0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhib29sIHZhbHVlKQogewotICAgIHY4OjpWODo6U2V0Q2Fw
dHVyZVN0YWNrVHJhY2VGb3JVbmNhdWdodEV4Y2VwdGlvbnModmFsdWUsIFNjcmlwdENhbGxTdGFj
azo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNl
T3B0aW9ucyk7CisgICAgdjg6OlY4OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhj
ZXB0aW9ucyh2YWx1ZSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJl
LCBzdGFja1RyYWNlT3B0aW9ucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0
ZS5oCmluZGV4IGNlMzUwZGEuLjExODEzYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgK
QEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb250ZXh0LkNsZWFyKCk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgU2NyaXB0U3RhdGUqIGdldCgpIHsgcmV0dXJuIG1fc2Ny
aXB0U3RhdGU7IH0KKyAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHRTdGF0ZTsgfQogcHJpdmF0ZToKICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggOGI2YmIxNy4uNDBmOWE3YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiT3duUHRyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTExNywxOCArMTE4LDE3IEBA
IHZvaWQgVjhDb25zb2xlTWVzc2FnZTo6aGFuZGxlcih2ODo6SGFuZGxlPHY4OjpNZXNzYWdlPiBt
ZXNzYWdlLCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgLy8gQ3VycmVudGx5IHN0YWNrIHRyYWNlIGlz
IG9ubHkgY29sbGVjdGVkIHdoZW4gaW5zcGVjdG9yIGlzIG9wZW4uCiAgICAgaWYgKCFzdGFja1Ry
YWNlLklzRW1wdHkoKSAmJiBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkgPiAwKSB7CiAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRl
cmVkKCk7Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KGNvbnRleHQpOwotICAgICAgICBjYWxsU3RhY2sgPSBTY3JpcHRDYWxsU3RhY2s6
OmNyZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSk7CisgICAgICAgIGNhbGxTdGFjayA9IGNy
ZWF0ZVNjcmlwdENhbGxTdGFjayhjb250ZXh0LCBzdGFja1RyYWNlLCBTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZXNvdXJjZU5hbWUgPSBtZXNzYWdlLT5HZXRTY3JpcHRSZXNvdXJjZU5hbWUoKTsK
ICAgICBib29sIHVzZVVSTCA9IHJlc291cmNlTmFtZS5Jc0VtcHR5KCkgfHwgIXJlc291cmNlTmFt
ZS0+SXNTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lU3RyaW5nID0gdXNlVVJMID8g
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogdG9XZWJDb3JlU3RyaW5nKHJlc291cmNlTmFtZSk7
CiAgICAgVjhDb25zb2xlTWVzc2FnZSBjb25zb2xlTWVzc2FnZShlcnJvck1lc3NhZ2UsIHJlc291
cmNlTmFtZVN0cmluZywgbWVzc2FnZS0+R2V0TGluZU51bWJlcigpKTsKLSAgICBjb25zb2xlTWVz
c2FnZS5kaXNwYXRjaE5vdyhwYWdlLCBjYWxsU3RhY2suZ2V0KCkpOworICAgIGNvbnNvbGVNZXNz
YWdlLmRpc3BhdGNoTm93KHBhZ2UsIGNhbGxTdGFjay5yZWxlYXNlKCkpOwogfQogCi12b2lkIFY4
Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KFBhZ2UqIHBhZ2UsIFNjcmlwdENhbGxTdGFjayog
Y2FsbFN0YWNrKQordm9pZCBWOENvbnNvbGVNZXNzYWdlOjpkaXNwYXRjaE5vdyhQYWdlKiBwYWdl
LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIEFTU0VSVChw
YWdlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdl
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAppbmRleCAzODdiNWVl
Li42Yjg5MmRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3Nh
Z2UuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaApAQCAtMzMs
NiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx2OC5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgY29uc3QgU3RyaW5nIG1fc291cmNlSUQ7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIG1fbGluZU51bWJlcjsKIAotICAgICAgICB2b2lkIGRpc3BhdGNoTm93KFBhZ2UqLCBTY3Jp
cHRDYWxsU3RhY2sqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE5vdyhQYWdlKiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgICAgICAvLyBBbGwgZGVsYXllZCBtZXNzYWdlcyBh
cmUgc3RvcmVkIGluIHRoaXMgdmVjdG9yLiBJZiB0aGUgdmVjdG9yCiAgICAgICAgIC8vIGlzIDAs
IHRoZXJlIGFyZSBubyBkZWxheWVkIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKaW5kZXggZmM4M2I2MS4uZTU4NWNjOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC0zMyw3
ICszMyw5IEBACiAjaW5jbHVkZSAiVjhDb25zb2xlLmgiCiAKICNpbmNsdWRlICJDb25zb2xlLmgi
CisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CkBAIC02MiwxMSArNjQsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFj
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uQ29uc29sZS50cmFjZUNhbGxiYWNrIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xl
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQo
KTsKLSAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tU
cmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlLCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRpb25zKTsKLSAgICBPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoc2Ny
aXB0U3RhdGUsIHN0YWNrVHJhY2UpKTsKLSAgICBpbXAtPnRyYWNlKGNhbGxTdGFjay5nZXQoKSk7
CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKKyAgICBP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1l
bnRzKGFyZ3MsIDApKTsKKyAgICBpbXAtPnRyYWNlKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCks
IGNhbGxTdGFjay5yZWxlYXNlKCkpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KTsKIH0KIApAQCAtNzQsOSArNzQsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29s
ZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5Db25zb2xlLmFzc2VydENhbGxiYWNrIik7CiAgICAgQ29uc29sZSogaW1wID0g
VjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywgMSwgU2NyaXB0
Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3Rh
Y2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKICAgICBib29sIGNvbmRpdGlvbiA9IGFy
Z3NbMF0tPkJvb2xlYW5WYWx1ZSgpOwotICAgIGltcC0+YXNzZXJ0Q29uZGl0aW9uKGNvbmRpdGlv
biwgY2FsbFN0YWNrLmdldCgpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRB
cmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKKyAgICBpbXAtPmFzc2Vy
dENvbmRpdGlvbihjb25kaXRpb24sIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFj
ay5yZWxlYXNlKCkpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDY3OTMwY2QuLjVjMGZiMzggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTMzLDQ2ICszMywxNCBAQAogCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3Qu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1Db25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUoY29uc3Qg
U2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSkKLSAgICA6IG1fZnVuY3Rpb25OYW1lKGZyYW1lLmZ1bmN0
aW9uTmFtZSgpKQotICAgICwgbV9zb3VyY2VVUkwoZnJhbWUuc291cmNlVVJMKCkpCi0gICAgLCBt
X2xpbmVOdW1iZXIoZnJhbWUubGluZU51bWJlcigpKQotewotfQotCi1Db25zb2xlTWVzc2FnZTo6
Q2FsbEZyYW1lOjpDYWxsRnJhbWUoKQotICAgIDogbV9saW5lTnVtYmVyKDApCi17Ci19Ci0KLWJv
b2wgQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBDb25zb2xlTWVzc2Fn
ZTo6Q2FsbEZyYW1lJiBvKSBjb25zdAotewotICAgIHJldHVybiBtX2Z1bmN0aW9uTmFtZSA9PSBv
Lm1fZnVuY3Rpb25OYW1lCi0gICAgICAgICYmIG1fc291cmNlVVJMID09IG8ubV9zb3VyY2VVUkwK
LSAgICAgICAgJiYgbV9saW5lTnVtYmVyID09IG8ubV9saW5lTnVtYmVyOwotfQotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBDb25zb2xlTWVzc2Fn
ZTo6Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0Ci17Ci0gICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZnJhbWUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAg
IGZyYW1lLT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG1fZnVuY3Rpb25OYW1lKTsKLSAgICBm
cmFtZS0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBtX3NvdXJjZVVSTCk7Ci0gICAgZnJhbWUtPnNl
dE51bWJlcigibGluZU51bWJlciIsIG1fbGluZU51bWJlcik7Ci0gICAgcmV0dXJuIGZyYW1lOwot
fQotI2VuZGlmCi0KIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
IHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2ln
bmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpCiAgICAgOiBtX3NvdXJjZShzKQog
ICAgICwgbV90eXBlKHQpCkBAIC04NSwzNSArNTMsMjYgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGws
IGMKIHsKIH0KIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
cywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgU2NyaXB0
Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcsIGJvb2wgc3RvcmVUcmFjZSkKK0NvbnNv
bGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQs
IE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIHVu
c2lnbmVkIGcpCiAgICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCiAgICAgLCBtX2xl
dmVsKGwpCiAgICAgLCBtX21lc3NhZ2UobSkKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICwg
bV9hcmd1bWVudHMoY2FsbFN0YWNrLT5hdCgwKS5hcmd1bWVudENvdW50KCkpCi0gICAgLCBtX3Nj
cmlwdFN0YXRlKGNhbGxTdGFjay0+Z2xvYmFsU3RhdGUoKSkKLSNlbmRpZgotICAgICwgbV9mcmFt
ZXMoc3RvcmVUcmFjZSA/IGNhbGxTdGFjay0+c2l6ZSgpIDogMCkKKyAgICAsIG1fYXJndW1lbnRz
KGFyZ3VtZW50cykKKyAgICAsIG1fY2FsbFN0YWNrKGNhbGxTdGFjaykKICAgICAsIG1fZ3JvdXBM
ZXZlbChnKQogICAgICwgbV9yZXBlYXRDb3VudCgxKQogewotICAgIGNvbnN0IFNjcmlwdENhbGxG
cmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CisgICAgY29uc3QgU2NyaXB0Q2Fs
bEZyYW1lJiBsYXN0Q2FsbGVyID0gbV9jYWxsU3RhY2stPmF0KDApOwogICAgIG1fbGluZSA9IGxh
c3RDYWxsZXIubGluZU51bWJlcigpOwogICAgIG1fdXJsID0gbGFzdENhbGxlci5zb3VyY2VVUkwo
KTsKIAotICAgIGlmIChzdG9yZVRyYWNlKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsU3RhY2stPnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9mcmFtZXNbaV0gPSBD
b25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lKGNhbGxTdGFjay0+YXQoaSkpOwotICAgIH0KIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxhc3RDYWxs
ZXIuYXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIG1fYXJndW1lbnRzW2ldID0gbGFzdENh
bGxlci5hcmd1bWVudEF0KGkpOwotI2VuZGlmCisgICAgYm9vbCBzdG9yZVRyYWNlID0gKHQgPT0g
VHJhY2VNZXNzYWdlVHlwZSB8fCB0ID09IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwg
dCA9PSBBc3NlcnRNZXNzYWdlVHlwZSk7CisgICAgaWYgKCFzdG9yZVRyYWNlKQorICAgICAgICBt
X2NhbGxTdGFjay5jbGVhcigpOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJ
bmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBqc29uT2JqID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKQEAgLTEy
NSwxMiArODQsMTIgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG8KICAgICBqc29uT2JqLT5zZXRO
dW1iZXIoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAg
IGpzb25PYmotPnNldE51bWJlcigicmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVw
ZWF0Q291bnQpKTsKICAgICBqc29uT2JqLT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBtX21lc3NhZ2Up
OwotICAgIGlmICghbV9hcmd1bWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZv
cihtX3NjcmlwdFN0YXRlLmdldCgpKTsKKyAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVu
dHMtPmFyZ3VtZW50Q291bnQoKSkgeworICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBqc29uQXJncyA9IEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwRm9yQ29uc29s
ZShtX2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBG
b3JDb25zb2xlKG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDAsMTIgKzk5LDggQEAg
dm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQsIEluamVjdGVkU2NyaXB0SG8KICAgICAgICAgICAgIGpzb25PYmotPnNldEFycmF5KCJw
YXJhbWV0ZXJzIiwganNvbkFyZ3MpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9mcmFt
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJhbWVzID0g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBmcmFtZXMtPnB1c2hPYmplY3Qo
bV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7Ci0gICAgICAgIGpzb25PYmot
PnNldEFycmF5KCJzdGFja1RyYWNlIiwgZnJhbWVzKTsKLSAgICB9CisgICAgaWYgKG1fY2FsbFN0
YWNrKQorICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgic3RhY2tUcmFjZSIsIG1fY2FsbFN0YWNr
LT5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3Nh
Z2UoanNvbk9iaik7CiB9CiAKQEAgLTE1MywzMiArMTA4LDIwIEBAIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCkKIHsKICAgICBmcm9udGVuZC0+dXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudChtX3Jl
cGVhdENvdW50KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiBib29sIENvbnNv
bGVNZXNzYWdlOjppc0VxdWFsKENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0CiB7Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAobXNnLT5tX2FyZ3VtZW50cy5zaXplKCkgIT0gbV9hcmd1
bWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtc2ctPm1fc2Ny
aXB0U3RhdGUuZ2V0KCkgJiYgbXNnLT5tX2FyZ3VtZW50cy5zaXplKCkpIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmICghbV9hcmd1bWVudHNbaV0uaXNFcXVhbChtc2ctPm1fc2NyaXB0U3RhdGUuZ2V0KCksIG1z
Zy0+bV9hcmd1bWVudHNbaV0pKQorICAgIGlmIChtX2FyZ3VtZW50cykgeworICAgICAgICBpZiAo
IW1fYXJndW1lbnRzLT5pc0VxdWFsKG1zZy0+bV9hcmd1bWVudHMuZ2V0KCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQotCi0g
ICAgc2l6ZV90IGZyYW1lQ291bnQgPSBtc2ctPm1fZnJhbWVzLnNpemUoKTsKLSAgICBpZiAoZnJh
bWVDb3VudCAhPSBtX2ZyYW1lcy5zaXplKCkpCisgICAgfSBlbHNlIGlmIChtc2ctPm1fYXJndW1l
bnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZyYW1lQ291bnQ7ICsraSkgewotICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwobXNn
LT5tX2ZyYW1lc1tpXSkpCisgICAgaWYgKG1fY2FsbFN0YWNrKSB7CisgICAgICAgIGlmICghbV9j
YWxsU3RhY2stPmlzRXF1YWwobXNnLT5tX2NhbGxTdGFjay5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIH0gZWxzZSBpZiAobXNnLT5tX2NhbGxTdGFjaykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1zZy0+bV9zb3VyY2UgPT0gbV9zb3Vy
Y2UKICAgICAgICAgJiYgbXNnLT5tX3R5cGUgPT0gbV90eXBlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaAppbmRleCA2YzNmMmM3Li4yMzcyMGJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0
IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgQ29uc29sZU1lc3NhZ2VfaAogCiAj
aW5jbHVkZSAiQ29uc29sZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIFNjcmlwdEFyZ3VtZW50
czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNz
IFNjcmlwdFZhbHVlOwpAQCAtNDgsMTIgKzQ4LDEwIEBAIGNsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgQ29uc29sZU1lc3NhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYgdSwgdW5zaWduZWQgZyk7
Ci0gICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxsU3RhY2sqLCB1bnNpZ25lZCBnLCBib29s
IHN0b3JlVHJhY2UgPSBmYWxzZSk7CisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgZyk7
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHZvaWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCosIEluamVjdGVkU2NyaXB0SG9zdCopOwogICAgIHZvaWQgdXBkYXRlUmVwZWF0
Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKLSNlbmRpZgogICAg
IHZvaWQgaW5jcmVtZW50Q291bnQoKSB7ICsrbV9yZXBlYXRDb3VudDsgfQogICAgIGJvb2wgaXNF
cXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdDsKIApAQCAtNjEsMzAgKzU5LDEyIEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2U7IH0KIAogcHJpdmF0ZToKLSAgICBjbGFzcyBDYWxsRnJhbWUgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgZXhwbGljaXQgQ2FsbEZyYW1lKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgZnJhbWUpOwot
ICAgICAgICBDYWxsRnJhbWUoKTsKLSAgICAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IENhbGxGcmFt
ZSYgbykgY29uc3Q7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7Ci0jZW5kaWYKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKLSAgICAgICAgU3Ry
aW5nIG1fc291cmNlVVJMOwotICAgICAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7Ci0gICAgfTsK
LQogICAgIE1lc3NhZ2VTb3VyY2UgbV9zb3VyY2U7CiAgICAgTWVzc2FnZVR5cGUgbV90eXBlOwog
ICAgIE1lc3NhZ2VMZXZlbCBtX2xldmVsOwogICAgIFN0cmluZyBtX21lc3NhZ2U7Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotICAg
IFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIG1fc2NyaXB0U3RhdGU7Ci0jZW5kaWYKLSAgICBWZWN0
b3I8Q2FsbEZyYW1lPiBtX2ZyYW1lczsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBtX2Fy
Z3VtZW50czsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX2NhbGxTdGFjazsKICAgICB1
bnNpZ25lZCBtX2xpbmU7CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIHVuc2lnbmVkIG1fZ3JvdXBM
ZXZlbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZjk5
ZDQ4Ny4uYjE5NWMzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CkBAIC0zMzksMTMgKzM0MCwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldENvbnNv
bGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICBtX2NvbnNvbGVNZXNzYWdl
c1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9z
dC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdG9yZVN0YWNrVHJhY2UgPSB0eXBl
ID09IFRyYWNlTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBVbmNhdWdodEV4Y2VwdGlvbk1lc3NhZ2VU
eXBlIHx8IHR5cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGU7Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2Uo
bmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFj
aywgbV9ncm91cExldmVsLCBzdG9yZVN0YWNrVHJhY2UpKTsKKyAgICBhZGRDb25zb2xlTWVzc2Fn
ZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1l
bnRzLCBjYWxsU3RhY2ssIG1fZ3JvdXBMZXZlbCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VU
eXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQpAQCAtMzkxLDExICszOTEs
MTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAg
ICAgICAgIG1fZnJvbnRlbmQtPmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBTY3Jp
cHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgYm9vbCBjb2xsYXBzZWQpCit2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnN0YXJ0R3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgYm9vbCBjb2xsYXBzZWQp
CiB7CiAgICAgKyttX2dyb3VwTGV2ZWw7CiAKLSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29u
c29sZU1lc3NhZ2Uoc291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2Fn
ZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCks
IGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENv
bnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgY29sbGFwc2VkID8gU3RhcnRHcm91cENvbGxh
cHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWws
ICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDZkNGQ5ZTAuLjY4YWExNDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgUGFnZTsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrOwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTE0NSw4
ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAg
IHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0
YXRlKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNz
T3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xl
YXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICBjb25zdCBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNz
YWdlPiA+JiBjb25zb2xlTWVzc2FnZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnNvbGVNZXNzYWdl
czsgfQogCkBAIC0yMzIsNyArMjMzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRUaW1pbmco
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgYm9vbCBzdG9wVGltaW5nKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGRvdWJsZSYgZWxhcHNlZCk7CiAKLSAgICB2b2lkIHN0YXJ0R3JvdXAoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIFNjcmlwdENhbGxTdGFjayogY2FsbEZyYW1lLCBib29sIGNvbGxhcHNlZCA9
IGZhbHNlKTsKKyAgICB2b2lkIHN0YXJ0R3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+
LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbEZyYW1lLCBib29sIGNvbGxhcHNlZCA9
IGZhbHNlKTsKICAgICB2b2lkIGVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICAgICB2b2lkIG1hcmtU
aW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwZTEzNQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1
bWVudHMuaCIKKworI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU2NyaXB0QXJndW1lbnRzOjpTY3JpcHRBcmd1bWVudHMoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCisgICAgOiBtX3NjcmlwdFN0
YXRlKHNjcmlwdFN0YXRlKQoreworICAgIG1fYXJndW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKK30K
KworU2NyaXB0QXJndW1lbnRzOjp+U2NyaXB0QXJndW1lbnRzKCkKK3sKK30KKworY29uc3QgU2Ny
aXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJndW1lbnRBdChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fYXJndW1lbnRzLnNpemUoKSA+IGluZGV4KTsKKyAgICByZXR1cm4g
bV9hcmd1bWVudHNbaW5kZXhdOworfQorCitTY3JpcHRTdGF0ZSogU2NyaXB0QXJndW1lbnRzOjpn
bG9iYWxTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0U3RhdGUuZ2V0KCk7Cit9
CisKK2Jvb2wgU2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU3RyaW5n
JiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQpCit7CisgICAgaWYgKCFhcmd1
bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNjcmlwdFZh
bHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7CisgICAgaWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZp
bmVkICYmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFnbG9iYWxTdGF0ZSgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVz
dWx0ID0gdmFsdWUudG9TdHJpbmcoZ2xvYmFsU3RhdGUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgU2NyaXB0QXJndW1lbnRzOjppc0VxdWFsKFNjcmlwdEFyZ3VtZW50cyogb3RoZXIp
IGNvbnN0Cit7CisgICAgaWYgKCFvdGhlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKG1fYXJndW1lbnRzLnNpemUoKSAhPSBvdGhlci0+bV9hcmd1bWVudHMuc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFnbG9iYWxTdGF0ZSgpICYmIG1fYXJndW1lbnRz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIW1fYXJndW1lbnRz
W2ldLmlzRXF1YWwob3RoZXItPmdsb2JhbFN0YXRlKCksIG90aGVyLT5tX2FyZ3VtZW50c1tpXSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjA1YWIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTY3JpcHRBcmd1bWVudHNfaAorI2RlZmluZSBTY3JpcHRBcmd1bWVudHNfaAor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
Y3JpcHRWYWx1ZTsKKworY2xhc3MgU2NyaXB0QXJndW1lbnRzIHsKK3B1YmxpYzoKKyAgICBTY3Jp
cHRBcmd1bWVudHMoU2NyaXB0U3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OworICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKKworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1
bWVudEF0KHNpemVfdCkgY29uc3Q7CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7
IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KKworICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxT
dGF0ZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoV1RGOjpT
dHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCA9IGZhbHNlKTsKKyAg
ICBib29sIGlzRXF1YWwoU2NyaXB0QXJndW1lbnRzKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsKKyAgICBWZWN0b3I8U2NyaXB0
VmFsdWU+IG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gU2NyaXB0QXJndW1lbnRzX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NTVkMjUKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgi
CisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJh
bWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1
bnNpZ25lZCBsaW5lTnVtYmVyKQorICAgIDogbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQor
ICAgICwgbV9zb3VyY2VVUkwodXJsU3RyaW5nKQorICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1i
ZXIpCit7Cit9CisKK1NjcmlwdENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSgpCit7Cit9CisK
K2Jvb2wgU2NyaXB0Q2FsbEZyYW1lOjppc0VxdWFsKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbykg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5hbWUgPT0gby5tX2Z1bmN0aW9uTmFtZQor
ICAgICAgICAmJiBtX3NvdXJjZVVSTCA9PSBvLm1fc291cmNlVVJMCisgICAgICAgICYmIG1fbGlu
ZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAoreworICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICBmcmFtZS0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBtX2Z1bmN0aW9uTmFtZSk7
CisgICAgZnJhbWUtPnNldFN0cmluZygic291cmNlVVJMIiwgbV9zb3VyY2VVUkwpOworICAgIGZy
YW1lLT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBtX2xpbmVOdW1iZXIpOworICAgIHJldHVybiBm
cmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGQ3N2UxCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0Q2FsbEZyYW1lX2gKKyNkZWZpbmUgU2NyaXB0Q2Fs
bEZyYW1lX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7CisKK2NsYXNzIFNjcmlwdENhbGxGcmFtZSAgeworcHVibGljOgorICAgIFNjcmlwdENhbGxG
cmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IHVuc2lnbmVkIGxpbmVOdW1iZXIpOworICAgIH5TY3JpcHRDYWxsRnJhbWUoKTsKKworICAgIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7
IH0KKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
VVJMOyB9CisgICAgdW5zaWduZWQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51
bWJlcjsgfQorCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZEluc3BlY3Rvck9iamVjdCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKKyAgICBTdHJp
bmcgbV9zb3VyY2VVUkw7CisgICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbEZyYW1lX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjhkMDEwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3Rh
Y2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mIGZyYW1lcykKK3sKKyAgICBtX2ZyYW1lcy5zd2Fw
KGZyYW1lcyk7Cit9CisKK1NjcmlwdENhbGxTdGFjazo6flNjcmlwdENhbGxTdGFjaygpCit7Cit9
CisKK2NvbnN0IFNjcmlwdENhbGxGcmFtZSAmU2NyaXB0Q2FsbFN0YWNrOjphdChzaXplX3QgaW5k
ZXgpCit7CisgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA+IGluZGV4KTsKKyAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdOworfQorCitzaXplX3QgU2NyaXB0Q2FsbFN0YWNrOjpzaXplKCkKK3sK
KyAgICByZXR1cm4gbV9mcmFtZXMuc2l6ZSgpOworfQorCitib29sIFNjcmlwdENhbGxTdGFjazo6
aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0Cit7CisgICAgaWYgKCFvKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgZnJhbWVDb3VudCA9IG8tPm1fZnJhbWVzLnNp
emUoKTsKKyAgICBpZiAoZnJhbWVDb3VudCAhPSBtX2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytp
KSB7CisgICAgICAgIGlmICghbV9mcmFtZXNbaV0uaXNFcXVhbChvLT5tX2ZyYW1lc1tpXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0
b3JPYmplY3QoKSBjb25zdAoreworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJhbWVzID0g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
cmFtZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIGZyYW1lcy0+cHVzaE9iamVjdChtX2ZyYW1lcy5h
dChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICByZXR1cm4gZnJhbWVzOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YzZiYmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICog
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAorI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tf
aAorCisjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEluc3BlY3RvckFycmF5OworCitjbGFzcyBTY3JpcHRDYWxsU3RhY2sgOiBwdWJsaWMg
Tm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0
YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKKworICAgIFNjcmlwdENhbGxTdGFjayhWZWN0b3I8U2Ny
aXB0Q2FsbEZyYW1lPiYpOworICAgIH5TY3JpcHRDYWxsU3RhY2soKTsKKworICAgIGNvbnN0IFNj
cmlwdENhbGxGcmFtZSAmYXQoc2l6ZV90KTsKKyAgICBzaXplX3Qgc2l6ZSgpOworICAgIHN0YXRp
YyBib29sIHN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CisK
KyAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBtX2ZyYW1lczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja19oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5k
ZXggMmQ0Y2M5OC4uN2RkODVhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKKyNpbmNsdWRl
ICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKQEAgLTc3
LDE5ICs3OCw2IEBAIHN0YXRpYyB2b2lkIHByaW50U291cmNlVVJMQW5kTGluZShjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlcikKICAgICB9CiB9CiAKLXN0YXRpYyBi
b29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lLCBTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVj
a0Zvck51bGxPclVuZGVmaW5lZCA9IGZhbHNlKQotewotICAgIGlmICghY2FsbEZyYW1lLmFyZ3Vt
ZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgU2NyaXB0VmFs
dWUmIHZhbHVlID0gY2FsbEZyYW1lLmFyZ3VtZW50QXQoMCk7Ci0gICAgaWYgKGNoZWNrRm9yTnVs
bE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gdmFsdWUudG9TdHJpbmcoc2Ny
aXB0U3RhdGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgdm9pZCBwcmludE1lc3Nh
Z2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsKQogewogICAgIGNvbnN0IGNoYXIqIHNvdXJjZVN0cmluZzsKQEAgLTE0NCw3ICsxMzIs
MTIgQEAgc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbAogICAgIHByaW50ZigiJXMgJXM6Iiwgc291cmNl
U3RyaW5nLCBsZXZlbFN0cmluZyk7CiB9CiAKLXZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCAwKTsKK30KKwordm9pZCBDb25z
b2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCkBAIC0xNTUsNyArMTQ4LDcgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGUKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIGNhbGxTdGFjaywgbWVzc2FnZSk7CisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCAw
LCBjYWxsU3RhY2spOwogICAgIGVsc2UKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAjZW5kaWYKQEAgLTE2OSw3ICsxNjIsNyBAQCB2b2lkIENv
bnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZQogICAgIHByaW50ZigiICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRh
KCkpOwogfQogCi12b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgYm9vbCBhY2NlcHRO
b0FyZ3VtZW50cykKK3ZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMs
ICBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBib29sIGFjY2VwdE5vQXJn
dW1lbnRzKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtMTc3LDE1ICsxNzAsMTUgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VU
eXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKgogCiAgICAgY29u
c3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKIAotICAg
IGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWxhc3RDYWxsZXIuYXJndW1lbnRDb3VudCgpKQor
ICAgIGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAoZ2V0Rmly
c3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2Fn
ZSkpCisgICAgaWYgKGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2Up
KQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
SlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVt
YmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0YWNrLCBtZXNzYWdlKTsKKyAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291
cmNlLCB0eXBlLCBsZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICNlbmRpZgogCiAg
ICAgaWYgKCFDb25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKQEAgLTE5NCw0OSArMTg3
LDQ5IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayoKICAgICBwcmludFNvdXJjZVVSTEFuZExpbmUo
bGFzdENhbGxlci5zb3VyY2VVUkwoKSwgMCk7CiAgICAgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2
ZWxQcmVmaXgoSlNNZXNzYWdlU291cmNlLCBsZXZlbCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAg
ICAgIFN0cmluZyBhcmdBc1N0cmluZzsKLSAgICAgICAgaWYgKGxhc3RDYWxsZXIuYXJndW1lbnRB
dChpKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBhcmdBc1N0cmluZykpCisgICAgICAg
IGlmIChhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkuZ2V0U3RyaW5nKGFyZ3VtZW50cy0+Z2xvYmFs
U3RhdGUoKSwgYXJnQXNTdHJpbmcpKQogICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBhcmdBc1N0
cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQogCi12b2lk
IENvbnNvbGU6OmRlYnVnKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xl
OjpkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIC8vIEluIEZpcmVidWcsIGNvbnNv
bGUuZGVidWcgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNvbnNvbGUubG9nLiBTbyB3ZSdsbCBk
byB0aGUgc2FtZS4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBsb2coYXJndW1lbnRzLCBjYWxs
U3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OmVycm9yKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQordm9pZCBDb25zb2xlOjplcnJvcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFk
ZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjYWxsU3RhY2spOwor
ICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBhcmd1bWVu
dHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6aW5mbyhTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6aW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewot
ICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25z
b2xlOjpsb2coUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKExvZ01lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShMb2dN
ZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6ZGlyKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25z
b2xlOjpkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKE9iamVjdE1l
c3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShP
YmplY3RNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7
CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyeG1sKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQor
dm9pZCBDb25zb2xlOjpkaXJ4bWwoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICAvLyBUaGUg
c3RhbmRhcmQgYmVoYXZpb3Igb2Ygb3VyIGNvbnNvbGUubG9nIHdpbGwgcHJpbnQgdGhlIERPTSB0
cmVlIGZvciBub2Rlcy4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBsb2coYXJndW1lbnRzLCBj
YWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjp0cmFjZShQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAg
IGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBjYWxsU3RhY2ss
IHRydWUpOworICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7CiAKICAgICBpZiAoIXNob3VsZFByaW50RXhj
ZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0yNDgsMTUgKzI0MSwxNSBAQCB2b2lkIENv
bnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAgIH0KIH0KIAotdm9p
ZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRp
b24sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIGNhbGxTdGFjaywgdHJ1ZSk7CisgICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKIH0KIAot
dm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29u
c29sZTo6Y291bnQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CkBAIC0yNjcsNyArMjYwLDcgQEAgdm9p
ZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICAgICAvLyBGb2xs
b3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGggbnVsbCBhbmQgdW5kZWZpbmVk
IHRpdGxlIGluCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3VtZW50CiAgICAgU3Ry
aW5nIHRpdGxlOwotICAgIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRl
KCksIGxhc3RDYWxsZXIsIHRpdGxlKTsKKyAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyh0aXRsZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvdW50
KHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7
CiAjZWxzZQpAQCAtMjc1LDIwICsyNjgsMTkgQEAgdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Om1hcmtUaW1l
bGluZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6bWFya1RpbWVs
aW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogICAg
IFN0cmluZyBtZXNzYWdlOwotICAgIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2st
PnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpOworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5tYXJrVGltZWxpbmUobWVzc2FnZSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxs
U3RhY2spOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogI2VuZGlmCiB9CiAKQEAgLTMy
MSw3ICszMTMsNyBAQCBTdHJpbmcgQ29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0
CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAotdm9pZCBDb25zb2xlOjpwcm9m
aWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9p
ZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NPd25QdHI8U2NyaXB0
QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3Rh
Y2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBA
IC0zNDIsNyArMzM0LDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAgICAgICByZXNvbHZlZFRpdGxlID0g
IiI7CiAjZW5kaWYKIAotICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChjYWxsU3RhY2stPnN0YXRl
KCksIHJlc29sdmVkVGl0bGUpOworICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChhcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDAp
OwpAQCAtMzUwLDcgKzM0Miw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBTdHJpbmcm
IHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQogCi12b2lkIENv
bnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBj
YWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwg
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIGlmICghcGFnZSkKQEAgLTM2Miw3ICszNTQsNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGVF
bmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUg
PSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKKyAgICBS
ZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKGFyZ3Vt
ZW50cy0+Z2xvYmFsU3RhdGUoKSwgdGl0bGUpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zOTQsNyArMzg2LDcgQEAgdm9pZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0
cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjp0
aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CkBAIC00MjAsMjggKzQxMiwz
MCBAQCB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2Fs
bFN0YWNrKiBjYWxsU3RhY2spCiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpncm91cChTY3Jp
cHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6Z3JvdXAoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoSlNNZXNzYWdlU291cmNlLCBjYWxsU3Rh
Y2spOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChhcmd1bWVu
dHMsIGNhbGxTdGFjayk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogICAg
IFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6Z3Jv
dXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6Omdy
b3VwQ29sbGFwc2VkKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3Vw
KEpTTWVzc2FnZVNvdXJjZSwgY2FsbFN0YWNrLCB0cnVlKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUpOwogI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbFN0
YWNrKTsKICNlbmRpZgogfQpAQCAtNDU3LDkgKzQ1MSwyMiBAQCB2b2lkIENvbnNvbGU6Omdyb3Vw
RW5kKCkKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Ondhcm4oU2NyaXB0Q2FsbFN0YWNrKiBj
YWxsU3RhY2spCitib29sIENvbnNvbGU6OnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpIGNv
bnN0Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzRnJvbnRlbmQoKTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgQ29uc29sZTo6d2FybihQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgV2Fy
bmluZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCiBNZW1vcnlJbmZv
KiBDb25zb2xlOjptZW1vcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuaCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKaW5kZXggYWI2MjUyNS4uOWE0OGZiNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2Ny
aXB0QXJndW1lbnRzOworCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc0FycmF5OwogI2VuZGlmCkBA
IC04MywzMiArODUsMzUgQEAgcHVibGljOgogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAg
IHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU2NyaXB0Q2FsbFN0
YWNrKiBjYWxsU3RhY2sgPSAwKTsKLQotICAgIHZvaWQgZGVidWcoU2NyaXB0Q2FsbFN0YWNrKik7
Ci0gICAgdm9pZCBlcnJvcihTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGluZm8oU2NyaXB0
Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBsb2coU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCB3
YXJuKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgZGlyKFNjcmlwdENhbGxTdGFjayopOwot
ICAgIHZvaWQgZGlyeG1sKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgdHJhY2UoU2NyaXB0
Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNj
cmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgY291bnQoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAg
dm9pZCBtYXJrVGltZWxpbmUoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwor
ICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKTsK
KworICAgIHZvaWQgZGVidWcoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgZXJyb3IoUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgaW5mbyhQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Cisg
ICAgdm9pZCBsb2coUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4pOworICAgIHZvaWQgd2FybihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBkaXIoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQg
ZGlyeG1sKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxs
U3RhY2s+KTsKKyAgICB2b2lkIHRyYWNlKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29s
IGNvbmRpdGlvbiwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4pOworICAgIHZvaWQgY291bnQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+
LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgbWFya1RpbWVsaW5lKFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsK
ICNpZiBFTkFCTEUoV01MKQogICAgIFN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3Q7
CiAjZW5kaWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICB2b2lkIHByb2Zp
bGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBwcm9maWxlRW5k
KGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgcHJvZmlsZShjb25z
dCBTdHJpbmcmLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CisgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYsIFBhc3NPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICNlbmRp
ZgogICAgIHZvaWQgdGltZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHRpbWVFbmQoY29uc3Qg
U3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBncm91cChTY3JpcHRDYWxsU3Rh
Y2sqKTsKLSAgICB2b2lkIGdyb3VwQ29sbGFwc2VkKFNjcmlwdENhbGxTdGFjayopOworICAgIHZv
aWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBncm91cChQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBn
cm91cENvbGxhcHNlZChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBncm91cEVuZCgpOwogCisgICAgYm9vbCBzaG91bGRD
YXB0dXJlRnVsbFN0YWNrVHJhY2UoKSBjb25zdDsKKwogICAgIHN0YXRpYyBib29sIHNob3VsZFBy
aW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9u
cyhib29sKTsKIApAQCAtMTIwLDcgKzEyNSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBp
bmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBib29sIGFjY2VwdE5vQXJndW1lbnRz
ID0gZmFsc2UpOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNr
PiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9IGZhbHNlKTsKIAogICAgIENvbnNvbGUoRnJhbWUq
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71424</attachid>
            <date>2010-10-21 05:11:34 -0700</date>
            <delta_ts>2010-10-21 05:28:04 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>script-arguments-2.patch</filename>
            <type>text/plain</type>
            <size>122579</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCAzMjg4MDU5Li5lZWEzNTM3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xNjYsOCArMTY2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5j
cHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotCWJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAotCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5j
cHAgXAorCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKIAliaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCBmZGVlNmZiLi42OTJiNDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpA
QCAtNDksOCArNDksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L1NjaGVk
dWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgXAog
CWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZy
YW1lLmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCisJYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0MmUzNDRhLi44ZjVk
NjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTY4Niw4ICs2ODYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTExMjMsNyArMTEyMiwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JT
dG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5jcHAKKyAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNiYjEyNS4uOTlmYWQxMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBkZWNvdXBsZSBTY3JpcHRBcmd1bWVudHMgZnJvbSBTY3JpcHRDYWxsU3Rh
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MDU4
CisKKyAgICAgICAgU2NyaXB0Q2FsbEZyYW1lIGFuZCBTY3JpcHRDYWxsU3RhY2sgYXJlIG5vdyB0
aGUgc2FtZSBmb3IgYm90aCBKU0MgYW5kIFY4LgorICAgICAgICBUaGUgZmFjdG9yeSBmdW5jdGlv
bnMgdGhhdCBhbGxvdyB0byBjcmVhdGUgU2NyaXB0Q2FsbFN0YWNrIGZyb20gVk0tc3BlY2lmaWMK
KyAgICAgICAgb2JqZWN0cyBhcmUgZGVmaW5lZCBpbiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cC4KKworICAgICAgICBTY3JpcHRBcmd1bWVudHMgY2xhc3MgaXMgdXNlZCBmb3IgcGFzc2luZyBh
cmd1bWVudHMgZnJvbSBKUyBjb2RlIHRvIHRoZSBuYXRpdmUKKyAgICAgICAgcGFydC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCB3aXRoIGV4aXN0
aW5nIENvbnNvbGUgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbEZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQ
dHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0
Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
bGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVD
YWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6
Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4Q29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25z
b2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
Ojp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
TWVzc2FnZTo6aXNFcXVhbCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3Vt
ZW50czo6U2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3VtZW50
czo6flNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6
OmFyZ3VtZW50QXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjpnbG9iYWxT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1l
bnRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmlzRXF1YWwp
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50Q291bnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
YWxsRnJhbWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjpi
dWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6ZnVuY3Rpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6c291cmNlVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6bGluZU51bWJlcik6CisgICAgICAgICog
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6aXNFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
Q29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRlYnVnKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNv
bGU6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcik6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkaXJ4bWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6dHJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YXNzZXJ0Q29uZGl0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpw
cm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGVFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
Ojpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cENvbGxhcHNlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9Db25zb2xl
Lmg6CisKIDIwMTAtMTAtMjAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMWYyNTUw
MC4uYmUxMWI3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC04MTYsMTAgKzgxNiw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxGcmFtZS5jcHAgXAotCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgg
XAotCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCi0JV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBcCkBAIC0xODUxLDggKzE4NDksMTQg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBcCisJV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwIFwKIAlXZWJD
b3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmggXAorCVdlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5jcHAgXAorCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5o
IFwKKwlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIFwKKwlXZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIu
aCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDcwNWE0MzAuLjBhNzhkOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02OTksMTAgKzY5OSw2IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1Nj
cmlwdENhY2hlZEZyYW1lRGF0YS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsRnJhbWUuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUu
aCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcCcsCi0gICAg
ICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJHdGsuY3BwJywKQEAgLTg2OSwxMCArODY1LDggQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9TY29wZWRET01EYXRhU3RvcmUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxG
cmFtZS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oJywK
LSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwJywKLSAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwJywKQEAgLTE5NTMsNiArMTk0NywxMiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0QnJl
YWtwb2ludC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmgn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9TY3JpcHRDYWxsRnJhbWUuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2Fs
bEZyYW1lLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwJywK
KyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYjZhYzRhZS4uOWMwOTE4OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNTEsOCAr
MzUxLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3Bw
IFwKICMgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotICAgICAgICBiaW5kaW5ncy92OC9T
Y3JpcHRDYWxsRnJhbWUuY3BwIFwKLSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNr
LmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9TY3Jp
cHRFdmVudExpc3RlbmVyLmNwcCBcCkBAIC01NzQsOCArNTczLDcgQEAgdjggewogICAgICAgICBi
aW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsRnJhbWUuY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRFdmVu
dExpc3RlbmVyLmNwcCBcCkBAIC0xMDEyLDcgKzEwMTAsMTAgQEAgU09VUkNFUyArPSBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
IFwKKyAgICBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCiAgICAgaW5zcGVjdG9yL1Nj
cmlwdEJyZWFrcG9pbnQuY3BwIFwKKyAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBc
CisgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgXAogICAgIGluc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmQ5NDIxYy4uNmQ4NjNjMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02MDM5NCw3ICs2MDM5NCw3IEBACiAJ
CQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRDYWxsRnJhbWUuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCINCiAJCQkJCT4NCiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTYwNDQ2LDYz
ICs2MDQ0Niw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbEZy
YW1lLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNrLmNwcCINCi0JCQkJCT4NCi0JCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRv
b2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9
IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
LQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
LQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQot
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMy
Ig0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9v
bA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJ
CT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
CS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFjay5oIg0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCkBAIC02MzM5NSw2ICs2MzMz
OSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxpbnNwZWN0b3JcU2NyaXB0QXJndW1lbnRzLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1bWVu
dHMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxTY3JpcHRCcmVha3BvaW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CkBAIC02MzQwMyw2ICs2MzM1NSwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbEZyYW1lLmNwcCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxTY3JpcHRDYWxsRnJhbWUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRDYWxsU3RhY2suY3BwIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXFNjcmlwdENhbGxTdGFjay5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdERlYnVnTGlzdGVuZXIuaCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDViYzQ0MGIuLjg3ZDg5MjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01NDU5LDYgKzU0NTksMTAgQEAKIAkJRjM2NDRBRkYxMTE5ODA1
OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5jcHAgKi87IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07CiAJCUYz
NzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3NUNDMDYxMTUwRDMw
MDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi87IH07CisJCUYzOTIyNDlD
MTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOTIyNDlBMTI2RjExQUUwMEE5
MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCAqLzsgfTsKKwkJRjM5MjI0OUQxMjZG
MTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAv
KiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi87IH07CisJCUYzOUJFOTVCMTI2NzNCRjQwMEUw
QTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3Vt
ZW50cy5jcHAgKi87IH07CisJCUYzOUJFOTVDMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1
bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
OUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLzsgfTsKIAkJRjNE
NDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NjEx
NjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCAqLzsgfTsK
IAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNENDYx
NDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovOyB9
OwogCQlGNEVBRjRBRTEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFQUY0QUMxMEM3
NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsgfTsKQEAgLTExNDg1LDYg
KzExNDg5LDEwIEBACiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlw
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZFMTExOTgwNTkwMEUw
RDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmplY3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzc1Q0Mw
NjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0
IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
MzlCRTk1QTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RUFGNEFDMTBDNzQy
QjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBPcGVuVHlwZVNhbml0aXplci5jcHA7IHBhdGggPSBvcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI1
Niw4ICsxMjI2NCwxNCBAQAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0
b3JXb3JrZXJSZXNvdXJjZS5oICovLAogCQkJCTFDODFCQTA1MEU5NzM0ODMwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0Ig
LyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKKwkJCQlGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQg
LyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLywKKwkJCQlGMzlCRTk1QTEyNjczQkY0MDBFMEE2NzQg
LyogU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJMjAwQjE5MDgxMUMyNzdEOTAwRENDRDNBIC8q
IFNjcmlwdEJyZWFrcG9pbnQuY3BwICovLAogCQkJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAv
KiBTY3JpcHRCcmVha3BvaW50LmggKi8sCisJCQkJNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCisJCQkJNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxGcmFtZS5oICovLAorCQkJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsU3RhY2suY3BwICovLAorCQkJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsU3RhY2suaCAqLywKIAkJCQk3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2Ny
aXB0RGVidWdMaXN0ZW5lci5oICovLAogCQkJCTlGQTM3RUVGMTE3MkZENDEwMEM0Q0Q1NSAvKiBT
Y3JpcHRQcm9maWxlLmlkbCAqLywKIAkJCQk5RkEzN0VGMDExNzJGRDQxMDBDNENENTUgLyogU2Ny
aXB0UHJvZmlsZU5vZGUuaWRsICovLApAQCAtMTY3NzMsMTAgKzE2Nzg3LDggQEAKIAkJCQlCQ0Ez
NzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi8sCiAJCQkJNDFGMUQy
MUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi8sCiAJCQkJ
NDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovLAot
CQkJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAot
CQkJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKLQkJ
CQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKLQkJ
CQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCisJCQkJ
RjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICov
LAorCQkJCUYzOTIyNDlCMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmggKi8sCiAJCQkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIu
Y3BwICovLAogCQkJCTkzQjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250cm9sbGVy
LmggKi8sCiAJCQkJQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJN
YWMubW0gKi8sCkBAIC0yMDU1Miw2ICsyMDU2NCw3IEBACiAJCQkJMUNFRkM5QjkwRDc4REM4QzAw
N0QyNTc5IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MkM3RjUxMUY3
N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VD
MDFCRTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzlC
RTk1QzEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0
QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUz
IC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTEyNiw2ICsy
MTEzOSw3IEBACiAJCQkJMDgxQ0RGQjkxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFDREZCQTEyNkVD
RkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4MUNERkJGMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5
U3luY2hyb25pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzkyMjQ5RDEyNkYxMUFFMDBBOTI2
RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBF
MDQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDUxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjMx
NzksNiArMjMxOTMsNyBAQAogCQkJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkg
LyogU2NyZWVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5
MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjM5
QkU5NUIxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNkU3NUNDMEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMzY4Nyw2ICsy
MzcwMiw3IEBACiAJCQkJOTcyOEMzMTMxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYg
LyogSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzOTIyNDlDMTI2RjEx
QUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IGNmMDhjYTku
LmUyMDEyY2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
QEAgLTE0MSw4ICsxNDEsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUluZm8uY3BwIgogI2luY2x1ZGUg
IlNjaGVkdWxlZEFjdGlvbi5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNw
cCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuY3BwIgotI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFjay5jcHAiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlcldpbi5j
cHAiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjc0Yjk2
Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotCi0jaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+
Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUo
Y29uc3QgVVN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiB1cmxTdHJpbmcsIGlu
dCBsaW5lTnVtYmVyLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50
KQotICAgIDogbV9mdW5jdGlvbk5hbWUodXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSkpCi0g
ICAgLCBtX3NvdXJjZVVSTCh1c3RyaW5nVG9TdHJpbmcodXJsU3RyaW5nKSkKLSAgICAsIG1fbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQotewotICAgIGlmICghZXhlYykKLSAgICAgICAgcmV0dXJuOwot
ICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkK
LSAgICAgICAgbV9hcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3VtZW50KGkp
KSk7Ci19Ci0KLVNjcmlwdENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSgpCi17Ci19Ci0KLWNv
bnN0IFNjcmlwdFZhbHVlICZTY3JpcHRDYWxsRnJhbWU6OmFyZ3VtZW50QXQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fYXJndW1lbnRzLnNpemUoKSA+IGluZGV4KTsKLSAg
ICByZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzFhZWM3ZS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNj
cmlwdENhbGxGcmFtZV9oCi0jZGVmaW5lIFNjcmlwdENhbGxGcmFtZV9oCi0KLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIFVT
dHJpbmc7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0Q2FsbEZyYW1l
ICB7Ci1wdWJsaWM6Ci0gICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IEpTQzo6VVN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBKU0M6OlVTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIs
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwotICAgIH5TY3Jp
cHRDYWxsRnJhbWUoKTsKLQotICAgIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9Ci0gICAgdW5zaWduZWQgbGluZU51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQotCi0gICAgLy8gYXJndW1lbnQgcmV0cmll
dmFsIG1ldGhvZHMKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgYXJndW1lbnRBdCh1bnNpZ25lZCkg
Y29uc3Q7Ci0gICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJn
dW1lbnRzLnNpemUoKTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsK
LSAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOwotCi0g
ICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNjFi
MDcuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotCi0jaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg+Ci0jaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KLSNpbmNsdWRl
IDxydW50aW1lL0pTRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNp
bmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0
YS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNj
cmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
c2tpcEFyZ3VtZW50Q291bnQpCi0gICAgOiBtX2luaXRpYWxpemVkKGZhbHNlKQotICAgICwgbV9l
eGVjKGV4ZWMpCi0gICAgLCBtX2NhbGxlcigwKQotewotICAgIGludCBzaWduZWRMaW5lTnVtYmVy
OwotICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgdXJsU3RyaW5nOwotICAgIEpT
VmFsdWUgZnVuY3Rpb247Ci0KLSAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RD
YWxsZXIoZXhlYywgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rp
b24pOwotCi0gICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/
IHNpZ25lZExpbmVOdW1iZXIgOiAwOwotCi0gICAgaWYgKGZ1bmN0aW9uKSB7Ci0gICAgICAgIG1f
Y2FsbGVyID0gYXNGdW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChT
Y3JpcHRDYWxsRnJhbWUobV9jYWxsZXItPm5hbWUobV9leGVjKSwgdXJsU3RyaW5nLCBsaW5lTnVt
YmVyLCBtX2V4ZWMsIHNraXBBcmd1bWVudENvdW50KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gQ2FsbGVyIGlzIHVua25vd24sIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBmcmFtZSwg
YmVjYXVzZQotICAgICAgICAvLyBzb21ldGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1
bWVudHMuCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoVVN0cmluZygp
LCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIsIG1fZXhlYywgc2tpcEFyZ3VtZW50Q291bnQpKTsKLSAg
ICB9Ci19Ci0KLVNjcmlwdENhbGxTdGFjazo6flNjcmlwdENhbGxTdGFjaygpCi17Ci19Ci0KLWNv
bnN0IFNjcmlwdENhbGxGcmFtZSAmU2NyaXB0Q2FsbFN0YWNrOjphdCh1bnNpZ25lZCBpbmRleCkK
LXsKLSAgICAvLyBGaXJzdCBmcmFtZSBpcyBwcmUtcG9wdWxhdGVkIGluIGNvbnN0cnVjdG9yLCBz
byBkb24ndCB0cmlnZ2VyCi0gICAgLy8gaW5pdGlhbGl6YXRpb24gdW5sZXNzIGxvb2tpbmcgYmV5
b25kIHRoZSBmaXJzdCBmcmFtZS4KLSAgICBpZiAoaW5kZXggPiAwKQotICAgICAgICBpbml0aWFs
aXplKCk7Ci0gICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA+IGluZGV4KTsKLSAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdOwotfQotCi11bnNpZ25lZCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQot
ewotICAgIGluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gbV9mcmFtZXMuc2l6ZSgpOwotfQotCi12
b2lkIFNjcmlwdENhbGxTdGFjazo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgaWYgKCFtX2NhbGxlciB8
fCBtX2luaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQgc2lnbmVkTGluZU51
bWJlcjsKLSAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBVU3RyaW5nIHVybFN0cmluZzsKLSAg
ICBKU1ZhbHVlIGZ1bmN0aW9uOwotICAgIC8vIGNhbGxGcmFtZSBtdXN0IGV4aXN0IGlmIG1fY2Fs
bGVyIGlzIG5vdCBudWxsLgotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gbV9leGVjLT5jYWxs
ZXJGcmFtZSgpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIEFTU0VSVChjYWxsRnJhbWUp
OwotICAgICAgICBtX2V4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihjYWxs
RnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsK
LSAgICAgICAgaWYgKCFmdW5jdGlvbikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBKU0Z1
bmN0aW9uKiBqc0Z1bmN0aW9uID0gYXNGdW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAgIHVuc2ln
bmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVy
IDogMDsKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShqc0Z1bmN0aW9u
LT5uYW1lKG1fZXhlYyksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9leGVjLCAwKSk7Ci0gICAg
ICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKLSAgICB9Ci0gICAgbV9p
bml0aWFsaXplZCA9IHRydWU7Ci19Ci0KLWJvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNl
KGludCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdkMWM0Ni4uMDAwMDAwMAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCi0jZGVmaW5lIFNj
cmlwdENhbGxTdGFja19oCi0KLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwot
ICAgIGNsYXNzIEpTVmFsdWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNz
IEluc3BlY3RvckFycmF5OwotCi0gICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxTdGFjayhKU0M6OkV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50ID0gMCk7Ci0gICAgICAgIH5TY3Jp
cHRDYWxsU3RhY2soKTsKLQotICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2V4ZWM7IH0KLSAgICAgICAgU2NyaXB0U3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsgfQot
ICAgICAgICAvLyBmcmFtZSByZXRyaWV2YWwgbWV0aG9kcwotICAgICAgICBjb25zdCBTY3JpcHRD
YWxsRnJhbWUgJmF0KHVuc2lnbmVkKTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZSgpOwotICAgICAg
ICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGludCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgICAg
IGJvb2wgbV9pbml0aWFsaXplZDsKLQotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwot
ICAgICAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBtX2ZyYW1lczsKLSAgICAgICAgSlNDOjpK
U0Z1bmN0aW9uKiBtX2NhbGxlcjsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjVmYWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3Jp
cHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2luY2x1
ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0dsb2JhbERhdGEuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL1VTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbWF4U3RhY2tTaXplKQoreworICAgIFZl
Y3RvcjxTY3JpcHRDYWxsRnJhbWU+IGZyYW1lczsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IGV4ZWM7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Cisg
ICAgICAgIGludCBzaWduZWRMaW5lTnVtYmVyOworICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsK
KyAgICAgICAgVVN0cmluZyB1cmxTdHJpbmc7CisgICAgICAgIEpTVmFsdWUgZnVuY3Rpb247CisK
KyAgICAgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGNhbGxGcmFt
ZSwgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOworICAg
ICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICAgICAgaWYgKGZ1bmN0aW9uKQorICAgICAg
ICAgICAgZnVuY3Rpb25OYW1lID0gYXNGdW5jdGlvbihmdW5jdGlvbiktPm5hbWUoZXhlYyk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2FsbGVyIGlzIHVua25vd24sIGJ1dCBpZiBm
cmFtZXMgaXMgZW1wdHkgd2Ugc2hvdWxkIHN0aWxsIGFkZCB0aGUgZnJhbWUsIGJlY2F1c2UKKyAg
ICAgICAgICAgIC8vIHNvbWV0aGluZyBjYWxsZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4K
KyAgICAgICAgICAgIGlmICghZnJhbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51
bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDA7CisgICAgICAgIGZyYW1lcy5hcHBlbmQo
U2NyaXB0Q2FsbEZyYW1lKHVzdHJpbmdUb1N0cmluZyhmdW5jdGlvbk5hbWUpLCB1c3RyaW5nVG9T
dHJpbmcodXJsU3RyaW5nKSwgbGluZU51bWJlcikpOworICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8
IGZyYW1lcy5zaXplKCkgPT0gbWF4U3RhY2tTaXplKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soZnJhbWVzKTsKK30KKworUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCit7CisgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1
bWVudHM7CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7
CisgICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKQorICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPmFyZ3Vt
ZW50KGkpKSk7CisgICAgcmV0dXJuIG5ldyBTY3JpcHRBcmd1bWVudHMoZXhlYywgYXJndW1lbnRz
KTsKK30KKworYm9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0ZDg4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAorI2Rl
ZmluZSBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEFyZ3VtZW50czsKK2NsYXNzIFNjcmlwdENhbGxTdGFj
azsKKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhK
U0M6OkV4ZWNTdGF0ZSosIHNpemVfdCBtYXhTdGFja1NpemUpOworUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHNraXBBcmd1bWVudENvdW50KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5k
ZXggNmJlZjRmNy4uY2U0MzUxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNTIs
NyArNTIsNyBAQCBjbGFzcyBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0ciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoKSB7IH0KICAgICBT
Y3JpcHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIDogbV9nbG9i
YWxPYmplY3Qoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkgeyB9Ci0gICAgU2Ny
aXB0U3RhdGUqIGdldCgpCisgICAgU2NyaXB0U3RhdGUqIGdldCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAobV9nbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbV9nbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDBiNTZmMTMuLjIzZGI5NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTk2Niw4ICsxOTY2LDEyIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG15ICRoYXNPcHRpb25hbEFyZ3Vt
ZW50cyA9IDA7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTY3JpcHRDYWxsU3Rh
Y2sgY2FsbFN0YWNrKGV4ZWMsICRudW1QYXJhbWV0ZXJzKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
c2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAkbnVtUGFyYW1ldGVy
cykpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2Uo
KSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE93blB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgbWF4
U3RhY2tTaXplKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAkY2FsbFdpdGggPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CkBAIC0y
MzU3LDggKzIzNjEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgp
CiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIs
ICIgaWYgJHBhcmFtSW5kZXg7Ci0gICAgICAgICsrJHBhcmFtSW5kZXg7Ci0gICAgICAgICRmdW5j
dGlvblN0cmluZyAuPSAiJmNhbGxTdGFjayI7CisgICAgICAgICRwYXJhbUluZGV4ICs9IDI7Cisg
ICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAic2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2Fs
bFN0YWNrLnJlbGVhc2UoKSI7CiAgICAgfQogCiAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNF
eGNlcHRpb25zfSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggNzUxZTM1MC4uMGM3OWU2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMzA0LDExICsxMzA0LDE1IEBAIEVORAogCiAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1l
bnRIYW5kbGluZyJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
LSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpj
cmVhdGUoYXJncywgJG51bVBhcmFtZXRlcnMpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRz
PiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsICRudW1QYXJhbWV0
ZXJzKSk7CisgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxT
dGFja1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUg
OiAxOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRD
YWxsU3RhY2sobWF4U3RhY2tTaXplKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiBFTkQKKyAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0
QXJndW1lbnRzLmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFj
ay5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgifSA9IDE7CiAgICAgfQogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlNWR0NoZWNrU2VjdXJpdHlEb2N1bWVudCJ9KSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKQEAgLTI3MTksOCArMjcyMyw4IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAg
ICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwotICAgICAgICAkZnVuY3Rpb25T
dHJpbmcgLj0gImNhbGxTdGFjay5nZXQoKSI7Ci0gICAgICAgICRpbmRleCsrOworICAgICAgICAk
ZnVuY3Rpb25TdHJpbmcgLj0gInNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5y
ZWxlYXNlKCkiOworICAgICAgICAkaW5kZXggKz0gMjsKICAgICB9CiAKICAgICBpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1VzZXJHZXN0dXJlQ2hl
Y2sifSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmMGM3MzQzLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgot
Ci0jaW5jbHVkZSA8djguaD4KLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRD
YWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNp
Z25lZCBza2lwQXJndW1lbnRDb3VudCkKLSAgICA6IG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFt
ZSkKLSAgICAsIG1fc291cmNlVVJMKHVybFN0cmluZykKLSAgICAsIG1fbGluZU51bWJlcihsaW5l
TnVtYmVyKQotewotICAgIGZvciAoaW50IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3Vt
ZW50cy5MZW5ndGgoKTsgKytpKQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFs
dWUoYXJndW1lbnRzW2ldKSk7Ci19Ci0KLVNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1l
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50
IGxpbmVOdW1iZXIpCi0gICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCi0gICAgLCBt
X3NvdXJjZVVSTCh1cmxTdHJpbmcpCi0gICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKLXsK
LX0KLQotU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkKLXsKLX0KLQotY29uc3Qg
U2NyaXB0VmFsdWUmIFNjcmlwdENhbGxGcmFtZTo6YXJndW1lbnRBdCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwotICAgIHJl
dHVybiBtX2FyZ3VtZW50c1tpbmRleF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZjc3ZDRhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bEZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Ny
aXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKLQotI2luY2x1ZGUgIktV
UkwuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAgICBj
bGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTY3Jp
cHRWYWx1ZTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmV0cmlldmluZyBsaW5lIG51bWJl
ciBhbmQgc291cmNlIFVSTCBhbmQgc3RvcmluZyBoZXJlCi0gICAgLy8gZm9yIGFsbCBjYWxsIGZy
YW1lcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1Nj4gYW5kCi0gICAgLy8gPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4MD4KLSAgICBjbGFzcyBTY3JpcHRDYWxs
RnJhbWUgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVtYmVy
LCBjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwotICAg
ICAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcik7Ci0gICAgICAgIH5TY3JpcHRDYWxsRnJh
bWUoKTsKLQotICAgICAgICBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25OYW1lOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQotCi0gICAgICAgIC8vIGFyZ3VtZW50
IHJldHJpZXZhbCBtZXRob2RzCi0gICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0
KHVuc2lnbmVkKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKLQotICAgICAgICBWZWN0b3I8U2NyaXB0VmFsdWU+
IG1fYXJndW1lbnRzOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFNjcmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjljN2EuLjAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U2NvcGUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLQotI2luY2x1ZGUg
PHY4LWRlYnVnLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQgZ2V0RnJh
bWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSwgU3RyaW5nKiBzb3Vy
Y2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKQotewot
ICAgIEFTU0VSVCghZnJhbWUuSXNFbXB0eSgpKTsKLSAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4g
c291cmNlTmFtZVZhbHVlKGZyYW1lLT5HZXRTY3JpcHROYW1lT3JTb3VyY2VVUkwoKSk7Ci0gICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZyYW1lLT5HZXRGdW5jdGlv
bk5hbWUoKSk7Ci0gICAgKnNvdXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpID8g
IiIgOiB0b1dlYkNvcmVTdHJpbmcoc291cmNlTmFtZVZhbHVlKTsKLSAgICAqZnVuY3Rpb25OYW1l
ID0gZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVu
Y3Rpb25OYW1lVmFsdWUpOwotICAgICpzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVO
dW1iZXIoKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0VG9wRnJhbWVMb2NhdGlvbih2ODo6SGFuZGxl
PHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlLCBTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291
cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgaWYgKHN0YWNrVHJh
Y2UtPkdldEZyYW1lQ291bnQoKSA8PSAwKSB7Ci0gICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFi
YmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBp
biBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgotICAgICAgICAvLyBGYWxsYmFj
ayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFt
ZSB0byAidW5kZWZpbmVkIi4KLSAgICAgICAgKnNvdXJjZU5hbWUgPSAidW5kZWZpbmVkIjsKLSAg
ICAgICAgKnNvdXJjZUxpbmVOdW1iZXIgPSAwOwotICAgICAgICAqZnVuY3Rpb25OYW1lID0gInVu
ZGVmaW5lZCI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFt
ZT4gZnJhbWUgPSBzdGFja1RyYWNlLT5HZXRGcmFtZSgwKTsKLSAgICAgICAgZ2V0RnJhbWVMb2Nh
dGlvbihmcmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgZnVuY3Rpb25OYW1lKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9TY3JpcHRD
YWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCi17Ci0gICAgU3RyaW5n
IHNvdXJjZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0
aW9uTmFtZTsKLSAgICBnZXRGcmFtZUxvY2F0aW9uKGZyYW1lLCAmc291cmNlTmFtZSwgJnNvdXJj
ZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbEZy
YW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7Ci19Ci0KLXN0
YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxP
d25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKQotewotICAgIHY4OjpD
b250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgaW50IGZyYW1lQ291bnQg
PSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm
cmFtZUNvdW50OyBpKyspIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1lPiBzdGFj
a0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7Ci0gICAgICAgIHNjcmlwdENhbGxGcmFt
ZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKLSAgICB9Ci19Ci0KLWNv
bnN0IGludCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgPSAyMDA7
Ci1jb25zdCB2ODo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMgU2NyaXB0Q2FsbFN0YWNr
OjpzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1Ry
YWNlT3B0aW9ucz4oCi0gICAgIHY4OjpTdGFja1RyYWNlOjprTGluZU51bWJlcgotICAgIHwgdjg6
OlN0YWNrVHJhY2U6OmtDb2x1bW5PZmZzZXQKLSAgICB8IHY4OjpTdGFja1RyYWNlOjprU2NyaXB0
TmFtZU9yU291cmNlVVJMCi0gICAgfCB2ODo6U3RhY2tUcmFjZTo6a0Z1bmN0aW9uTmFtZSk7Ci0K
LQotUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQs
IGludCBmcmFtQ291bnRMaW1pdCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQo
KTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotICAgIHY4
OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJl
bnRTdGFja1RyYWNlKGZyYW1Db3VudExpbWl0LCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VP
cHRpb25zKSk7Ci0KLSAgICBpZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgU3RyaW5nIHNvdXJjZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7
Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBnZXRUb3BGcmFtZUxvY2F0aW9uKHN0YWNr
VHJhY2UsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7Ci0K
LSAgICBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOwot
ICAgIGlmIChmcmFtQ291bnRMaW1pdCA+IDEpCi0gICAgICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1Zl
Y3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsKLQotICAgIHJldHVy
biBuZXcgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpLCBu
ZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51
bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCksIHNjcmlwdENhbGxGcmFtZXMpOwot
fQotCi1QYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUo
U2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNl
KQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBWZWN0b3I8T3duUHRyPFNjcmlw
dENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOwotICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1Zl
Y3RvcihzdGF0ZS0+Y29udGV4dCgpLCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsKLQot
ICAgIFN0cmluZyBzb3VyY2VOYW1lOwotICAgIGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIFN0
cmluZyBmdW5jdGlvbk5hbWU7Ci0gICAgZ2V0VG9wRnJhbWVMb2NhdGlvbihzdGFja1RyYWNlLCAm
c291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOwotCi0gICAgcmV0
dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soc3RhdGUsIG5ldyBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rp
b25OYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKSwgc2NyaXB0Q2FsbEZyYW1lcyk7
Ci19Ci0KLVNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZyYW1lLCBWZWN0b3I8T3du
UHRyPFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcykKLSAgICA6IG1fdG9wRnJh
bWUodG9wRnJhbWUpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotICAgIG1f
c2NyaXB0Q2FsbEZyYW1lcy5zd2FwKHNjcmlwdENhbGxGcmFtZXMpOwotfQotCi1TY3JpcHRDYWxs
U3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQotewotfQotCi1jb25zdCBTY3JpcHRDYWxsRnJhbWUm
IFNjcmlwdENhbGxTdGFjazo6YXQodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgaWYgKCFpbmRleCAm
JiBtX3RvcEZyYW1lKQotICAgICAgICByZXR1cm4gKm1fdG9wRnJhbWU7Ci0gICAgcmV0dXJuICpt
X3NjcmlwdENhbGxGcmFtZXMuYXQoaW5kZXgpOwotfQotCi11bnNpZ25lZCBTY3JpcHRDYWxsU3Rh
Y2s6OnNpemUoKQotewotICAgIGlmIChtX3NjcmlwdENhbGxGcmFtZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gbV9zY3JpcHRDYWxsRnJhbWVzLnNpemUoKTsKLX0K
LQotCi1ib29sIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZShpbnQgZnJhbWVMaW1pdCwgY29u
c3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3RhY2tUcmFjZSkKLXsKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250
ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0
OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tU
cmFjZT4gdHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1lTGltaXQp
KTsKLSAgICBpbnQgZnJhbWVDb3VudCA9IHRyYWNlLT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgaWYg
KHRyYWNlLklzRW1wdHkoKSB8fCAhZnJhbWVDb3VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIHY4OjpI
YW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lID0gdHJhY2UtPkdldEZyYW1lKGkpOwotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzY3JpcHROYW1lID0gZnJh
bWUtPkdldFNjcmlwdE5hbWUoKTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygic2Ny
aXB0TmFtZSIsIHNjcmlwdE5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc2Ny
aXB0TmFtZSkpOwotICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1lID0g
ZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpOwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5n
KCJmdW5jdGlvbk5hbWUiLCBmdW5jdGlvbk5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVT
dHJpbmcoZnVuY3Rpb25OYW1lKSk7Ci0gICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImxp
bmVOdW1iZXIiLCBmcmFtZS0+R2V0TGluZU51bWJlcigpKTsKLSAgICAgICAgZnJhbWVPYmplY3Qt
PnNldE51bWJlcigiY29sdW1uIiwgZnJhbWUtPkdldENvbHVtbigpKTsKLSAgICAgICAgc3RhY2tU
cmFjZS0+cHVzaE9iamVjdChmcmFtZU9iamVjdCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk4ZTUxOTUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDYWxsU3RhY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAotCi0jaW5j
bHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KLWNs
YXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0IGludCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlOwotICAgIHN0YXRpYyBj
b25zdCB2ODo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMgc3RhY2tUcmFjZU9wdGlvbnM7
Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShjb25zdCB2
ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQgPSAwLCBpbnQgZnJhbUNv
dW50TGltaXQgPSAxKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNy
ZWF0ZShTY3JpcHRTdGF0ZSosIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+KTsKLSAgICB+U2Ny
aXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vIHJ1
bm5pbmcgSmF2YVNjcmlwdCBvciBpZiBmZXRjaGluZyB0aGUgc3RhY2sgZmFpbGVkLgotICAgIC8v
IFNldHMgc3RhY2tUcmFjZSB0byBiZSBhbiBhcnJheSBvZiBzdGFjayBmcmFtZSBvYmplY3RzLgot
ICAgIC8vIEEgc3RhY2sgZnJhbWUgb2JqZWN0IGxvb2tzIGxpa2U6Ci0gICAgLy8gewotICAgIC8v
ICAgc2NyaXB0TmFtZTogPGZpbGUgbmFtZSBmb3IgdGhlIGFzc29jaWF0ZWQgc2NyaXB0IHJlc291
cmNlPgotICAgIC8vICAgZnVuY3Rpb25OYW1lOiA8bmFtZSBvZiB0aGUgSmF2YVNjcmlwdCBmdW5j
dGlvbj4KLSAgICAvLyAgIGxpbmVOdW1iZXI6IDwxIGJhc2VkIGxpbmUgbnVtYmVyPgotICAgIC8v
ICAgY29sdW1uOiA8MSBiYXNlZCBjb2x1bW4gb2Zmc2V0IG9uIHRoZSBsaW5lPgotICAgIC8vIH0K
LSAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKTsKLQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFt
ZSYgYXQodW5zaWduZWQpOwotICAgIHVuc2lnbmVkIHNpemUoKTsKLQotICAgIFNjcmlwdFN0YXRl
KiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KLSAgICBTY3JpcHRTdGF0
ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLXByaXZh
dGU6Ci0gICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093
blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZyYW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxG
cmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcyk7Ci0gICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSk7
Ci0KLSAgICBPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiBtX3RvcEZyYW1lOwotICAgIFNjcmlwdFN0
YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+
IG1fc2NyaXB0Q2FsbEZyYW1lczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFNjcmlwdENhbGxTdGFja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
MmZiZWVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3Jp
cHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJT
Y3JpcHRTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisKKyNpbmNsdWRlIDx2OC1kZWJ1Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBTY3JpcHRDYWxsRnJhbWUgdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6
U3RhY2tGcmFtZT4gZnJhbWUpCit7CisgICAgU3RyaW5nIHNvdXJjZU5hbWU7CisgICAgdjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IHNvdXJjZU5hbWVWYWx1ZShmcmFtZS0+R2V0U2NyaXB0TmFtZU9yU291
cmNlVVJMKCkpOworICAgIGlmICghc291cmNlTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAg
c291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhzb3VyY2VOYW1lVmFsdWUpOworCisgICAgU3Ry
aW5nIGZ1bmN0aW9uTmFtZTsKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1l
VmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpKTsKKyAgICBpZiAoIWZ1bmN0aW9uTmFtZVZh
bHVlLklzRW1wdHkoKSkKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gdG9XZWJDb3JlU3RyaW5nKGZ1
bmN0aW9uTmFtZVZhbHVlKTsKKworICAgIGludCBzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdl
dExpbmVOdW1iZXIoKTsKKyAgICByZXR1cm4gU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7Cit9CisKK3N0YXRpYyB2b2lkIHRvU2NyaXB0
Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5k
bGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBz
Y3JpcHRDYWxsRnJhbWVzLCBzaXplX3QgbWF4U3RhY2tTaXplKQoreworICAgIC8vIFRPRE8oeXVy
eXMpOiByZW1vdmUgdGhpcz8/PworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
Y29udGV4dCk7CisgICAgaW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50
KCk7CisgICAgaWYgKGZyYW1lQ291bnQgPiBzdGF0aWNfY2FzdDxpbnQ+KG1heFN0YWNrU2l6ZSkp
CisgICAgICAgIGZyYW1lQ291bnQgPSBtYXhTdGFja1NpemU7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1l
PiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIHNjcmlwdENh
bGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFmcmFtZUNvdW50KSB7CisgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFi
YmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBp
biBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgorICAgICAgICAvLyBGYWxsYmFj
ayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFt
ZSB0byAidW5kZWZpbmVkIi4KKyAgICAgICAgc2NyaXB0Q2FsbEZyYW1lcy5hcHBlbmQoU2NyaXB0
Q2FsbEZyYW1lKCJ1bmRlZmluZWQiLCAidW5kZWZpbmVkIiwgMCkpOworICAgIH0KK30KKworUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJh
Y2UsIHNpemVfdCBtYXhTdGFja1NpemUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICBWZWN0
b3I8U2NyaXB0Q2FsbEZyYW1lPiBzY3JpcHRDYWxsRnJhbWVzOworICAgIHRvU2NyaXB0Q2FsbEZy
YW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzLCBtYXhTdGFj
a1NpemUpOworICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKHNjcmlwdENhbGxGcmFtZXMp
OworfQorCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KHNpemVfdCBtYXhTdGFja1NpemUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCk7CisgICAgLy8gVE9ETyh5dXJ5cyk6IHJlbW92ZT8KKyAgICB2ODo6Q29udGV4dDo6U2NvcGUg
Y29udGV4dFNjb3BlKGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0
YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKG1heFN0YWNrU2l6ZSwg
c3RhY2tUcmFjZU9wdGlvbnMpKTsKKyAgICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGNv
bnRleHQsIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSk7Cit9CisKK1Bhc3NPd25QdHI8U2NyaXB0
QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhh
cmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQoreworICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29u
dGV4dDo6R2V0Q3VycmVudCgpOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRl
Ojpmb3JDb250ZXh0KGNvbnRleHQpOworCisgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVu
dHM7CisgICAgZm9yIChpbnQgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgdjhhcmd1bWVudHMu
TGVuZ3RoKCk7ICsraSkKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZSh2OGFy
Z3VtZW50c1tpXSkpOworCisgICAgcmV0dXJuIG5ldyBTY3JpcHRBcmd1bWVudHMoc3RhdGUsIGFy
Z3VtZW50cyk7Cit9CisKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCBmcmFt
ZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpTdGFja1RyYWNlPiB0cmFjZSh2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2Uo
ZnJhbWVMaW1pdCkpOworICAgIGludCBmcmFtZUNvdW50ID0gdHJhY2UtPkdldEZyYW1lQ291bnQo
KTsKKyAgICBpZiAodHJhY2UuSXNFbXB0eSgpIHx8ICFmcmFtZUNvdW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSB0cmFjZS0+R2V0RnJhbWUo
aSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lT2JqZWN0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlw
dE5hbWUgPSBmcmFtZS0+R2V0U2NyaXB0TmFtZSgpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0
U3RyaW5nKCJzY3JpcHROYW1lIiwgc2NyaXB0TmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29y
ZVN0cmluZyhzY3JpcHROYW1lKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBmdW5j
dGlvbk5hbWUgPSBmcmFtZS0+R2V0RnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGZyYW1lT2JqZWN0
LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIGZ1bmN0aW9uTmFtZS5Jc0VtcHR5KCkgPyAiIiA6
IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWUpKTsKKyAgICAgICAgZnJhbWVPYmplY3QtPnNl
dE51bWJlcigibGluZU51bWJlciIsIGZyYW1lLT5HZXRMaW5lTnVtYmVyKCkpOworICAgICAgICBm
cmFtZU9iamVjdC0+c2V0TnVtYmVyKCJjb2x1bW4iLCBmcmFtZS0+R2V0Q29sdW1uKCkpOworICAg
ICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2FmN2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKKyNk
ZWZpbmUgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Ny
aXB0U3RhdGU7CisKK2NvbnN0IHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucyBzdGFj
a1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0
aW9ucz4oCisgICAgICB2ODo6U3RhY2tUcmFjZTo6a0xpbmVOdW1iZXIKKyAgICB8IHY4OjpTdGFj
a1RyYWNlOjprQ29sdW1uT2Zmc2V0CisgICAgfCB2ODo6U3RhY2tUcmFjZTo6a1NjcmlwdE5hbWVP
clNvdXJjZVVSTAorICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtGdW5jdGlvbk5hbWUpOworCitjbGFz
cyBTY3JpcHRBcmd1bWVudHM7CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CisKK1Bhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2sodjg6OkxvY2FsPHY4OjpDb250
ZXh0Piwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4sIHNpemVfdCBtYXhTdGFja1NpemUpOwor
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3Qg
bWF4U3RhY2tTaXplKTsKK1Bhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRB
cmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBB
cmd1bWVudENvdW50KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCA0OTA0YTRlLi5mYTM3YzM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRn
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCkBAIC00NjgsNyArNDY5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldp
bmRvd1NoZWxsKGJvb2wpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhib29sIHZhbHVl
KQogewotICAgIHY4OjpWODo6U2V0Q2FwdHVyZVN0YWNrVHJhY2VGb3JVbmNhdWdodEV4Y2VwdGlv
bnModmFsdWUsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgU2Ny
aXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyk7CisgICAgdjg6OlY4OjpTZXRDYXB0dXJl
U3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBzdGFja1RyYWNlT3B0aW9ucyk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCmluZGV4IGNlMzUwZGEuLjExODEzYjAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9jb250ZXh0LkNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgU2NyaXB0U3Rh
dGUqIGdldCgpIHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KKyAgICBTY3JpcHRTdGF0ZSogZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQogcHJpdmF0ZToKICAgICBTY3JpcHRT
dGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9j
b250ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdl
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggOGI2
YmIxNy4uNDBmOWE3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVN
ZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiT3duUHRyLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CiAKQEAgLTExNywxOCArMTE4LDE3IEBAIHZvaWQgVjhDb25zb2xlTWVzc2FnZTo6aGFuZGxlcih2
ODo6SGFuZGxlPHY4OjpNZXNzYWdlPiBtZXNzYWdlLCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgLy8g
Q3VycmVudGx5IHN0YWNrIHRyYWNlIGlzIG9ubHkgY29sbGVjdGVkIHdoZW4gaW5zcGVjdG9yIGlz
IG9wZW4uCiAgICAgaWYgKCFzdGFja1RyYWNlLklzRW1wdHkoKSAmJiBzdGFja1RyYWNlLT5HZXRG
cmFtZUNvdW50KCkgPiAwKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOwotICAgICAgICBjYWxs
U3RhY2sgPSBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSk7
CisgICAgICAgIGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhjb250ZXh0LCBzdGFj
a1RyYWNlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwogICAg
IH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXNvdXJjZU5hbWUgPSBtZXNzYWdlLT5H
ZXRTY3JpcHRSZXNvdXJjZU5hbWUoKTsKICAgICBib29sIHVzZVVSTCA9IHJlc291cmNlTmFtZS5J
c0VtcHR5KCkgfHwgIXJlc291cmNlTmFtZS0+SXNTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzb3Vy
Y2VOYW1lU3RyaW5nID0gdXNlVVJMID8gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogdG9XZWJD
b3JlU3RyaW5nKHJlc291cmNlTmFtZSk7CiAgICAgVjhDb25zb2xlTWVzc2FnZSBjb25zb2xlTWVz
c2FnZShlcnJvck1lc3NhZ2UsIHJlc291cmNlTmFtZVN0cmluZywgbWVzc2FnZS0+R2V0TGluZU51
bWJlcigpKTsKLSAgICBjb25zb2xlTWVzc2FnZS5kaXNwYXRjaE5vdyhwYWdlLCBjYWxsU3RhY2su
Z2V0KCkpOworICAgIGNvbnNvbGVNZXNzYWdlLmRpc3BhdGNoTm93KHBhZ2UsIGNhbGxTdGFjay5y
ZWxlYXNlKCkpOwogfQogCi12b2lkIFY4Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KFBhZ2Uq
IHBhZ2UsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBWOENvbnNvbGVNZXNzYWdl
OjpkaXNwYXRjaE5vdyhQYWdlKiBwYWdlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKQogewogICAgIEFTU0VSVChwYWdlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29s
ZU1lc3NhZ2UuaAppbmRleCAzODdiNWVlLi42Yjg5MmRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q29uc29sZU1lc3NhZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSw3ICs4
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG1fc291cmNl
SUQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1fbGluZU51bWJlcjsKIAotICAgICAgICB2b2lk
IGRpc3BhdGNoTm93KFBhZ2UqLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICAgICAgdm9pZCBkaXNw
YXRjaE5vdyhQYWdlKiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgICAgICAv
LyBBbGwgZGVsYXllZCBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHRoaXMgdmVjdG9yLiBJZiB0aGUg
dmVjdG9yCiAgICAgICAgIC8vIGlzIDAsIHRoZXJlIGFyZSBubyBkZWxheWVkIG1lc3NhZ2VzLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKaW5kZXgg
ZmM4M2I2MS4uZTU4NWNjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENv
bnNvbGVDdXN0b20uY3BwCkBAIC0zMyw3ICszMyw5IEBACiAjaW5jbHVkZSAiVjhDb25zb2xlLmgi
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkBAIC02MiwxMSArNjQsOSBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS50cmFjZUNhbGxiYWNrIik7CiAgICAg
Q29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoU2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNr
VHJhY2VPcHRpb25zKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2Ny
aXB0Q2FsbFN0YWNrOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHN0YWNrVHJhY2UpKTsKLSAgICBpbXAt
PnRyYWNlKGNhbGxTdGFjay5nZXQoKSk7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmUpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1
bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKKyAgICBpbXAtPnRyYWNlKHNj
cmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOwogICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIApAQCAtNzQsOSArNzQsMTAgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db25zb2xlLmFzc2VydENhbGxiYWNr
Iik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNr
OjpjcmVhdGUoYXJncywgMSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlKSk7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsK
ICAgICBib29sIGNvbmRpdGlvbiA9IGFyZ3NbMF0tPkJvb2xlYW5WYWx1ZSgpOwotICAgIGltcC0+
YXNzZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbiwgY2FsbFN0YWNrLmdldCgpKTsKKyAgICBPd25QdHI8
U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFy
Z3MsIDEpKTsKKyAgICBpbXAtPmFzc2VydENvbmRpdGlvbihjb25kaXRpb24sIHNjcmlwdEFyZ3Vt
ZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOwogICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmlu
ZGV4IDY3OTMwY2QuLjVjMGZiMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAK
QEAgLTMzLDQ2ICszMywxNCBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db25zb2xlTWVzc2FnZTo6Q2Fs
bEZyYW1lOjpDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSkKLSAgICA6IG1f
ZnVuY3Rpb25OYW1lKGZyYW1lLmZ1bmN0aW9uTmFtZSgpKQotICAgICwgbV9zb3VyY2VVUkwoZnJh
bWUuc291cmNlVVJMKCkpCi0gICAgLCBtX2xpbmVOdW1iZXIoZnJhbWUubGluZU51bWJlcigpKQot
ewotfQotCi1Db25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUoKQotICAgIDogbV9s
aW5lTnVtYmVyKDApCi17Ci19Ci0KLWJvb2wgQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6aXNF
cXVhbChjb25zdCBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lJiBvKSBjb25zdAotewotICAgIHJl
dHVybiBtX2Z1bmN0aW9uTmFtZSA9PSBvLm1fZnVuY3Rpb25OYW1lCi0gICAgICAgICYmIG1fc291
cmNlVVJMID09IG8ubV9zb3VyY2VVUkwKLSAgICAgICAgJiYgbV9saW5lTnVtYmVyID09IG8ubV9s
aW5lTnVtYmVyOwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVj
dCgpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZnJhbWUgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGZyYW1lLT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIs
IG1fZnVuY3Rpb25OYW1lKTsKLSAgICBmcmFtZS0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBtX3Nv
dXJjZVVSTCk7Ci0gICAgZnJhbWUtPnNldE51bWJlcigibGluZU51bWJlciIsIG1fbGluZU51bWJl
cik7Ci0gICAgcmV0dXJuIGZyYW1lOwotfQotI2VuZGlmCi0KIENvbnNvbGVNZXNzYWdlOjpDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBs
LCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVk
IGcpCiAgICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCkBAIC04NSwzNSArNTMsMjYg
QEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2Fn
ZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGMKIHsKIH0KIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGws
IGNvbnN0IFN0cmluZyYgbSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcs
IGJvb2wgc3RvcmVUcmFjZSkKK0NvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0s
IFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcpCiAgICAgOiBtX3NvdXJjZShzKQogICAg
ICwgbV90eXBlKHQpCiAgICAgLCBtX2xldmVsKGwpCiAgICAgLCBtX21lc3NhZ2UobSkKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgICwgbV9hcmd1bWVudHMoY2FsbFN0YWNrLT5hdCgwKS5hcmd1
bWVudENvdW50KCkpCi0gICAgLCBtX3NjcmlwdFN0YXRlKGNhbGxTdGFjay0+Z2xvYmFsU3RhdGUo
KSkKLSNlbmRpZgotICAgICwgbV9mcmFtZXMoc3RvcmVUcmFjZSA/IGNhbGxTdGFjay0+c2l6ZSgp
IDogMCkKKyAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKKyAgICAsIG1fY2FsbFN0YWNrKGNh
bGxTdGFjaykKICAgICAsIG1fZ3JvdXBMZXZlbChnKQogICAgICwgbV9yZXBlYXRDb3VudCgxKQog
ewotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CisgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gbV9jYWxsU3RhY2st
PmF0KDApOwogICAgIG1fbGluZSA9IGxhc3RDYWxsZXIubGluZU51bWJlcigpOwogICAgIG1fdXJs
ID0gbGFzdENhbGxlci5zb3VyY2VVUkwoKTsKIAotICAgIGlmIChzdG9yZVRyYWNlKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsU3RhY2stPnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgbV9mcmFtZXNbaV0gPSBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lKGNhbGxTdGFj
ay0+YXQoaSkpOwotICAgIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxhc3RDYWxsZXIuYXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAg
IG1fYXJndW1lbnRzW2ldID0gbGFzdENhbGxlci5hcmd1bWVudEF0KGkpOwotI2VuZGlmCisgICAg
Ym9vbCBzdG9yZVRyYWNlID0gKHQgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0ID09IFVuY2F1Z2h0
RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwgdCA9PSBBc3NlcnRNZXNzYWdlVHlwZSk7CisgICAgaWYg
KCFzdG9yZVRyYWNlKQorICAgICAgICBtX2NhbGxTdGFjay5jbGVhcigpOwogfQogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0
SG9zdCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uT2JqID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKQEAgLTEyNSwxMiArODQsMTIgQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2Ny
aXB0SG8KICAgICBqc29uT2JqLT5zZXROdW1iZXIoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxp
bnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVwZWF0Q291bnQi
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2JqLT5zZXRTdHJp
bmcoIm1lc3NhZ2UiLCBtX21lc3NhZ2UpOwotICAgIGlmICghbV9hcmd1bWVudHMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3Jp
cHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX3NjcmlwdFN0YXRlLmdldCgpKTsKKyAgICBpZiAo
bV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgeworICAgICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0
ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBqc29uQXJncyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUgPSBpbmpl
Y3RlZFNjcmlwdC53cmFwRm9yQ29uc29sZShtX2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1fYXJndW1lbnRzLT5hcmd1bWVudEF0
KGkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNDAsMTIgKzk5LDggQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG8KICAgICAgICAg
ICAgIGpzb25PYmotPnNldEFycmF5KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOwogICAgICAgICB9
CiAgICAgfQotICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gZnJhbWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCi0gICAgICAg
ICAgICBmcmFtZXMtPnB1c2hPYmplY3QobV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmpl
Y3QoKSk7Ci0gICAgICAgIGpzb25PYmotPnNldEFycmF5KCJzdGFja1RyYWNlIiwgZnJhbWVzKTsK
LSAgICB9CisgICAgaWYgKG1fY2FsbFN0YWNrKQorICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgi
c3RhY2tUcmFjZSIsIG1fY2FsbFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAgICBm
cm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaik7CiB9CiAKQEAgLTE1MywzMiArMTA4
LDIwIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBmcm9udGVuZC0+dXBkYXRlQ29uc29s
ZU1lc3NhZ2VSZXBlYXRDb3VudChtX3JlcGVhdENvdW50KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQogCiBib29sIENvbnNvbGVNZXNzYWdlOjppc0VxdWFsKENvbnNvbGVNZXNzYWdl
KiBtc2cpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAobXNnLT5tX2Fy
Z3VtZW50cy5zaXplKCkgIT0gbV9hcmd1bWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFtc2ctPm1fc2NyaXB0U3RhdGUuZ2V0KCkgJiYgbXNnLT5tX2FyZ3VtZW50
cy5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV9hcmd1bWVudHNbaV0uaXNFcXVhbChtc2ct
Pm1fc2NyaXB0U3RhdGUuZ2V0KCksIG1zZy0+bV9hcmd1bWVudHNbaV0pKQorICAgIGlmIChtX2Fy
Z3VtZW50cykgeworICAgICAgICBpZiAoIW1fYXJndW1lbnRzLT5pc0VxdWFsKG1zZy0+bV9hcmd1
bWVudHMuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQotCi0gICAgc2l6ZV90IGZyYW1lQ291bnQgPSBtc2ctPm1fZnJh
bWVzLnNpemUoKTsKLSAgICBpZiAoZnJhbWVDb3VudCAhPSBtX2ZyYW1lcy5zaXplKCkpCisgICAg
fSBlbHNlIGlmIChtc2ctPm1fYXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7ICsraSkgewotICAgICAgICBpZiAo
IW1fZnJhbWVzW2ldLmlzRXF1YWwobXNnLT5tX2ZyYW1lc1tpXSkpCisgICAgaWYgKG1fY2FsbFN0
YWNrKSB7CisgICAgICAgIGlmICghbV9jYWxsU3RhY2stPmlzRXF1YWwobXNnLT5tX2NhbGxTdGFj
ay5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIH0gZWxzZSBp
ZiAobXNnLT5tX2NhbGxTdGFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IG1zZy0+bV9zb3VyY2UgPT0gbV9zb3VyY2UKICAgICAgICAgJiYgbXNnLT5tX3R5cGUgPT0gbV90
eXBlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCA2YzNmMmM3Li4yMzcyMGJmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZp
bmUgQ29uc29sZU1lc3NhZ2VfaAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNDEsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVj
dDsKK2NsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNz
IFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdFZhbHVlOwpAQCAtNDgsMTIgKzQ4LDEwIEBA
IGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgQ29uc29sZU1lc3NhZ2UgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgogICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0
IFN0cmluZyYgdSwgdW5zaWduZWQgZyk7Ci0gICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxs
U3RhY2sqLCB1bnNpZ25lZCBnLCBib29sIHN0b3JlVHJhY2UgPSBmYWxzZSk7CisgICAgQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPiwgdW5zaWduZWQgZyk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHZv
aWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCosIEluamVjdGVkU2NyaXB0SG9zdCop
OwogICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKTsKLSNlbmRpZgogICAgIHZvaWQgaW5jcmVtZW50Q291bnQoKSB7ICsrbV9yZXBl
YXRDb3VudDsgfQogICAgIGJvb2wgaXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdDsK
IApAQCAtNjEsMzAgKzU5LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KIAogcHJpdmF0ZToKLSAgICBjbGFzcyBDYWxs
RnJhbWUgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQ2FsbEZyYW1lKGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgZnJhbWUpOwotICAgICAgICBDYWxsRnJhbWUoKTsKLSAgICAgICAgYm9v
bCBpc0VxdWFsKGNvbnN0IENhbGxGcmFtZSYgbykgY29uc3Q7Ci0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZyBtX2Z1
bmN0aW9uTmFtZTsKLSAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMOwotICAgICAgICB1bnNpZ25l
ZCBtX2xpbmVOdW1iZXI7Ci0gICAgfTsKLQogICAgIE1lc3NhZ2VTb3VyY2UgbV9zb3VyY2U7CiAg
ICAgTWVzc2FnZVR5cGUgbV90eXBlOwogICAgIE1lc3NhZ2VMZXZlbCBtX2xldmVsOwogICAgIFN0
cmluZyBtX21lc3NhZ2U7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBWZWN0b3I8U2NyaXB0
VmFsdWU+IG1fYXJndW1lbnRzOwotICAgIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIG1fc2NyaXB0
U3RhdGU7Ci0jZW5kaWYKLSAgICBWZWN0b3I8Q2FsbEZyYW1lPiBtX2ZyYW1lczsKKyAgICBPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiBtX2FyZ3VtZW50czsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBtX2NhbGxTdGFjazsKICAgICB1bnNpZ25lZCBtX2xpbmU7CiAgICAgU3RyaW5nIG1fdXJs
OwogICAgIHVuc2lnbmVkIG1fZ3JvdXBMZXZlbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggZjk5ZDQ4Ny4uYjE5NWMzOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0zMzksMTMgKzM0MCwxMiBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLmdl
dCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxTY3Jp
cHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjaykKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9v
bCBzdG9yZVN0YWNrVHJhY2UgPSB0eXBlID09IFRyYWNlTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBV
bmNhdWdodEV4Y2VwdGlvbk1lc3NhZ2VUeXBlIHx8IHR5cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGU7
Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgbV9ncm91cExldmVsLCBzdG9yZVN0YWNrVHJhY2Up
KTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2ssIG1fZ3JvdXBMZXZlbCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUlEKQpAQCAtMzkxLDExICszOTEsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
bGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgICAgIG1fZnJvbnRlbmQtPmNvbnNvbGVNZXNzYWdl
c0NsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgYm9vbCBjb2xs
YXBzZWQpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0R3JvdXAoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaywgYm9vbCBjb2xsYXBzZWQpCiB7CiAgICAgKyttX2dyb3VwTGV2ZWw7CiAKLSAgICBh
ZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBjb2xsYXBzZWQgPyBT
dGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CisgICAg
YWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgY29s
bGFwc2VkID8gU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91
cExldmVsKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5kR3JvdXAoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDZkNGQ5ZTAu
LjY4YWExNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTgx
LDYgKzgxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2NyaXB0QXJndW1l
bnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKQEAgLTE0NSw4ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNj
b25uZWN0RnJvbnRlbmQoKTsKIAogICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChi
b29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0
YWNrKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsK
KyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICBjb25zdCBW
ZWN0b3I8T3duUHRyPENvbnNvbGVNZXNzYWdlPiA+JiBjb25zb2xlTWVzc2FnZXMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnNvbGVNZXNzYWdlczsgfQogCkBAIC0yMzIsNyArMjMzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgYm9vbCBz
dG9wVGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSYgZWxhcHNlZCk7CiAKLSAgICB2
b2lkIHN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIFNjcmlwdENhbGxTdGFjayogY2Fs
bEZyYW1lLCBib29sIGNvbGxhcHNlZCA9IGZhbHNlKTsKKyAgICB2b2lkIHN0YXJ0R3JvdXAoUGFz
c093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bEZyYW1lLCBib29sIGNvbGxhcHNlZCA9IGZhbHNlKTsKICAgICB2b2lkIGVuZEdyb3VwKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CiAKICAgICB2b2lkIG1hcmtUaW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZTMwZTEzNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKworI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0QXJndW1lbnRzOjpTY3JpcHRBcmd1
bWVudHMoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1
bWVudHMpCisgICAgOiBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworICAgIG1fYXJndW1l
bnRzLnN3YXAoYXJndW1lbnRzKTsKK30KKworU2NyaXB0QXJndW1lbnRzOjp+U2NyaXB0QXJndW1l
bnRzKCkKK3sKK30KKworY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJndW1l
bnRBdChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYXJndW1lbnRzLnNpemUo
KSA+IGluZGV4KTsKKyAgICByZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOworfQorCitTY3JpcHRT
dGF0ZSogU2NyaXB0QXJndW1lbnRzOjpnbG9iYWxTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2NyaXB0U3RhdGUuZ2V0KCk7Cit9CisKK2Jvb2wgU2NyaXB0QXJndW1lbnRzOjpnZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcoU3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsT3JVbmRl
ZmluZWQpCit7CisgICAgaWYgKCFhcmd1bWVudENvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7CisgICAg
aWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5p
c1VuZGVmaW5lZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFnbG9iYWxT
dGF0ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0ID0gdmFsdWUudG9TdHJpbmcoZ2xvYmFsU3RhdGUo
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2NyaXB0QXJndW1lbnRzOjppc0VxdWFs
KFNjcmlwdEFyZ3VtZW50cyogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fYXJndW1lbnRzLnNpemUoKSAhPSBvdGhlci0+
bV9hcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFnbG9i
YWxTdGF0ZSgpICYmIG1fYXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoIW1fYXJndW1lbnRzW2ldLmlzRXF1YWwob3RoZXItPmdsb2JhbFN0YXRlKCks
IG90aGVyLT5tX2FyZ3VtZW50c1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdEFyZ3VtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZkZjA1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRBcmd1bWVudHNfaAorI2Rl
ZmluZSBTY3JpcHRBcmd1bWVudHNfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRWYWx1ZTsKKworY2xhc3MgU2NyaXB0QXJndW1l
bnRzIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRBcmd1bWVudHMoU2NyaXB0U3RhdGUqLCBWZWN0b3I8
U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKKworICAg
IGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29uc3Q7CisgICAgc2l6ZV90
IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KKwor
ICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcoV1RGOjpTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxP
clVuZGVmaW5lZCA9IGZhbHNlKTsKKyAgICBib29sIGlzRXF1YWwoU2NyaXB0QXJndW1lbnRzKikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRT
dGF0ZTsKKyAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0QXJndW1lbnRzX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU0NTVkMjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsRnJhbWUuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0
Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQorICAgIDogbV9mdW5j
dGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICwgbV9zb3VyY2VVUkwodXJsU3RyaW5nKQorICAg
ICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCit7Cit9CisKK1NjcmlwdENhbGxGcmFtZTo6flNj
cmlwdENhbGxGcmFtZSgpCit7Cit9CisKK2Jvb2wgU2NyaXB0Q2FsbEZyYW1lOjppc0VxdWFsKGNv
bnN0IFNjcmlwdENhbGxGcmFtZSYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5h
bWUgPT0gby5tX2Z1bmN0aW9uTmFtZQorICAgICAgICAmJiBtX3NvdXJjZVVSTCA9PSBvLm1fc291
cmNlVVJMCisgICAgICAgICYmIG1fbGluZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsKK30KKwor
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0
b3JPYmplY3QoKSBjb25zdAoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBmcmFtZS0+c2V0U3RyaW5nKCJmdW5jdGlv
bk5hbWUiLCBtX2Z1bmN0aW9uTmFtZSk7CisgICAgZnJhbWUtPnNldFN0cmluZygic291cmNlVVJM
IiwgbV9zb3VyY2VVUkwpOworICAgIGZyYW1lLT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBtX2xp
bmVOdW1iZXIpOworICAgIHJldHVybiBmcmFtZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MGQ3N2UxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0Q2FsbEZy
YW1lX2gKKyNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CisKK2NsYXNzIFNjcmlwdENhbGxGcmFtZSAgewor
cHVibGljOgorICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVuc2lnbmVkIGxpbmVOdW1iZXIpOworICAgIH5TY3Jp
cHRDYWxsRnJhbWUoKTsKKworICAgIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CisgICAgdW5zaWduZWQgbGluZU51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQorCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0
IFNjcmlwdENhbGxGcmFtZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBt
X2Z1bmN0aW9uTmFtZTsKKyAgICBTdHJpbmcgbV9zb3VyY2VVUkw7CisgICAgdW5zaWduZWQgbV9s
aW5lTnVtYmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Ny
aXB0Q2FsbEZyYW1lX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDEwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorCisjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0
Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mIGZyYW1l
cykKK3sKKyAgICBtX2ZyYW1lcy5zd2FwKGZyYW1lcyk7Cit9CisKK1NjcmlwdENhbGxTdGFjazo6
flNjcmlwdENhbGxTdGFjaygpCit7Cit9CisKK2NvbnN0IFNjcmlwdENhbGxGcmFtZSAmU2NyaXB0
Q2FsbFN0YWNrOjphdChzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUo
KSA+IGluZGV4KTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdOworfQorCitzaXplX3QgU2Ny
aXB0Q2FsbFN0YWNrOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZXMuc2l6ZSgpOworfQor
Citib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0
Cit7CisgICAgaWYgKCFvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgZnJh
bWVDb3VudCA9IG8tPm1fZnJhbWVzLnNpemUoKTsKKyAgICBpZiAoZnJhbWVDb3VudCAhPSBtX2Zy
YW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7CisgICAgICAgIGlmICghbV9mcmFtZXNbaV0uaXNF
cXVhbChvLT5tX2ZyYW1lc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IFNjcmlw
dENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAoreworICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gZnJhbWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIGZyYW1l
cy0+cHVzaE9iamVjdChtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAg
ICByZXR1cm4gZnJhbWVzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0
YzZiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAor
I2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAorCisjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgi
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvckFycmF5OworCitjbGFzcyBT
Y3JpcHRDYWxsU3RhY2sgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKKworICAgIFNj
cmlwdENhbGxTdGFjayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOworICAgIH5TY3JpcHRDYWxs
U3RhY2soKTsKKworICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSAmYXQoc2l6ZV90KTsKKyAgICBz
aXplX3Qgc2l6ZSgpOworICAgIHN0YXRpYyBib29sIHN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+Jik7CisKKyAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNr
KikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRJbnNwZWN0b3JP
YmplY3QoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBt
X2ZyYW1lczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlw
dENhbGxTdGFja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggMmQ0Y2M5OC4uN2RkODVhNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZXIuaCIKQEAgLTc3LDE5ICs3OCw2IEBAIHN0YXRpYyB2b2lkIHByaW50U291
cmNlVVJMQW5kTGluZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJl
cikKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lLCBT
dHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCA9IGZhbHNlKQotewot
ICAgIGlmICghY2FsbEZyYW1lLmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gY2FsbEZyYW1lLmFyZ3VtZW50QXQo
MCk7Ci0gICAgaWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051bGwoKSB8
fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVz
dWx0ID0gdmFsdWUudG9TdHJpbmcoc2NyaXB0U3RhdGUpOwotICAgIHJldHVybiB0cnVlOwotfQot
CiBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZVN0cmluZzsKQEAgLTE0NCw3ICsxMzIsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291
cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbAogICAg
IHByaW50ZigiJXMgJXM6Iiwgc291cmNlU3RyaW5nLCBsZXZlbFN0cmluZyk7CiB9CiAKLXZvaWQg
Q29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxT
dGFjaykKK3ZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGFk
ZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMLCAwKTsKK30KKwordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9
IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xNTUsNyArMTQ4LDcgQEAgdm9pZCBD
b25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
LCBNZXNzYWdlTGV2ZWwgbGUKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGNhbGxT
dGFjaykKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9D
b25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGNhbGxTdGFjaywgbWVzc2FnZSk7CisgICAgICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2Us
IHR5cGUsIGxldmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOwogICAgIGVsc2UKICAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAjZW5kaWYKQEAg
LTE2OSw3ICsxNjIsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZQogICAgIHByaW50ZigiICVz
XG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIENvbnNvbGU6OmFkZE1lc3Nh
Z2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50cykKK3ZvaWQgQ29uc29sZTo6YWRkTWVz
c2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFBhc3NPd25QdHI8U2Ny
aXB0QXJndW1lbnRzPiBhcmd1bWVudHMsICBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrLCBib29sIGFjY2VwdE5vQXJndW1lbnRzKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTc3LDE1ICsxNzAsMTUgQEAgdm9pZCBDb25z
b2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgU2Ny
aXB0Q2FsbFN0YWNrKgogCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0g
Y2FsbFN0YWNrLT5hdCgwKTsKIAotICAgIGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWxhc3RD
YWxsZXIuYXJndW1lbnRDb3VudCgpKQorICAgIGlmICghYWNjZXB0Tm9Bcmd1bWVudHMgJiYgIWFy
Z3VtZW50cy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
bWVzc2FnZTsKLSAgICBpZiAoZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFjay0+c3Rh
dGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSkpCisgICAgaWYgKGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0
YWNrLCBtZXNzYWdlKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgIiIsIGFyZ3VtZW50cywg
Y2FsbFN0YWNrKTsKICNlbmRpZgogCiAgICAgaWYgKCFDb25zb2xlOjpzaG91bGRQcmludEV4Y2Vw
dGlvbnMoKSkKQEAgLTE5NCw0OSArMTg3LDQ5IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayoKICAg
ICBwcmludFNvdXJjZVVSTEFuZExpbmUobGFzdENhbGxlci5zb3VyY2VVUkwoKSwgMCk7CiAgICAg
cHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoSlNNZXNzYWdlU291cmNlLCBsZXZlbCk7
CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVudENvdW50
KCk7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZzsKLSAgICAgICAg
aWYgKGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgp
LCBhcmdBc1N0cmluZykpCisgICAgICAgIGlmIChhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkuZ2V0
U3RyaW5nKGFyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSwgYXJnQXNTdHJpbmcpKQogICAgICAgICAg
ICAgcHJpbnRmKCIgJXMiLCBhcmdBc1N0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAgICAg
cHJpbnRmKCJcbiIpOwogfQogCi12b2lkIENvbnNvbGU6OmRlYnVnKFNjcmlwdENhbGxTdGFjayog
Y2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewog
ICAgIC8vIEluIEZpcmVidWcsIGNvbnNvbGUuZGVidWcgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFz
IGNvbnNvbGUubG9nLiBTbyB3ZSdsbCBkbyB0aGUgc2FtZS4KLSAgICBsb2coY2FsbFN0YWNrKTsK
KyAgICBsb2coYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OmVycm9y
KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjplcnJvcihQYXNzT3du
UHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBjYWxsU3RhY2spOworICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29s
ZTo6aW5mbyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6aW5mbyhQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1
bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpsb2coUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsK
LSAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFj
ayk7CisgICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1
bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyKFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsK
LSAgICBhZGRNZXNzYWdlKE9iamVjdE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxT
dGFjayk7CisgICAgYWRkTWVzc2FnZShPYmplY3RNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyeG1sKFNjcmlw
dENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpkaXJ4bWwoUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaykKIHsKICAgICAvLyBUaGUgc3RhbmRhcmQgYmVoYXZpb3Igb2Ygb3VyIGNvbnNvbGUu
bG9nIHdpbGwgcHJpbnQgdGhlIERPTSB0cmVlIGZvciBub2Rlcy4KLSAgICBsb2coY2FsbFN0YWNr
KTsKKyAgICBsb2coYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OnRy
YWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjp0cmFjZShQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9n
TWVzc2FnZUxldmVsLCBjYWxsU3RhY2ssIHRydWUpOworICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNz
YWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7CiAK
ICAgICBpZiAoIXNob3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0y
NDgsMTUgKzI0MSwxNSBAQCB2b2lkIENvbnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQogICAgIH0KIH0KIAotdm9pZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBj
b25kaXRpb24sIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphc3Nl
cnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAg
aWYgKGNvbmRpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkTWVzc2FnZShBc3NlcnRN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjaywgdHJ1ZSk7CisgICAgYWRk
TWVzc2FnZShBc3NlcnRNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywg
Y2FsbFN0YWNrLCB0cnVlKTsKIH0KIAotdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3Rh
Y2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6Y291bnQoUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7
CkBAIC0yNjcsNyArMjYwLDcgQEAgdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaykKICAgICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5n
IHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHRpdGxlIGluCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0
IGFzIG5vIGFyZ3VtZW50CiAgICAgU3RyaW5nIHRpdGxlOwotICAgIGdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIHRpdGxlKTsKKyAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyh0aXRsZSk7CiAKICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmNvdW50KHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwg
bGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZWxzZQpAQCAtMjc1LDIwICsyNjgsMTkgQEAgdm9p
ZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQog
Ci12b2lkIENvbnNvbGU6Om1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykK
K3ZvaWQgQ29uc29sZTo6bWFya1RpbWVsaW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPikKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIg
PSBjYWxsU3RhY2stPmF0KDApOwogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGdldEZpcnN0QXJn
dW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpOwor
ICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwogCiAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5tYXJrVGltZWxpbmUobWVzc2FnZSk7CiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVu
dHMpOwogI2VuZGlmCiB9CiAKQEAgLTMyMSw3ICszMTMsNyBAQCBTdHJpbmcgQ29uc29sZTo6bGFz
dFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKIAotdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENh
bGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNDIsNyArMzM0LDcgQEAgdm9pZCBDb25zb2xlOjpw
cm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQog
ICAgICAgICByZXNvbHZlZFRpdGxlID0gIiI7CiAjZW5kaWYKIAotICAgIFNjcmlwdFByb2ZpbGVy
OjpzdGFydChjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOworICAgIFNjcmlwdFBy
b2ZpbGVyOjpzdGFydChhcmd1bWVudHMtPmdsb2JhbFN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RD
YWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwpAQCAtMzUwLDcgKzM0Miw3IEBAIHZvaWQgQ29uc29s
ZTo6cHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aykKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0
aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGVF
bmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTM2Miw3ICszNTQsNyBA
QCB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2Fs
bFN0YWNrKiBjYWxsU3RhY2spCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2st
PnN0YXRlKCksIHRpdGxlKTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNj
cmlwdFByb2ZpbGVyOjpzdG9wKGFyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSwgdGl0bGUpOwogICAg
IGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTQsNyArMzg2LDcgQEAgdm9p
ZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAjZW5kaWYKIH0KIAotdm9pZCBD
b25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5w
YWdlKCk7CkBAIC00MjAsMjggKzQxMiwzMCBAQCB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAjZW5kaWYKIH0KIAot
dm9pZCBDb25zb2xlOjpncm91cChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29u
c29sZTo6Z3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAo
SlNNZXNzYWdlU291cmNlLCBjYWxsU3RhY2spOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c3RhcnRHcm91cChhcmd1bWVudHMsIGNhbGxTdGFjayk7CiAjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlm
CiB9CiAKLXZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2spCit2b2lkIENvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgp
OwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zdGFydEdyb3VwKEpTTWVzc2FnZVNvdXJjZSwgY2FsbFN0YWNrLCB0cnVl
KTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRz
LCBjYWxsU3RhY2ssIHRydWUpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKICNlbmRpZgogfQpAQCAtNDU3LDkgKzQ1MSwy
MiBAQCB2b2lkIENvbnNvbGU6Omdyb3VwRW5kKCkKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6
Ondhcm4oU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCitib29sIENvbnNvbGU6OnNob3VsZENh
cHR1cmVGdWxsU3RhY2tUcmFjZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFz
RnJvbnRlbmQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQg
Q29uc29sZTo6d2FybihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNz
T3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9n
TWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVz
c2FnZShMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxs
U3RhY2spOwogfQogCiBNZW1vcnlJbmZvKiBDb25zb2xlOjptZW1vcnkoKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKaW5k
ZXggYWI2MjUyNS4uOWE0OGZiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAor
KysgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgU2NyaXB0QXJndW1lbnRzOworCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQ
cm9maWxlc0FycmF5OwogI2VuZGlmCkBAIC04MywzMiArODUsMzUgQEAgcHVibGljOgogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0OwogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKLSAgICB2
b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2sgPSAwKTsKLQotICAgIHZvaWQg
ZGVidWcoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBlcnJvcihTY3JpcHRDYWxsU3RhY2sq
KTsKLSAgICB2b2lkIGluZm8oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBsb2coU2NyaXB0
Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCB3YXJuKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQg
ZGlyKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgZGlyeG1sKFNjcmlwdENhbGxTdGFjayop
OwotICAgIHZvaWQgdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBhc3NlcnRDb25k
aXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgY291bnQo
U2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBtYXJrVGltZWxpbmUoU2NyaXB0Q2FsbFN0YWNr
Kik7CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKTsKKworICAgIHZvaWQgZGVidWcoUGFzc093blB0cjxTY3Jp
cHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgZXJy
b3IoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFj
az4pOworICAgIHZvaWQgaW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBsb2coUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgd2FybihQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Cisg
ICAgdm9pZCBkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4pOworICAgIHZvaWQgZGlyeG1sKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRz
PiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIHRyYWNlKFBhc3NPd25Q
dHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2
b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgY291bnQoUGFz
c093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwor
ICAgIHZvaWQgbWFya1RpbWVsaW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICNpZiBFTkFCTEUoV01MKQogICAgIFN0cmluZyBsYXN0
V01MRXJyb3JNZXNzYWdlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKLSAgICB2b2lkIHByb2ZpbGUoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNr
Kik7Ci0gICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayop
OworICAgIHZvaWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBwcm9maWxlRW5k
KGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxT
Y3JpcHRDYWxsU3RhY2s+KTsKICNlbmRpZgogICAgIHZvaWQgdGltZShjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAg
dm9pZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGdyb3VwQ29sbGFwc2VkKFNj
cmlwdENhbGxTdGFjayopOworICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBQYXNzT3du
UHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAg
dm9pZCBncm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CisgICAgdm9pZCBncm91cENvbGxhcHNlZChQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAgICAgdm9pZCBncm91cEVu
ZCgpOwogCisgICAgYm9vbCBzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSBjb25zdDsKKwog
ICAgIHN0YXRpYyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwogICAgIHN0YXRpYyB2b2lk
IHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKIApAQCAtMTIwLDcgKzEyNSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIHZv
aWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sq
LCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOworICAgIHZvaWQgYWRkTWVzc2FnZShN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9IGZhbHNl
KTsKIAogICAgIENvbnNvbGUoRnJhbWUqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71425</attachid>
            <date>2010-10-21 05:28:04 -0700</date>
            <delta_ts>2010-10-21 11:23:37 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>script-arguments-3.patch</filename>
            <type>text/plain</type>
            <size>125527</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCAzMjg4MDU5Li5lZWEzNTM3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xNjYsOCArMTY2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5j
cHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotCWJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAotCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5j
cHAgXAorCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKIAliaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCBmZGVlNmZiLi42OTJiNDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpA
QCAtNDksOCArNDksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L1NjaGVk
dWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgXAog
CWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZy
YW1lLmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCisJYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0MmUzNDRhLi44ZjVk
NjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTY4Niw4ICs2ODYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTExMjMsNyArMTEyMiwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JT
dG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5jcHAKKyAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE3OWI3Yy4uMGU3NmFiMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBkZWNvdXBsZSBTY3JpcHRBcmd1bWVudHMgZnJvbSBTY3JpcHRDYWxsU3Rh
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MDU4
CisKKyAgICAgICAgU2NyaXB0Q2FsbEZyYW1lIGFuZCBTY3JpcHRDYWxsU3RhY2sgYXJlIG5vdyB0
aGUgc2FtZSBmb3IgYm90aCBKU0MgYW5kIFY4LgorICAgICAgICBUaGUgZmFjdG9yeSBmdW5jdGlv
bnMgdGhhdCBhbGxvdyB0byBjcmVhdGUgU2NyaXB0Q2FsbFN0YWNrIGZyb20gVk0tc3BlY2lmaWMK
KyAgICAgICAgb2JqZWN0cyBhcmUgZGVmaW5lZCBpbiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cC4KKworICAgICAgICBTY3JpcHRBcmd1bWVudHMgY2xhc3MgaXMgdXNlZCBmb3IgcGFzc2luZyBh
cmd1bWVudHMgZnJvbSBKUyBjb2RlIHRvIHRoZSBuYXRpdmUKKyAgICAgICAgcGFydC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCB3aXRoIGV4aXN0
aW5nIENvbnNvbGUgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbEZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQ
dHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0
Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
bGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVD
YWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6
Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4Q29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25z
b2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
Ojp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
TWVzc2FnZTo6aXNFcXVhbCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3Vt
ZW50czo6U2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3VtZW50
czo6flNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6
OmFyZ3VtZW50QXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjpnbG9iYWxT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1l
bnRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmlzRXF1YWwp
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50Q291bnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
YWxsRnJhbWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjpi
dWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6ZnVuY3Rpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6c291cmNlVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6bGluZU51bWJlcik6CisgICAgICAgICog
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6aXNFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
Q29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRlYnVnKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNv
bGU6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcik6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkaXJ4bWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6dHJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YXNzZXJ0Q29uZGl0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpw
cm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGVFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
Ojpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cENvbGxhcHNlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9Db25zb2xl
Lmg6CisKIDIwMTAtMTAtMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MDIyNS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDFmMjU1MDAuLmJlMTFiNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtODE2LDEwICs4MTYsOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxG
cmFtZS5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAgXAotCVdl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgXApAQCAtMTg1MSw4ICsx
ODQ5LDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAog
CVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmggXAorCVdlYkNvcmUv
aW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgXAorCVdlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEFyZ3VtZW50cy5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBc
CiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIFwKKwlXZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCisJV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdERlYnVnTGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0R0NFdmVudExp
c3RlbmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA3MDVhNDMwLi4wYTc4ZDllIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjk5LDEwICs2OTksNiBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMv
U2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyR3RrLmNwcCcsCkBAIC04NjksMTAgKzg2NSw4IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJh
bWUuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCcsCi0g
ICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcCcsCkBAIC0xOTUzLDYgKzE5NDcsMTIgQEAKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1Nj
cmlwdEJyZWFrcG9pbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0QnJlYWtw
b2ludC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
LmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGI2YWM0YWUuLjljMDkxODggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
MzUxLDggKzM1MSw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0
b3JlLmNwcCBcCiAjICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKLSAgICAgICAgYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENh
bGxTdGFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
djgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtNTc0LDggKzU3Myw3IEBAIHY4IHsKICAg
ICAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMv
U2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
ay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtMTAxMiw3ICsxMDEwLDEwIEBAIFNPVVJDRVMgKz0g
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcCBcCisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgXAogICAgIGluc3Bl
Y3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCisgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5jcHAgXAorICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIFwKICAgICBpbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZkOTQyMWMuLjZkODYzYzIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjAzOTQsNyArNjAzOTQs
NyBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbEZyYW1lLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAiDQogCQkJCQk+DQog
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC02
MDQ0Niw2MyArNjA0NDYsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dENhbGxGcmFtZS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFjay5jcHAiDQotCQkJCQk+
DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0J
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0J
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJ
CQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0J
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJ
CQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
Ci0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
Ci0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPC9GaWxlPg0KLQkJ
CQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3Rh
Y2suaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQpAQCAtNjMzOTUs
NiArNjMzMzksMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0
QXJndW1lbnRzLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0QnJlYWtwb2ludC5jcHAiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtNjM0MDMsNiArNjMzNTUsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxGcmFtZS5j
cHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcU2NyaXB0Q2FsbEZyYW1lLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbFN0YWNrLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxTY3JpcHRDYWxsU3RhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHREZWJ1Z0xpc3RlbmVy
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1YmM0NDBiLi44N2Q4OTI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ1OSw2ICs1NDU5LDEwIEBACiAJCUYzNjQ0QUZG
MTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyog
SW5qZWN0ZWRTY3JpcHQuY3BwICovOyB9OwogCQlGMzY0NEIwMDExMTk4MDU5MDBFMEQ1MzcgLyog
SW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovOyB9
OwogCQlGMzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNzVDQzA2
MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovOyB9OworCQlG
MzkyMjQ5QzEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzkyMjQ5QTEyNkYx
MUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi87IH07CisJCUYzOTIy
NDlEMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzkyMjQ5QjEyNkYxMUFFMDBB
OTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oICovOyB9OworCQlGMzlCRTk1QjEyNjcz
QkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzOUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3Jp
cHRBcmd1bWVudHMuY3BwICovOyB9OworCQlGMzlCRTk1QzEyNjczQkY0MDBFMEE2NzQgLyogU2Ny
aXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMzlCRTk1QTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmggKi87IH07
CiAJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNE
NDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAg
Ki87IH07CiAJCUYzRDQ2MTQ5MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJv
ckhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIu
aCAqLzsgfTsKIAkJRjRFQUY0QUUxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUFG
NEFDMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgKi87IH07CkBAIC0x
MTQ4NSw2ICsxMTQ4OSwxMCBAQAogCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0
ZWRTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzY0NEFGRTExMTk4
MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldvcmtlclJlc291cmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzOTIyNDlBMTI2RjExQUUwMEE5MjZEOSAv
KiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGMzkyMjQ5QjEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzOUJFOTU5MTI2NzNCRjQw
MEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRBcmd1bWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEVBRjRB
QzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBwYXRoID0gb3Bl
bnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTIyNTYsOCArMTIyNjQsMTQgQEAKIAkJCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyog
SW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLywKIAkJCQkxQzgxQkEwNTBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0RTAw
ODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8sCisJCQkJRjM5QkU5NTkxMjY3M0JGNDAw
RTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCisJCQkJRjM5QkU5NUExMjY3M0JGNDAw
RTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAogCQkJCTIwMEIxOTA4MTFDMjc3RDkwMERD
Q0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLywKIAkJCQk3QUZENEE4QTExMzFDMjc2MDAz
NUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAorCQkJCTQxNkU3NUNBMEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAorCQkJCTQxNkU3NUM5MEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKKwkJCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKKwkJCQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCiAJCQkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgz
IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKIAkJCQk5RkEzN0VFRjExNzJGRDQxMDBDNENE
NTUgLyogU2NyaXB0UHJvZmlsZS5pZGwgKi8sCiAJCQkJOUZBMzdFRjAxMTcyRkQ0MTAwQzRDRDU1
IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmlkbCAqLywKQEAgLTE2NzczLDEwICsxNjc4Nyw4IEBACiAJ
CQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5oICovLAogCQkJ
CTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICov
LAogCQkJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEu
aCAqLywKLQkJCQk0MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLywKLQkJCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmgg
Ki8sCi0JCQkJNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAg
Ki8sCi0JCQkJNDE2RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICov
LAorCQkJCUYzOTIyNDlBMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcCAqLywKKwkJCQlGMzkyMjQ5QjEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oICovLAogCQkJCTkzQjcwRDUzMDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250
cm9sbGVyLmNwcCAqLywKIAkJCQk5M0I3MEQ1NDA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29u
dHJvbGxlci5oICovLAogCQkJCUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250
cm9sbGVyTWFjLm1tICovLApAQCAtMjA1NTIsNiArMjA1NjQsNyBAQAogCQkJCTFDRUZDOUI5MEQ3
OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNjJD
N0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjM5QkU5NUMxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjFEMjFGMEVGMzVDMkEw
MERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjEx
MjYsNiArMjExMzksNyBAQAogCQkJCTA4MUNERkI5MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNh
dGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQ0RG
QkExMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODFDREZCRjEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjM5MjI0OUQxMjZGMTFB
RTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4OEEwRTA0MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA1MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdB
bmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNjEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMTc5LDYgKzIzMTkzLDcgQEAKIAkJCQk1MTYyQzdGNDExRjc3RUZCMDA2MTJFRkUgLyog
U2NoZW1lUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQzAxQkQwQzI3NERBQzAw
OUY0RUM5IC8qIFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODREODJDMjExRDM0NzQ4
MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUYzOUJFOTVCMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjAwQjE5MDkxMUMyNzdEOTAwRENDRDNBIC8qIFNjcmlwdEJyZWFrcG9p
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMUQyMjAwRUYzNUMyQTAwREE4NzUzIC8qIFNj
cmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTZFNzVDQzBFREY5
MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjM2
ODcsNiArMjM3MDIsNyBAQAogCQkJCTk3MjhDMzEzMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBB
Y2N1bXVsYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTg3NzJGMTEyNkUyNjI5MDAzREQ1
ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ExRjJCNTIxMjZDNjFCMjAw
MDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzkyMjQ5
QzEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCBj
ZjA4Y2E5Li5lMjAxMmNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC0xNDEsOCArMTQxLDcgQEAKICNpbmNsdWRlICJNZW1vcnlJbmZvLmNwcCIKICNp
bmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uY3BwIgogI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmNwcCIKLSNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2suY3BwIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXJXaW4uY3BwIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmNwcCIKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmY3NGI5Ni4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFt
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChj
KSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUvQXJn
TGlzdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2Fs
bEZyYW1lKGNvbnN0IFVTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgdXJsU3Ry
aW5nLCBpbnQgbGluZU51bWJlciwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBza2lwQXJndW1l
bnRDb3VudCkKLSAgICA6IG1fZnVuY3Rpb25OYW1lKHVzdHJpbmdUb1N0cmluZyhmdW5jdGlvbk5h
bWUpKQotICAgICwgbV9zb3VyY2VVUkwodXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZykpCi0gICAg
LCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKLXsKLSAgICBpZiAoIWV4ZWMpCi0gICAgICAgIHJl
dHVybjsKLSAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCBhcmd1bWVudENvdW50
OyArK2kpCi0gICAgICAgIG1fYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShleGVjLT5hcmd1
bWVudChpKSkpOwotfQotCi1TY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxsRnJhbWUoKQotewot
fQotCi1jb25zdCBTY3JpcHRWYWx1ZSAmU2NyaXB0Q2FsbEZyYW1lOjphcmd1bWVudEF0KHVuc2ln
bmVkIGluZGV4KSBjb25zdAotewotICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRl
eCk7Ci0gICAgcmV0dXJuIG1fYXJndW1lbnRzW2luZGV4XTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUu
aCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMxYWVjN2UuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTY3JpcHRDYWxsRnJhbWVfaAotI2RlZmluZSBTY3JpcHRDYWxsRnJhbWVfaAotCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7Ci1j
bGFzcyBVU3RyaW5nOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcmlwdENh
bGxGcmFtZSAgewotcHVibGljOgotICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBKU0M6OlVTdHJp
bmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgSlNDOjpVU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKLSAg
ICB+U2NyaXB0Q2FsbEZyYW1lKCk7Ci0KLSAgICBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfQotICAgIHVuc2lnbmVkIGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KLQotICAgIC8vIGFyZ3VtZW50
IHJldHJpZXZhbCBtZXRob2RzCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQodW5z
aWduZWQpIGNvbnN0OwotICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2FyZ3VtZW50cy5zaXplKCk7IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9mdW5jdGlv
bk5hbWU7Ci0gICAgU3RyaW5nIG1fc291cmNlVVJMOwotICAgIHVuc2lnbmVkIG1fbGluZU51bWJl
cjsKLQotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTY3JpcHRDYWxsRnJhbWVfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZTYxYjA3Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLQotI2luY2x1ZGUgPGludGVycHJl
dGVyL0NhbGxGcmFtZS5oPgotI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0ds
b2JhbERhdGEuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1TY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHNraXBBcmd1bWVudENvdW50KQotICAgIDogbV9pbml0aWFsaXplZChmYWxzZSkKLSAg
ICAsIG1fZXhlYyhleGVjKQotICAgICwgbV9jYWxsZXIoMCkKLXsKLSAgICBpbnQgc2lnbmVkTGlu
ZU51bWJlcjsKLSAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBVU3RyaW5nIHVybFN0cmluZzsK
LSAgICBKU1ZhbHVlIGZ1bmN0aW9uOwotCi0gICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmll
dmVMYXN0Q2FsbGVyKGV4ZWMsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcs
IGZ1bmN0aW9uKTsKLQotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVy
ID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDogMDsKLQotICAgIGlmIChmdW5jdGlvbikgewotICAg
ICAgICBtX2NhbGxlciA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwotICAgICAgICBtX2ZyYW1lcy5h
cHBlbmQoU2NyaXB0Q2FsbEZyYW1lKG1fY2FsbGVyLT5uYW1lKG1fZXhlYyksIHVybFN0cmluZywg
bGluZU51bWJlciwgbV9leGVjLCBza2lwQXJndW1lbnRDb3VudCkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIENhbGxlciBpcyB1bmtub3duLCBidXQgd2Ugc2hvdWxkIHN0aWxsIGFkZCB0aGUg
ZnJhbWUsIGJlY2F1c2UKLSAgICAgICAgLy8gc29tZXRoaW5nIGNhbGxlZCB1cywgYW5kIGdhdmUg
dXMgYXJndW1lbnRzLgotICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFVT
dHJpbmcoKSwgdXJsU3RyaW5nLCBsaW5lTnVtYmVyLCBtX2V4ZWMsIHNraXBBcmd1bWVudENvdW50
KSk7Ci0gICAgfQotfQotCi1TY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQotewot
fQotCi1jb25zdCBTY3JpcHRDYWxsRnJhbWUgJlNjcmlwdENhbGxTdGFjazo6YXQodW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgLy8gRmlyc3QgZnJhbWUgaXMgcHJlLXBvcHVsYXRlZCBpbiBjb25zdHJ1
Y3Rvciwgc28gZG9uJ3QgdHJpZ2dlcgotICAgIC8vIGluaXRpYWxpemF0aW9uIHVubGVzcyBsb29r
aW5nIGJleW9uZCB0aGUgZmlyc3QgZnJhbWUuCi0gICAgaWYgKGluZGV4ID4gMCkKLSAgICAgICAg
aW5pdGlhbGl6ZSgpOwotICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkgPiBpbmRleCk7Ci0gICAg
cmV0dXJuIG1fZnJhbWVzW2luZGV4XTsKLX0KLQotdW5zaWduZWQgU2NyaXB0Q2FsbFN0YWNrOjpz
aXplKCkKLXsKLSAgICBpbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIG1fZnJhbWVzLnNpemUoKTsK
LX0KLQotdm9pZCBTY3JpcHRDYWxsU3RhY2s6OmluaXRpYWxpemUoKQotewotICAgIGlmICghbV9j
YWxsZXIgfHwgbV9pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IHNpZ25l
ZExpbmVOdW1iZXI7Ci0gICAgaW50cHRyX3Qgc291cmNlSUQ7Ci0gICAgVVN0cmluZyB1cmxTdHJp
bmc7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbjsKLSAgICAvLyBjYWxsRnJhbWUgbXVzdCBleGlzdCBp
ZiBtX2NhbGxlciBpcyBub3QgbnVsbC4KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IG1fZXhl
Yy0+Y2FsbGVyRnJhbWUoKTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKLSAgICAgICAgbV9leGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxs
ZXIoY2FsbEZyYW1lLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5j
dGlvbik7Ci0gICAgICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgSlNGdW5jdGlvbioganNGdW5jdGlvbiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwotICAgICAg
ICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGlu
ZU51bWJlciA6IDA7Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoanNG
dW5jdGlvbi0+bmFtZShtX2V4ZWMpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIsIG1fZXhlYywgMCkp
OwotICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgfQot
ICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi1ib29sIFNjcmlwdENhbGxTdGFjazo6c3Rh
Y2tUcmFjZShpbnQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZDFjNDYuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suaAorKysgL2Rl
di9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2Rl
ZmluZSBTY3JpcHRDYWxsU3RhY2tfaAotCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEV4ZWNT
dGF0ZTsKLSAgICBjbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAg
ICBjbGFzcyBJbnNwZWN0b3JBcnJheTsKLQotICAgIGNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWxsU3RhY2so
SlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDApOwotICAgICAg
ICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICAgICAgU2NyaXB0U3RhdGUqIHN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9leGVjOyB9Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7IH0KLSAgICAgICAgLy8gZnJhbWUgcmV0cmlldmFsIG1ldGhvZHMKLSAgICAgICAgY29uc3Qg
U2NyaXB0Q2FsbEZyYW1lICZhdCh1bnNpZ25lZCk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemUoKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgc3RhY2tUcmFjZShpbnQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4mKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwot
ICAgICAgICBib29sIG1faW5pdGlhbGl6ZWQ7Ci0KLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIG1f
ZXhlYzsKLSAgICAgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7Ci0gICAgICAg
IEpTQzo6SlNGdW5jdGlvbiogbV9jYWxsZXI7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjI1ZmFiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgorCisjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4K
KyNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
QXJnTGlzdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNHbG9iYWxEYXRhLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5j
bHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG1heFN0YWNrU2l6ZSkKK3sK
KyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBmcmFtZXM7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBleGVjOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIEFTU0VSVChjYWxsRnJh
bWUpOworICAgICAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICAgICAgaW50cHRyX3Qgc291
cmNlSUQ7CisgICAgICAgIFVTdHJpbmcgdXJsU3RyaW5nOworICAgICAgICBKU1ZhbHVlIGZ1bmN0
aW9uOworCisgICAgICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihj
YWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9u
KTsKKyAgICAgICAgVVN0cmluZyBmdW5jdGlvbk5hbWU7CisgICAgICAgIGlmIChmdW5jdGlvbikK
KyAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pLT5uYW1lKGV4
ZWMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIENhbGxlciBpcyB1bmtub3duLCBi
dXQgaWYgZnJhbWVzIGlzIGVtcHR5IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNh
dXNlCisgICAgICAgICAgICAvLyBzb21ldGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1
bWVudHMuCisgICAgICAgICAgICBpZiAoIWZyYW1lcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25l
ZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOworICAgICAgICBmcmFtZXMu
YXBwZW5kKFNjcmlwdENhbGxGcmFtZSh1c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1lKSwgdXN0
cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGxpbmVOdW1iZXIpKTsKKyAgICAgICAgaWYgKCFmdW5j
dGlvbiB8fCBmcmFtZXMuc2l6ZSgpID09IG1heFN0YWNrU2l6ZSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisgICAgfQor
ICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGZyYW1lcyk7Cit9CisKK1Bhc3NPd25QdHI8
U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQoreworICAgIFZlY3RvcjxTY3JpcHRWYWx1
ZT4gYXJndW1lbnRzOworICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOworICAgIGZvciAoc2l6ZV90IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3Vt
ZW50Q291bnQ7ICsraSkKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShleGVj
LT5hcmd1bWVudChpKSkpOworICAgIHJldHVybiBuZXcgU2NyaXB0QXJndW1lbnRzKGV4ZWMsIGFy
Z3VtZW50cyk7Cit9CisKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCwgY29u
c3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NGQ4OGQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
X2gKKyNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCisKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CitjbGFzcyBTY3JpcHRD
YWxsU3RhY2s7CisKK1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxs
U3RhY2soSlNDOjpFeGVjU3RhdGUqLCBzaXplX3QgbWF4U3RhY2tTaXplKTsKK1Bhc3NPd25QdHI8
U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCB1
bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oCmluZGV4IDZiZWY0ZjcuLmNlNDM1MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgK
QEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgOiBwdWJsaWMg
Tm9uY29weWFibGUgewogcHVibGljOgogICAgIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCkgeyB9
CiAgICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKSA6
IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIHsgfQot
ICAgIFNjcmlwdFN0YXRlKiBnZXQoKQorICAgIFNjcmlwdFN0YXRlKiBnZXQoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG1fZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCAwYjU2ZjEzLi4yM2RiOTU3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE5NjYsOCArMTk2NiwxMiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBteSAkaGFzT3B0aW9u
YWxBcmd1bWVudHMgPSAwOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2NyaXB0
Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCAkbnVtUGFyYW1ldGVycyk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE93blB0cjxTY3JpcHRBcmd1
bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgJG51bVBh
cmFtZXRlcnMpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFj
a1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAx
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4
ZWMsIG1heFN0YWNrU2l6ZSkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJTY3JpcHRBcmd1bWVudHMuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAxOwog
ICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRo
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9
OwpAQCAtMjM1Nyw4ICsyMzYxLDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlv
bkNhbGwoKQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CiAgICAgICAgICRmdW5jdGlvblN0cmlu
ZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OwotICAgICAgICArKyRwYXJhbUluZGV4OwotICAgICAg
ICAkZnVuY3Rpb25TdHJpbmcgLj0gIiZjYWxsU3RhY2siOworICAgICAgICAkcGFyYW1JbmRleCAr
PSAyOworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gInNjcmlwdEFyZ3VtZW50cy5yZWxlYXNl
KCksIGNhbGxTdGFjay5yZWxlYXNlKCkiOwogICAgIH0KIAogICAgIGlmIChAeyRmdW5jdGlvbi0+
cmFpc2VzRXhjZXB0aW9uc30pIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IDc1MWUzNTAuLjBjNzllNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTMwNCwxMSArMTMwNCwxNSBAQCBFTkQKIAog
ICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUFyZ3VtZW50SGFuZGxpbmcifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKFNjcmlwdENhbGxT
dGFjazo6Y3JlYXRlKGFyZ3MsICRudW1QYXJhbWV0ZXJzKSk7CisgICAgT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAkbnVt
UGFyYW1ldGVycykpOworICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1
cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlIDogMTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKG1heFN0YWNrU2l6ZSkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogRU5ECisgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRD
YWxsU3RhY2suaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oIn0gPSAxOwogICAgIH0KICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJTVkdDaGVja1NlY3VyaXR5RG9jdW1lbnQifSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkBAIC0yNzE5LDggKzI3MjMsOCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7
CiAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRpbmRleDsKLSAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nIC49ICJjYWxsU3RhY2suZ2V0KCkiOwotICAgICAgICAkaW5kZXgrKzsKKyAg
ICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxs
U3RhY2sucmVsZWFzZSgpIjsKKyAgICAgICAgJGluZGV4ICs9IDI7CiAgICAgfQogCiAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVlZHNVc2VyR2Vz
dHVyZUNoZWNrIn0pIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDUyMzYyNjcuLjdlMDYwNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1
ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTbG9nLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0T2JqLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgpAQCAtOTk0LDEyICs5OTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oRXgK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBT
Y3JpcHRDYWxsU3RhY2sgY2FsbFN0YWNrKGV4ZWMsIDEpOworICAgIE93blB0cjxTY3JpcHRBcmd1
bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMSkpOwor
ICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFj
ZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTsKKyAg
ICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KGV4ZWMsIG1heFN0YWNrU2l6ZSkpOwogICAgIGxvZyogaW50QXJnID0gdG9sb2coZXhlYy0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGltcC0+Y3VzdG9tQXJnc0Fu
ZEV4Y2VwdGlvbihpbnRBcmcsICZjYWxsU3RhY2ssIGVjKTsKKyAgICBpbXAtPmN1c3RvbUFyZ3NB
bmRFeGNlcHRpb24oaW50QXJnLCBzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2su
cmVsZWFzZSgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggNDRmMGQzZS4uMzQ0MWI3MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBA
IC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
TWFjcm9zLmgiCkBAIC03MDUsMTEgKzcwNywxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGN1c3RvbUFyZ3NBbmRFeGNlcHRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIE93blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShhcmdzLCAxKSk7CisgICAgT3du
UHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyhhcmdzLCAxKSk7CisgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVy
ZUZ1bGxTdGFja1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUgOiAxOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVT
Y3JpcHRDYWxsU3RhY2sobWF4U3RhY2tTaXplKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKGxvZyosIGlu
dEFyZywgVjhsb2c6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhsb2c6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7Ci0gICAgaW1wLT5jdXN0b21B
cmdzQW5kRXhjZXB0aW9uKGludEFyZywgY2FsbFN0YWNrLmdldCgpLCBlYyk7CisgICAgaW1wLT5j
dXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwg
Y2FsbFN0YWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAg
IGdvdG8gZmFpbDsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYwYzczNDMuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxs
RnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0KLSNpbmNsdWRlIDx2OC5o
PgotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
LSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1TY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVt
YmVyLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVu
dENvdW50KQotICAgIDogbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQotICAgICwgbV9zb3Vy
Y2VVUkwodXJsU3RyaW5nKQotICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCi17Ci0gICAg
Zm9yIChpbnQgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyAr
K2kpCi0gICAgICAgIG1fYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShhcmd1bWVudHNbaV0p
KTsKLX0KLQotU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcikKLSAg
ICA6IG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKLSAgICAsIG1fc291cmNlVVJMKHVybFN0
cmluZykKLSAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQotewotfQotCi1TY3JpcHRDYWxs
RnJhbWU6On5TY3JpcHRDYWxsRnJhbWUoKQotewotfQotCi1jb25zdCBTY3JpcHRWYWx1ZSYgU2Ny
aXB0Q2FsbEZyYW1lOjphcmd1bWVudEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIEFT
U0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRleCk7Ci0gICAgcmV0dXJuIG1fYXJndW1lbnRz
W2luZGV4XTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbEZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNzdkNGEuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxsRnJhbWVfaAot
I2RlZmluZSBTY3JpcHRDYWxsRnJhbWVfaAotCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgdjggewotICAgIGNsYXNzIEFyZ3VtZW50czsK
LX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwotCi0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCByZXRyaWV2aW5nIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJM
IGFuZCBzdG9yaW5nIGhlcmUKLSAgICAvLyBmb3IgYWxsIGNhbGwgZnJhbWVzLCBub3QganVzdCB0
aGUgZmlyc3Qgb25lLgotICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTU2PiBhbmQKLSAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTgwPgotICAgIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewotICAgIHB1
YmxpYzoKLSAgICAgICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IHY4OjpBcmd1
bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7Ci0gICAgICAgIFNjcmlwdENhbGxG
cmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGludCBsaW5lTnVtYmVyKTsKLSAgICAgICAgflNjcmlwdENhbGxGcmFtZSgpOwotCi0gICAgICAg
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5h
bWU7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVVSTDsgfQotICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAgICAgICAgLy8gYXJndW1lbnQgcmV0cmlldmFsIG1ldGhv
ZHMKLSAgICAgICAgY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQodW5zaWduZWQpIGNvbnN0
OwotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1
bWVudHMuc2l6ZSgpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmcgbV9mdW5jdGlv
bk5hbWU7Ci0gICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKLSAgICAgICAgdW5zaWduZWQgbV9s
aW5lTnVtYmVyOwotCi0gICAgICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7Ci0g
ICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbEZy
YW1lX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2UyOWM3YS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0K
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRTY29w
ZS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotCi0jaW5jbHVkZSA8djgtZGVidWcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBnZXRGcmFtZUxvY2F0aW9uKHY4OjpI
YW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lLCBTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291
cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgQVNTRVJUKCFmcmFt
ZS5Jc0VtcHR5KCkpOwotICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzb3VyY2VOYW1lVmFsdWUo
ZnJhbWUtPkdldFNjcmlwdE5hbWVPclNvdXJjZVVSTCgpKTsKLSAgICB2ODo6TG9jYWw8djg6OlN0
cmluZz4gZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpKTsKLSAgICAq
c291cmNlTmFtZSA9IHNvdXJjZU5hbWVWYWx1ZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0
cmluZyhzb3VyY2VOYW1lVmFsdWUpOwotICAgICpmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVW
YWx1ZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWVWYWx1ZSk7
Ci0gICAgKnNvdXJjZUxpbmVOdW1iZXIgPSBmcmFtZS0+R2V0TGluZU51bWJlcigpOwotfQotCi1z
dGF0aWMgdm9pZCBnZXRUb3BGcmFtZUxvY2F0aW9uKHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2UsIFN0cmluZyogc291cmNlTmFtZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyLCBT
dHJpbmcqIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBpZiAoc3RhY2tUcmFjZS0+R2V0RnJhbWVDb3Vu
dCgpIDw9IDApIHsKLSAgICAgICAgLy8gU3VjY2Vzc2Z1bGx5IGdyYWJiZWQgc3RhY2sgdHJhY2Us
IGJ1dCB0aGVyZSBhcmUgbm8gZnJhbWVzLiBJdCBtYXkgaGFwcGVuIGluIGNhc2Ugb2YgYSBzeW50
YXggZXJyb3IgZm9yIGV4YW1wbGUuCi0gICAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGlu
ZU51bWJlciB0byAwLCBhbmQgc291cmNlIGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQi
LgotICAgICAgICAqc291cmNlTmFtZSA9ICJ1bmRlZmluZWQiOwotICAgICAgICAqc291cmNlTGlu
ZU51bWJlciA9IDA7Ci0gICAgICAgICpmdW5jdGlvbk5hbWUgPSAidW5kZWZpbmVkIjsKLSAgICB9
IGVsc2UgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSA9IHN0YWNr
VHJhY2UtPkdldEZyYW1lKDApOwotICAgICAgICBnZXRGcmFtZUxvY2F0aW9uKGZyYW1lLCBzb3Vy
Y2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBmdW5jdGlvbk5hbWUpOwotICAgIH0KLX0KLQotc3Rh
dGljIFBhc3NPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiB0b1NjcmlwdENhbGxGcmFtZSh2ODo6SGFu
ZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSkKLXsKLSAgICBTdHJpbmcgc291cmNlTmFtZTsKLSAg
ICBpbnQgc291cmNlTGluZU51bWJlcjsKLSAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwotICAgIGdl
dEZyYW1lTG9jYXRpb24oZnJhbWUsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1
bmN0aW9uTmFtZSk7Ci0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1l
LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKTsKLX0KLQotc3RhdGljIHZvaWQgdG9TY3Jp
cHRDYWxsRnJhbWVzVmVjdG9yKHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCwgdjg6Okhh
bmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSwgVmVjdG9yPE93blB0cjxTY3JpcHRDYWxs
RnJhbWU+ID4mIHNjcmlwdENhbGxGcmFtZXMpCi17Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZShjb250ZXh0KTsKLSAgICBpbnQgZnJhbWVDb3VudCA9IHN0YWNrVHJhY2UtPkdl
dEZyYW1lQ291bnQoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7IGkrKykg
ewotICAgICAgICB2ODo6TG9jYWw8djg6OlN0YWNrRnJhbWU+IHN0YWNrRnJhbWUgPSBzdGFja1Ry
YWNlLT5HZXRGcmFtZShpKTsKLSAgICAgICAgc2NyaXB0Q2FsbEZyYW1lcy5hcHBlbmQodG9TY3Jp
cHRDYWxsRnJhbWUoc3RhY2tGcmFtZSkpOwotICAgIH0KLX0KLQotY29uc3QgaW50IFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKLWNvbnN0IHY4OjpTdGFj
a1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucyBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRp
b25zID0gc3RhdGljX2Nhc3Q8djg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zPigKLSAg
ICAgdjg6OlN0YWNrVHJhY2U6OmtMaW5lTnVtYmVyCi0gICAgfCB2ODo6U3RhY2tUcmFjZTo6a0Nv
bHVtbk9mZnNldAotICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtTY3JpcHROYW1lT3JTb3VyY2VVUkwK
LSAgICB8IHY4OjpTdGFja1RyYWNlOjprRnVuY3Rpb25OYW1lKTsKLQotCi1QYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgaW50IGZyYW1Db3VudExp
bWl0KQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwotICAgIHY4OjpDb250
ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3Rh
Y2tUcmFjZT4gc3RhY2tUcmFjZSh2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoZnJh
bUNvdW50TGltaXQsIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZU9wdGlvbnMpKTsKLQotICAg
IGlmIChzdGFja1RyYWNlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJp
bmcgc291cmNlTmFtZTsKLSAgICBpbnQgc291cmNlTGluZU51bWJlcjsKLSAgICBTdHJpbmcgZnVu
Y3Rpb25OYW1lOwotICAgIGdldFRvcEZyYW1lTG9jYXRpb24oc3RhY2tUcmFjZSwgJnNvdXJjZU5h
bWUsICZzb3VyY2VMaW5lTnVtYmVyLCAmZnVuY3Rpb25OYW1lKTsKLQotICAgIFZlY3RvcjxPd25Q
dHI8U2NyaXB0Q2FsbEZyYW1lPiA+IHNjcmlwdENhbGxGcmFtZXM7Ci0gICAgaWYgKGZyYW1Db3Vu
dExpbWl0ID4gMSkKLSAgICAgICAgdG9TY3JpcHRDYWxsRnJhbWVzVmVjdG9yKGNvbnRleHQsIHN0
YWNrVHJhY2UsIHNjcmlwdENhbGxGcmFtZXMpOwotCi0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxs
U3RhY2soU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoY29udGV4dCksIG5ldyBTY3JpcHRDYWxsRnJh
bWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBhcmd1bWVudHMs
IHNraXBBcmd1bWVudENvdW50KSwgc2NyaXB0Q2FsbEZyYW1lcyk7Ci19Ci0KLVBhc3NPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShTY3JpcHRTdGF0ZSogc3Rh
dGUsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UpCi17Ci0gICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOwotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+IHNj
cmlwdENhbGxGcmFtZXM7Ci0gICAgdG9TY3JpcHRDYWxsRnJhbWVzVmVjdG9yKHN0YXRlLT5jb250
ZXh0KCksIHN0YWNrVHJhY2UsIHNjcmlwdENhbGxGcmFtZXMpOwotCi0gICAgU3RyaW5nIHNvdXJj
ZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFt
ZTsKLSAgICBnZXRUb3BGcmFtZUxvY2F0aW9uKHN0YWNrVHJhY2UsICZzb3VyY2VOYW1lLCAmc291
cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7Ci0KLSAgICByZXR1cm4gbmV3IFNjcmlwdENh
bGxTdGFjayhzdGF0ZSwgbmV3IFNjcmlwdENhbGxGcmFtZShmdW5jdGlvbk5hbWUsIHNvdXJjZU5h
bWUsIHNvdXJjZUxpbmVOdW1iZXIpLCBzY3JpcHRDYWxsRnJhbWVzKTsKLX0KLQotU2NyaXB0Q2Fs
bFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBQYXNzT3du
UHRyPFNjcmlwdENhbGxGcmFtZT4gdG9wRnJhbWUsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZy
YW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKQotICAgIDogbV90b3BGcmFtZSh0b3BGcmFtZSkKLSAg
ICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci0gICAgbV9zY3JpcHRDYWxsRnJhbWVz
LnN3YXAoc2NyaXB0Q2FsbEZyYW1lcyk7Ci19Ci0KLVNjcmlwdENhbGxTdGFjazo6flNjcmlwdENh
bGxTdGFjaygpCi17Ci19Ci0KLWNvbnN0IFNjcmlwdENhbGxGcmFtZSYgU2NyaXB0Q2FsbFN0YWNr
OjphdCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBpZiAoIWluZGV4ICYmIG1fdG9wRnJhbWUpCi0g
ICAgICAgIHJldHVybiAqbV90b3BGcmFtZTsKLSAgICByZXR1cm4gKm1fc2NyaXB0Q2FsbEZyYW1l
cy5hdChpbmRleCk7Ci19Ci0KLXVuc2lnbmVkIFNjcmlwdENhbGxTdGFjazo6c2l6ZSgpCi17Ci0g
ICAgaWYgKG1fc2NyaXB0Q2FsbEZyYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAxOwot
ICAgIHJldHVybiBtX3NjcmlwdENhbGxGcmFtZXMuc2l6ZSgpOwotfQotCi0KLWJvb2wgU2NyaXB0
Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+JiBzdGFja1RyYWNlKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQo
KTsKLSAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRT
Y29wZShjb250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiB0cmFjZSh2ODo6
U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoZnJhbWVMaW1pdCkpOwotICAgIGludCBmcmFt
ZUNvdW50ID0gdHJhY2UtPkdldEZyYW1lQ291bnQoKTsKLSAgICBpZiAodHJhY2UuSXNFbXB0eSgp
IHx8ICFmcmFtZUNvdW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tG
cmFtZT4gZnJhbWUgPSB0cmFjZS0+R2V0RnJhbWUoaSk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAg
ICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdE5hbWUgPSBmcmFtZS0+R2V0U2NyaXB0TmFt
ZSgpOwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJzY3JpcHROYW1lIiwgc2NyaXB0
TmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhzY3JpcHROYW1lKSk7Ci0gICAg
ICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBmdW5jdGlvbk5hbWUgPSBmcmFtZS0+R2V0RnVuY3Rp
b25OYW1lKCk7Ci0gICAgICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIs
IGZ1bmN0aW9uTmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5h
bWUpKTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigibGluZU51bWJlciIsIGZyYW1l
LT5HZXRMaW5lTnVtYmVyKCkpOwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJjb2x1
bW4iLCBmcmFtZS0+R2V0Q29sdW1uKCkpOwotICAgICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0
KGZyYW1lT2JqZWN0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThl
NTE5NS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5o
CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdENhbGxT
dGFja19oCi0jZGVmaW5lIFNjcmlwdENhbGxTdGFja19oCi0KLSNpbmNsdWRlICJTY3JpcHRDYWxs
RnJhbWUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgdjggewotICAgIGNsYXNzIEFyZ3VtZW50czsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLQotY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgaW50
IG1heENhbGxTdGFja1NpemVUb0NhcHR1cmU7Ci0gICAgc3RhdGljIGNvbnN0IHY4OjpTdGFja1Ry
YWNlOjpTdGFja1RyYWNlT3B0aW9ucyBzdGFja1RyYWNlT3B0aW9uczsKLQotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1
bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDAsIGludCBmcmFtQ291bnRMaW1pdCA9IDEpOwot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFNjcmlwdFN0YXRl
Kiwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4pOwotICAgIH5TY3JpcHRDYWxsU3RhY2soKTsK
LQotICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gcnVubmluZyBKYXZhU2NyaXB0
IG9yIGlmIGZldGNoaW5nIHRoZSBzdGFjayBmYWlsZWQuCi0gICAgLy8gU2V0cyBzdGFja1RyYWNl
IHRvIGJlIGFuIGFycmF5IG9mIHN0YWNrIGZyYW1lIG9iamVjdHMuCi0gICAgLy8gQSBzdGFjayBm
cmFtZSBvYmplY3QgbG9va3MgbGlrZToKLSAgICAvLyB7Ci0gICAgLy8gICBzY3JpcHROYW1lOiA8
ZmlsZSBuYW1lIGZvciB0aGUgYXNzb2NpYXRlZCBzY3JpcHQgcmVzb3VyY2U+Ci0gICAgLy8gICBm
dW5jdGlvbk5hbWU6IDxuYW1lIG9mIHRoZSBKYXZhU2NyaXB0IGZ1bmN0aW9uPgotICAgIC8vICAg
bGluZU51bWJlcjogPDEgYmFzZWQgbGluZSBudW1iZXI+Ci0gICAgLy8gICBjb2x1bW46IDwxIGJh
c2VkIGNvbHVtbiBvZmZzZXQgb24gdGhlIGxpbmU+Ci0gICAgLy8gfQotICAgIHN0YXRpYyBib29s
IHN0YWNrVHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IHN0YWNrVHJhY2UpOwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBhdCh1bnNpZ25lZCk7
Ci0gICAgdW5zaWduZWQgc2l6ZSgpOwotCi0gICAgU2NyaXB0U3RhdGUqIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQotICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KLQotcHJpdmF0ZToKLSAgICBTY3JpcHRD
YWxsU3RhY2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxG
cmFtZT4gdG9wRnJhbWUsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRD
YWxsRnJhbWVzKTsKLSAgICBTY3JpcHRDYWxsU3RhY2soU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKTsKLQotICAgIE93blB0cjxT
Y3JpcHRDYWxsRnJhbWU+IG1fdG9wRnJhbWU7Ci0gICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3Rh
dGU7Ci0gICAgVmVjdG9yPE93blB0cjxTY3JpcHRDYWxsRnJhbWU+ID4gbV9zY3JpcHRDYWxsRnJh
bWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2Fs
bFN0YWNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZmJlZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3Bw
CkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCIKKworI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgor
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKworI2luY2x1
ZGUgPHY4LWRlYnVnLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmlwdENh
bGxGcmFtZSB0b1NjcmlwdENhbGxGcmFtZSh2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFt
ZSkKK3sKKyAgICBTdHJpbmcgc291cmNlTmFtZTsKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4g
c291cmNlTmFtZVZhbHVlKGZyYW1lLT5HZXRTY3JpcHROYW1lT3JTb3VyY2VVUkwoKSk7CisgICAg
aWYgKCFzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpKQorICAgICAgICBzb3VyY2VOYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKHNvdXJjZU5hbWVWYWx1ZSk7CisKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1l
OworICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBmdW5jdGlvbk5hbWVWYWx1ZShmcmFtZS0+R2V0
RnVuY3Rpb25OYW1lKCkpOworICAgIGlmICghZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpKQor
ICAgICAgICBmdW5jdGlvbk5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lVmFsdWUp
OworCisgICAgaW50IHNvdXJjZUxpbmVOdW1iZXIgPSBmcmFtZS0+R2V0TGluZU51bWJlcigpOwor
ICAgIHJldHVybiBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3Vy
Y2VMaW5lTnVtYmVyKTsKK30KKworc3RhdGljIHZvaWQgdG9TY3JpcHRDYWxsRnJhbWVzVmVjdG9y
KHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFj
ZT4gc3RhY2tUcmFjZSwgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mIHNjcmlwdENhbGxGcmFtZXMs
IHNpemVfdCBtYXhTdGFja1NpemUpCit7CisgICAgLy8gVE9ETyh5dXJ5cyk6IHJlbW92ZSB0aGlz
Pz8/CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKyAgICBp
bnQgZnJhbWVDb3VudCA9IHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKTsKKyAgICBpZiAoZnJh
bWVDb3VudCA+IHN0YXRpY19jYXN0PGludD4obWF4U3RhY2tTaXplKSkKKyAgICAgICAgZnJhbWVD
b3VudCA9IG1heFN0YWNrU2l6ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7
IGkrKykgeworICAgICAgICB2ODo6TG9jYWw8djg6OlN0YWNrRnJhbWU+IHN0YWNrRnJhbWUgPSBz
dGFja1RyYWNlLT5HZXRGcmFtZShpKTsKKyAgICAgICAgc2NyaXB0Q2FsbEZyYW1lcy5hcHBlbmQo
dG9TY3JpcHRDYWxsRnJhbWUoc3RhY2tGcmFtZSkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWZy
YW1lQ291bnQpIHsKKyAgICAgICAgLy8gU3VjY2Vzc2Z1bGx5IGdyYWJiZWQgc3RhY2sgdHJhY2Us
IGJ1dCB0aGVyZSBhcmUgbm8gZnJhbWVzLiBJdCBtYXkgaGFwcGVuIGluIGNhc2Ugb2YgYSBzeW50
YXggZXJyb3IgZm9yIGV4YW1wbGUuCisgICAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGlu
ZU51bWJlciB0byAwLCBhbmQgc291cmNlIGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQi
LgorICAgICAgICBzY3JpcHRDYWxsRnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoInVuZGVm
aW5lZCIsICJ1bmRlZmluZWQiLCAwKSk7CisgICAgfQorfQorCitQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29u
dGV4dCwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSwgc2l6ZV90IG1heFN0
YWNrU2l6ZSkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKworICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJh
bWU+IHNjcmlwdENhbGxGcmFtZXM7CisgICAgdG9TY3JpcHRDYWxsRnJhbWVzVmVjdG9yKGNvbnRl
eHQsIHN0YWNrVHJhY2UsIHNjcmlwdENhbGxGcmFtZXMsIG1heFN0YWNrU2l6ZSk7CisgICAgcmV0
dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soc2NyaXB0Q2FsbEZyYW1lcyk7Cit9CisKK1Bhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soc2l6ZV90IG1heFN0YWNr
U2l6ZSkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICAvLyBUT0RP
KHl1cnlzKTogcmVtb3ZlPworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29u
dGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSh2ODo6U3Rh
Y2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UobWF4U3RhY2tTaXplLCBzdGFja1RyYWNlT3B0aW9u
cykpOworICAgIHJldHVybiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soY29udGV4dCwgc3RhY2tUcmFj
ZSwgbWF4U3RhY2tTaXplKTsKK30KKworUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0
ZVNjcmlwdEFyZ3VtZW50cyhjb25zdCB2ODo6QXJndW1lbnRzJiB2OGFyZ3VtZW50cywgdW5zaWdu
ZWQgc2tpcEFyZ3VtZW50Q291bnQpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCk7CisgICAgU2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoY29u
dGV4dCk7CisKKyAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsKKyAgICBmb3IgKGlu
dCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCB2OGFyZ3VtZW50cy5MZW5ndGgoKTsgKytpKQor
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKHY4YXJndW1lbnRzW2ldKSk7CisK
KyAgICByZXR1cm4gbmV3IFNjcmlwdEFyZ3VtZW50cyhzdGF0ZSwgYXJndW1lbnRzKTsKK30KKwor
Ym9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0YWNrVHJhY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6
R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+
IHRyYWNlKHY4OjpTdGFja1RyYWNlOjpDdXJyZW50U3RhY2tUcmFjZShmcmFtZUxpbWl0KSk7Cisg
ICAgaW50IGZyYW1lQ291bnQgPSB0cmFjZS0+R2V0RnJhbWVDb3VudCgpOworICAgIGlmICh0cmFj
ZS5Jc0VtcHR5KCkgfHwgIWZyYW1lQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7ICsraSkgeworICAgICAgICB2ODo6SGFuZGxl
PHY4OjpTdGFja0ZyYW1lPiBmcmFtZSA9IHRyYWNlLT5HZXRGcmFtZShpKTsKKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOworICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc2NyaXB0TmFtZSA9IGZyYW1lLT5H
ZXRTY3JpcHROYW1lKCk7CisgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoInNjcmlwdE5h
bWUiLCBzY3JpcHROYW1lLklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5nKHNjcmlwdE5h
bWUpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZSA9IGZyYW1l
LT5HZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygiZnVu
Y3Rpb25OYW1lIiwgZnVuY3Rpb25OYW1lLklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5n
KGZ1bmN0aW9uTmFtZSkpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJsaW5lTnVt
YmVyIiwgZnJhbWUtPkdldExpbmVOdW1iZXIoKSk7CisgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRO
dW1iZXIoImNvbHVtbiIsIGZyYW1lLT5HZXRDb2x1bW4oKSk7CisgICAgICAgIHN0YWNrVHJhY2Ut
PnB1c2hPYmplY3QoZnJhbWVPYmplY3QpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzYWY3YgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAorI2RlZmluZSBTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5X2gKKworI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRTdGF0ZTsKKworY29u
c3Qgdjg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zIHN0YWNrVHJhY2VPcHRpb25zID0g
c3RhdGljX2Nhc3Q8djg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zPigKKyAgICAgIHY4
OjpTdGFja1RyYWNlOjprTGluZU51bWJlcgorICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtDb2x1bW5P
ZmZzZXQKKyAgICB8IHY4OjpTdGFja1RyYWNlOjprU2NyaXB0TmFtZU9yU291cmNlVVJMCisgICAg
fCB2ODo6U3RhY2tUcmFjZTo6a0Z1bmN0aW9uTmFtZSk7CisKK2NsYXNzIFNjcmlwdEFyZ3VtZW50
czsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+LCB2ODo6SGFuZGxl
PHY4OjpTdGFja1RyYWNlPiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CitQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUpOwor
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhjb25zdCB2
ODo6QXJndW1lbnRzJiB2OGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQ5MDRh
NGUuLmZhMzdjMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTQ2OCw3
ICs0NjksNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoYm9vbCkK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJl
Q2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGJvb2wgdmFsdWUpCiB7Ci0gICAgdjg6OlY4
OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0
Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBTY3JpcHRDYWxsU3RhY2s6OnN0
YWNrVHJhY2VPcHRpb25zKTsKKyAgICB2ODo6Vjg6OlNldENhcHR1cmVTdGFja1RyYWNlRm9yVW5j
YXVnaHRFeGNlcHRpb25zKHZhbHVlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVU
b0NhcHR1cmUsIHN0YWNrVHJhY2VPcHRpb25zKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmgKaW5kZXggY2UzNTBkYS4uMTE4MTNiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
U3RhdGUuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NvbnRleHQu
Q2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgeyByZXR1
cm4gbV9zY3JpcHRTdGF0ZTsgfQorICAgIFNjcmlwdFN0YXRlKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3NjcmlwdFN0YXRlOyB9CiBwcml2YXRlOgogICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0
YXRlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA4YjZiYjE3Li40MGY5YTdhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJPd25QdHIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIApAQCAtMTE3LDE4ICsx
MTgsMTcgQEAgdm9pZCBWOENvbnNvbGVNZXNzYWdlOjpoYW5kbGVyKHY4OjpIYW5kbGU8djg6Ok1l
c3NhZ2U+IG1lc3NhZ2UsIHY4OjpIYW5kbGU8djg6OlYKICAgICAvLyBDdXJyZW50bHkgc3RhY2sg
dHJhY2UgaXMgb25seSBjb2xsZWN0ZWQgd2hlbiBpbnNwZWN0b3IgaXMgb3Blbi4KICAgICBpZiAo
IXN0YWNrVHJhY2UuSXNFbXB0eSgpICYmIHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKSA+IDAp
IHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEVudGVyZWQoKTsKLSAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0
U3RhdGU6OmZvckNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgIGNhbGxTdGFjayA9IFNjcmlwdENh
bGxTdGFjazo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBzdGFja1RyYWNlKTsKKyAgICAgICAgY2FsbFN0
YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGNvbnRleHQsIHN0YWNrVHJhY2UsIFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlc291cmNlTmFtZSA9IG1lc3NhZ2UtPkdldFNjcmlwdFJlc291cmNl
TmFtZSgpOwogICAgIGJvb2wgdXNlVVJMID0gcmVzb3VyY2VOYW1lLklzRW1wdHkoKSB8fCAhcmVz
b3VyY2VOYW1lLT5Jc1N0cmluZygpOwogICAgIFN0cmluZyByZXNvdXJjZU5hbWVTdHJpbmcgPSB1
c2VVUkwgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkgOiB0b1dlYkNvcmVTdHJpbmcocmVzb3Vy
Y2VOYW1lKTsKICAgICBWOENvbnNvbGVNZXNzYWdlIGNvbnNvbGVNZXNzYWdlKGVycm9yTWVzc2Fn
ZSwgcmVzb3VyY2VOYW1lU3RyaW5nLCBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCkpOwotICAgIGNv
bnNvbGVNZXNzYWdlLmRpc3BhdGNoTm93KHBhZ2UsIGNhbGxTdGFjay5nZXQoKSk7CisgICAgY29u
c29sZU1lc3NhZ2UuZGlzcGF0Y2hOb3cocGFnZSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CiB9CiAK
LXZvaWQgVjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3coUGFnZSogcGFnZSwgU2NyaXB0Q2Fs
bFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIFY4Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KFBh
Z2UqIHBhZ2UsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAg
QVNTRVJUKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29s
ZU1lc3NhZ2UuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5oCmluZGV4
IDM4N2I1ZWUuLjZiODkyZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25z
b2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5o
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgxLDcgKzgyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcgbV9zb3VyY2VJRDsKICAgICAgICAgY29u
c3QgdW5zaWduZWQgbV9saW5lTnVtYmVyOwogCi0gICAgICAgIHZvaWQgZGlzcGF0Y2hOb3coUGFn
ZSosIFNjcmlwdENhbGxTdGFjayopOworICAgICAgICB2b2lkIGRpc3BhdGNoTm93KFBhZ2UqLCBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogCiAgICAgICAgIC8vIEFsbCBkZWxheWVkIG1l
c3NhZ2VzIGFyZSBzdG9yZWQgaW4gdGhpcyB2ZWN0b3IuIElmIHRoZSB2ZWN0b3IKICAgICAgICAg
Ly8gaXMgMCwgdGhlcmUgYXJlIG5vIGRlbGF5ZWQgbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAppbmRleCBmYzgzYjYxLi5lNTg1Y2M4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20u
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAK
QEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlICJWOENvbnNvbGUuaCIKIAogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4
UHJveHkuaCIKQEAgLTYyLDExICs2NCw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNv
bGU6OnRyYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5Db25zb2xlLnRyYWNlQ2FsbGJhY2siKTsKICAgICBDb25zb2xlKiBpbXAgPSBW
OENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKLSAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0ZTo6
Y3VycmVudCgpOwotICAgIHY4OjpMb2NhbDx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSA9IHY4
OjpTdGFja1RyYWNlOjpDdXJyZW50U3RhY2tUcmFjZShTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUsIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZU9wdGlvbnMpOwot
ICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNy
ZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSkpOwotICAgIGltcC0+dHJhY2UoY2FsbFN0YWNr
LmdldCgpKTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkp
OworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3Jp
cHRBcmd1bWVudHMoYXJncywgMCkpOworICAgIGltcC0+dHJhY2Uoc2NyaXB0QXJndW1lbnRzLnJl
bGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogfQogCkBAIC03NCw5ICs3NCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUuYXNzZXJ0Q2FsbGJhY2siKTsKICAgICBDb25zb2xl
KiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIE93blB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShhcmdzLCAx
LCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKKyAgICBPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlw
dENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkpOwogICAgIGJvb2wgY29uZGl0
aW9uID0gYXJnc1swXS0+Qm9vbGVhblZhbHVlKCk7Ci0gICAgaW1wLT5hc3NlcnRDb25kaXRpb24o
Y29uZGl0aW9uLCBjYWxsU3RhY2suZ2V0KCkpOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+
IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJncywgMSkpOworICAgIGlt
cC0+YXNzZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbiwgc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwg
Y2FsbFN0YWNrLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNjc5MzBjZC4uNWMw
ZmIzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzMsNDYgKzMzLDE0
IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0SG9zdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OkNhbGxGcmFt
ZShjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGZyYW1lKQotICAgIDogbV9mdW5jdGlvbk5hbWUoZnJh
bWUuZnVuY3Rpb25OYW1lKCkpCi0gICAgLCBtX3NvdXJjZVVSTChmcmFtZS5zb3VyY2VVUkwoKSkK
LSAgICAsIG1fbGluZU51bWJlcihmcmFtZS5saW5lTnVtYmVyKCkpCi17Ci19Ci0KLUNvbnNvbGVN
ZXNzYWdlOjpDYWxsRnJhbWU6OkNhbGxGcmFtZSgpCi0gICAgOiBtX2xpbmVOdW1iZXIoMCkKLXsK
LX0KLQotYm9vbCBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjppc0VxdWFsKGNvbnN0IENvbnNv
bGVNZXNzYWdlOjpDYWxsRnJhbWUmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnVuY3Rpb25O
YW1lID09IG8ubV9mdW5jdGlvbk5hbWUKLSAgICAgICAgJiYgbV9zb3VyY2VVUkwgPT0gby5tX3Nv
dXJjZVVSTAotICAgICAgICAmJiBtX2xpbmVOdW1iZXIgPT0gby5tX2xpbmVOdW1iZXI7Ci19Ci0K
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IENvbnNv
bGVNZXNzYWdlOjpDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKLXsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgZnJhbWUtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgbV9mdW5jdGlvbk5hbWUp
OwotICAgIGZyYW1lLT5zZXRTdHJpbmcoInNvdXJjZVVSTCIsIG1fc291cmNlVVJMKTsKLSAgICBm
cmFtZS0+c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgbV9saW5lTnVtYmVyKTsKLSAgICByZXR1cm4g
ZnJhbWU7Ci19Ci0jZW5kaWYKLQogQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYg
bSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYgdSwgdW5zaWduZWQgZykKICAgICA6IG1fc291
cmNlKHMpCiAgICAgLCBtX3R5cGUodCkKQEAgLTg1LDM1ICs1MywyNiBAQCBDb25zb2xlTWVzc2Fn
ZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdl
TGV2ZWwgbCwgYwogewogfQogCi1Db25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3RyaW5nJiBt
LCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNl
KQorQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2Fn
ZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3Jp
cHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjaywgdW5zaWduZWQgZykKICAgICA6IG1fc291cmNlKHMpCiAgICAgLCBtX3R5cGUodCkKICAg
ICAsIG1fbGV2ZWwobCkKICAgICAsIG1fbWVzc2FnZShtKQotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgLCBtX2FyZ3VtZW50cyhjYWxsU3RhY2stPmF0KDApLmFyZ3VtZW50Q291bnQoKSkKLSAg
ICAsIG1fc2NyaXB0U3RhdGUoY2FsbFN0YWNrLT5nbG9iYWxTdGF0ZSgpKQotI2VuZGlmCi0gICAg
LCBtX2ZyYW1lcyhzdG9yZVRyYWNlID8gY2FsbFN0YWNrLT5zaXplKCkgOiAwKQorICAgICwgbV9h
cmd1bWVudHMoYXJndW1lbnRzKQorICAgICwgbV9jYWxsU3RhY2soY2FsbFN0YWNrKQogICAgICwg
bV9ncm91cExldmVsKGcpCiAgICAgLCBtX3JlcGVhdENvdW50KDEpCiB7Ci0gICAgY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAgICBjb25zdCBT
Y3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBtX2NhbGxTdGFjay0+YXQoMCk7CiAgICAgbV9s
aW5lID0gbGFzdENhbGxlci5saW5lTnVtYmVyKCk7CiAgICAgbV91cmwgPSBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpOwogCi0gICAgaWYgKHN0b3JlVHJhY2UpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNhbGxTdGFjay0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1l
c1tpXSA9IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWUoY2FsbFN0YWNrLT5hdChpKSk7Ci0gICAg
fQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGFzdENhbGxlci5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgbV9hcmd1bWVudHNbaV0g
PSBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSk7Ci0jZW5kaWYKKyAgICBib29sIHN0b3JlVHJhY2Ug
PSAodCA9PSBUcmFjZU1lc3NhZ2VUeXBlIHx8IHQgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdl
VHlwZSB8fCB0ID09IEFzc2VydE1lc3NhZ2VUeXBlKTsKKyAgICBpZiAoIXN0b3JlVHJhY2UpCisg
ICAgICAgIG1fY2FsbFN0YWNrLmNsZWFyKCk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
dm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQogewogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25PYmogPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwpAQCAtMTI1LDEyICs4NCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25P
YmotPnNldE51bWJlcigiZ3JvdXBMZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVs
KSk7CiAgICAganNvbk9iai0+c2V0TnVtYmVyKCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGlu
dD4obV9yZXBlYXRDb3VudCkpOwogICAgIGpzb25PYmotPnNldFN0cmluZygibWVzc2FnZSIsIG1f
bWVzc2FnZSk7Ci0gICAgaWYgKCFtX2FyZ3VtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVk
U2NyaXB0Rm9yKG1fc2NyaXB0U3RhdGUuZ2V0KCkpOworICAgIGlmIChtX2FyZ3VtZW50cyAmJiBt
X2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CisgICAgICAgIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX2Fy
Z3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25Bcmdz
ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBG
b3JDb25zb2xlKG1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3Jp
cHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkpOwogICAgICAgICAg
ICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MCwxMiAr
OTksOCBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgICAgICAgICAganNvbk9iai0+c2V0
QXJyYXkoInBhcmFtZXRlcnMiLCBqc29uQXJncyk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBm
cmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGZyYW1lcy0+cHVz
aE9iamVjdChtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKLSAgICAgICAg
anNvbk9iai0+c2V0QXJyYXkoInN0YWNrVHJhY2UiLCBmcmFtZXMpOwotICAgIH0KKyAgICBpZiAo
bV9jYWxsU3RhY2spCisgICAgICAgIGpzb25PYmotPnNldEFycmF5KCJzdGFja1RyYWNlIiwgbV9j
YWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIGZyb250ZW5kLT5hZGRDb25z
b2xlTWVzc2FnZShqc29uT2JqKTsKIH0KIApAQCAtMTUzLDMyICsxMDgsMjAgQEAgdm9pZCBDb25z
b2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogewogICAgIGZyb250ZW5kLT51cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENv
dW50KG1fcmVwZWF0Q291bnQpOwogfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKIGJv
b2wgQ29uc29sZU1lc3NhZ2U6OmlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3QKIHsK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtc2ctPm1fYXJndW1lbnRzLnNpemUoKSAh
PSBtX2FyZ3VtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1z
Zy0+bV9zY3JpcHRTdGF0ZS5nZXQoKSAmJiBtc2ctPm1fYXJndW1lbnRzLnNpemUoKSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKCFtX2FyZ3VtZW50c1tpXS5pc0VxdWFsKG1zZy0+bV9zY3JpcHRTdGF0ZS5n
ZXQoKSwgbXNnLT5tX2FyZ3VtZW50c1tpXSkpCisgICAgaWYgKG1fYXJndW1lbnRzKSB7CisgICAg
ICAgIGlmICghbV9hcmd1bWVudHMtPmlzRXF1YWwobXNnLT5tX2FyZ3VtZW50cy5nZXQoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCi0KLSAgICBzaXplX3QgZnJhbWVDb3VudCA9IG1zZy0+bV9mcmFtZXMuc2l6ZSgpOwotICAg
IGlmIChmcmFtZUNvdW50ICE9IG1fZnJhbWVzLnNpemUoKSkKKyAgICB9IGVsc2UgaWYgKG1zZy0+
bV9hcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghbV9mcmFtZXNbaV0uaXNF
cXVhbChtc2ctPm1fZnJhbWVzW2ldKSkKKyAgICBpZiAobV9jYWxsU3RhY2spIHsKKyAgICAgICAg
aWYgKCFtX2NhbGxTdGFjay0+aXNFcXVhbChtc2ctPm1fY2FsbFN0YWNrLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgfSBlbHNlIGlmIChtc2ctPm1fY2FsbFN0
YWNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbXNnLT5tX3NvdXJjZSA9
PSBtX3NvdXJjZQogICAgICAgICAmJiBtc2ctPm1fdHlwZSA9PSBtX3R5cGUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oCmluZGV4IDZjM2YyYzcuLjIzNzIwYmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNiBAQAogI2RlZmluZSBDb25zb2xlTWVzc2Fn
ZV9oCiAKICNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2ICs0MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgU2NyaXB0
QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNr
OwogY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC00OCwxMiArNDgsMTAgQEAgY2xhc3MgU2NyaXB0VmFs
dWU7CiBjbGFzcyBDb25zb2xlTWVzc2FnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1LCB1bnNp
Z25lZCBnKTsKLSAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFNjcmlwdENhbGxTdGFjayosIHVuc2lnbmVk
IGcsIGJvb2wgc3RvcmVUcmFjZSA9IGZhbHNlKTsKKyAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+LCB1bnNp
Z25lZCBnKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgdm9pZCBhZGRUb0Zyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAgdm9pZCB1cGRh
dGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwotI2Vu
ZGlmCiAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKyttX3JlcGVhdENvdW50OyB9CiAgICAg
Ym9vbCBpc0VxdWFsKENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0OwogCkBAIC02MSwzMCArNTks
MTIgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzc2FnZTsgfQogCiBwcml2YXRlOgotICAgIGNsYXNzIENhbGxGcmFtZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBleHBsaWNpdCBDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBm
cmFtZSk7Ci0gICAgICAgIENhbGxGcmFtZSgpOwotICAgICAgICBib29sIGlzRXF1YWwoY29uc3Qg
Q2FsbEZyYW1lJiBvKSBjb25zdDsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKLSNl
bmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAg
ICAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsK
LSAgICB9OwotCiAgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBNZXNzYWdlVHlwZSBt
X3R5cGU7CiAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVu
dHM7Ci0gICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsKLSNlbmRpZgot
ICAgIFZlY3RvcjxDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVu
dHM+IG1fYXJndW1lbnRzOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fY2FsbFN0YWNr
OwogICAgIHVuc2lnbmVkIG1fbGluZTsKICAgICBTdHJpbmcgbV91cmw7CiAgICAgdW5zaWduZWQg
bV9ncm91cExldmVsOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBmOTlkNDg3Li5iMTk1YzM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRP
YmplY3QuaCIKQEAgLTMzOSwxMyArMzQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIG1fY29uc29s
ZU1lc3NhZ2VzW2ldLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIGlm
ICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN0b3JlU3RhY2tUcmFj
ZSA9IHR5cGUgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0eXBlID09IFVuY2F1Z2h0RXhjZXB0aW9u
TWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBBc3NlcnRNZXNzYWdlVHlwZTsKLSAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
Y2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwsIHN0b3JlU3RhY2tUcmFjZSkpOworICAgIGFkZENvbnNv
bGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCkBAIC0zOTEs
MTEgKzM5MSwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3Nh
Z2VzKCkKICAgICAgICAgbV9mcm9udGVuZC0+Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBib29sIGNv
bGxhcHNlZCkKIHsKICAgICArK21fZ3JvdXBMZXZlbDsKIAotICAgIGFkZENvbnNvbGVNZXNzYWdl
KG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBDb2xsYXBz
ZWRNZXNzYWdlVHlwZSA6IFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBT
dHJpbmcoKSwgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRDb25zb2xlTWVzc2Fn
ZShuZXcgQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdy
b3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3Nh
Z2VMZXZlbCwgIiIsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNmQ0ZDllMC4uNjhhYTE0NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODEsNiArODEsNyBAQCBjbGFz
cyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3Jp
cHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRQcm9maWxlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpA
QCAtMTQ1LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgp
OwogCiAgICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgYm9v
bCogbmV3U3RhdGUpOwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAgIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwogICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q29u
c29sZU1lc3NhZ2U+ID4mIGNvbnNvbGVNZXNzYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc29s
ZU1lc3NhZ2VzOyB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBib29sIHN0b3BUaW1pbmcoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgZG91YmxlJiBlbGFwc2VkKTsKIAotICAgIHZvaWQgc3RhcnRHcm91cChN
ZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsRnJhbWUsIGJvb2wgY29s
bGFwc2VkID0gZmFsc2UpOworICAgIHZvaWQgc3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsRnJhbWUsIGJvb2wgY29s
bGFwc2VkID0gZmFsc2UpOwogICAgIHZvaWQgZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAogICAgIHZv
aWQgbWFya1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0QXJndW1lbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzBl
MTM1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRz
LmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNj
cmlwdEFyZ3VtZW50cy5oIgorCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKKyAgICA6IG1f
c2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7CisgICAgbV9hcmd1bWVudHMuc3dhcChhcmd1bWVu
dHMpOworfQorCitTY3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMoKQoreworfQorCitj
b25zdCBTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRl
eCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOworICAg
IHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07Cit9CisKK1NjcmlwdFN0YXRlKiBTY3JpcHRBcmd1
bWVudHM6Omdsb2JhbFN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRTdGF0ZS5n
ZXQoKTsKK30KKworYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCkKK3sKKyAgICBp
ZiAoIWFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKKyAgICBpZiAoY2hlY2tGb3JOdWxs
T3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWdsb2JhbFN0YXRlKCkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXN1bHQgPSB2YWx1ZS50b1N0cmluZyhnbG9iYWxTdGF0ZSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBTY3JpcHRBcmd1bWVudHM6OmlzRXF1YWwoU2NyaXB0QXJndW1lbnRz
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9hcmd1bWVudHMuc2l6ZSgpICE9IG90aGVyLT5tX2FyZ3VtZW50cy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWdsb2JhbFN0YXRlKCkgJiYgbV9h
cmd1bWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghbV9h
cmd1bWVudHNbaV0uaXNFcXVhbChvdGhlci0+Z2xvYmFsU3RhdGUoKSwgb3RoZXItPm1fYXJndW1l
bnRzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMDVhYgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFNjcmlwdEFyZ3VtZW50c19oCisjZGVmaW5lIFNjcmlwdEFyZ3Vt
ZW50c19oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBTY3JpcHRBcmd1bWVudHMgeworcHVibGljOgor
ICAgIFNjcmlwdEFyZ3VtZW50cyhTY3JpcHRTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFy
Z3VtZW50cyk7CisgICAgflNjcmlwdEFyZ3VtZW50cygpOworCisgICAgY29uc3QgU2NyaXB0VmFs
dWUmIGFyZ3VtZW50QXQoc2l6ZV90KSBjb25zdDsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQorCisgICAgU2NyaXB0U3RhdGUq
IGdsb2JhbFN0YXRlKCkgY29uc3Q7CisKKyAgICBib29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhXVEY6OlN0cmluZyYgcmVzdWx0LCBib29sIGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkID0gZmFs
c2UpOworICAgIGJvb2wgaXNFcXVhbChTY3JpcHRBcmd1bWVudHMqKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRlOworICAgIFZlY3Rv
cjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBTY3JpcHRBcmd1bWVudHNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxG
cmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1NWQyNQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxs
RnJhbWUuaCIKKworI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWxsRnJhbWU6OlNjcmlw
dENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCisgICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlv
bk5hbWUpCisgICAgLCBtX3NvdXJjZVVSTCh1cmxTdHJpbmcpCisgICAgLCBtX2xpbmVOdW1iZXIo
bGluZU51bWJlcikKK3sKK30KKworU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkK
K3sKK30KKworYm9vbCBTY3JpcHRDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZy
YW1lJiBvKSBjb25zdAoreworICAgIHJldHVybiBtX2Z1bmN0aW9uTmFtZSA9PSBvLm1fZnVuY3Rp
b25OYW1lCisgICAgICAgICYmIG1fc291cmNlVVJMID09IG8ubV9zb3VyY2VVUkwKKyAgICAgICAg
JiYgbV9saW5lTnVtYmVyID09IG8ubV9saW5lTnVtYmVyOworfQorCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0
Cit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZnJhbWUgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOworICAgIGZyYW1lLT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG1fZnVuY3Rp
b25OYW1lKTsKKyAgICBmcmFtZS0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBtX3NvdXJjZVVSTCk7
CisgICAgZnJhbWUtPnNldE51bWJlcigibGluZU51bWJlciIsIG1fbGluZU51bWJlcik7CisgICAg
cmV0dXJuIGZyYW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZDc3
ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUu
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRDYWxsRnJhbWVfaAorI2RlZmluZSBT
Y3JpcHRDYWxsRnJhbWVfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKKworY2xhc3MgU2NyaXB0Q2FsbEZyYW1lICB7CitwdWJsaWM6CisgICAgU2Ny
aXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgdW5zaWduZWQgbGluZU51bWJlcik7CisgICAgflNjcmlwdENhbGxGcmFtZSgpOwor
CisgICAgY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0
aW9uTmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VVUkw7IH0KKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CisKKyAgICBib29sIGlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZyYW1l
JikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSW5zcGVjdG9y
T2JqZWN0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwor
ICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsRnJhbWVfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGQwMTBiYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlw
dENhbGxTdGFjayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYgZnJhbWVzKQoreworICAgIG1fZnJh
bWVzLnN3YXAoZnJhbWVzKTsKK30KKworU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNr
KCkKK3sKK30KKworY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZTY3JpcHRDYWxsU3RhY2s6OmF0KHNp
emVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID4gaW5kZXgpOworICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF07Cit9CisKK3NpemVfdCBTY3JpcHRDYWxsU3RhY2s6OnNp
emUoKQoreworICAgIHJldHVybiBtX2ZyYW1lcy5zaXplKCk7Cit9CisKK2Jvb2wgU2NyaXB0Q2Fs
bFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxTdGFjayogbykgY29uc3QKK3sKKyAgICBpZiAoIW8p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBmcmFtZUNvdW50ID0gby0+bV9m
cmFtZXMuc2l6ZSgpOworICAgIGlmIChmcmFtZUNvdW50ICE9IG1fZnJhbWVzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZUNv
dW50OyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2ZyYW1lc1tpXS5pc0VxdWFsKG8tPm1fZnJhbWVz
W2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gU2NyaXB0Q2FsbFN0YWNrOjpidWls
ZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0Cit7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBm
cmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKKyAgICAgICAgZnJhbWVzLT5wdXNoT2JqZWN0KG1f
ZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOworICAgIHJldHVybiBmcmFtZXM7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjNmJiYQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCisjZGVmaW5lIFNjcmlwdENh
bGxTdGFja19oCisKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CisKK2NsYXNzIFNjcmlwdENhbGxTdGFjayA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOworCisgICAgU2NyaXB0Q2FsbFN0YWNrKFZl
Y3RvcjxTY3JpcHRDYWxsRnJhbWU+Jik7CisgICAgflNjcmlwdENhbGxTdGFjaygpOworCisgICAg
Y29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdChzaXplX3QpOworICAgIHNpemVfdCBzaXplKCk7Cisg
ICAgc3RhdGljIGJvb2wgc3RhY2tUcmFjZShpbnQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4mKTsKKworICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAppbmRleCAyZDRjYzk4Li43ZGQ4NWE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAor
I2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5o
IgpAQCAtNzcsMTkgKzc4LDYgQEAgc3RhdGljIHZvaWQgcHJpbnRTb3VyY2VVUkxBbmRMaW5lKGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQogICAgIH0KIH0KIAot
c3RhdGljIGJvb2wgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIFN0cmluZyYgcmVzdWx0LCBi
b29sIGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkID0gZmFsc2UpCi17Ci0gICAgaWYgKCFjYWxsRnJh
bWUuYXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBT
Y3JpcHRWYWx1ZSYgdmFsdWUgPSBjYWxsRnJhbWUuYXJndW1lbnRBdCgwKTsKLSAgICBpZiAoY2hl
Y2tGb3JOdWxsT3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZp
bmVkKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSB2YWx1ZS50b1N0
cmluZyhzY3JpcHRTdGF0ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHBy
aW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwpCiB7CiAgICAgY29uc3QgY2hhciogc291cmNlU3RyaW5nOwpAQCAtMTQ0
LDcgKzEzMiwxMiBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZp
eChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsCiAgICAgcHJpbnRmKCIlcyAlczoi
LCBzb3VyY2VTdHJpbmcsIGxldmVsU3RyaW5nKTsKIH0KIAotdm9pZCBDb25zb2xlOjphZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25z
b2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYWRkTWVzc2FnZShzb3VyY2Us
IHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIDApOworfQorCit2
b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBl
IHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIGlmICghcGFnZSkKQEAgLTE1NSw3ICsxNDgsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0
eXBlLCBsZXZlbCwgY2FsbFN0YWNrLCBtZXNzYWdlKTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIDAsIGNhbGxTdGFjayk7CiAgICAgZWxzZQogICAgICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKICNlbmRpZgpAQCAtMTY5LDcgKzE2Miw3IEBA
IHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxlCiAgICAgcHJpbnRmKCIgJXNcbiIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBib29s
IGFjY2VwdE5vQXJndW1lbnRzKQordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBl
IHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIGJvb2wgYWNj
ZXB0Tm9Bcmd1bWVudHMpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCkBAIC0xNzcsMTUgKzE3MCwxNSBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2Uo
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqCiAK
ICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDAp
OwogCi0gICAgaWYgKCFhY2NlcHROb0FyZ3VtZW50cyAmJiAhbGFzdENhbGxlci5hcmd1bWVudENv
dW50KCkpCisgICAgaWYgKCFhY2NlcHROb0FyZ3VtZW50cyAmJiAhYXJndW1lbnRzLT5hcmd1bWVu
dENvdW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlm
IChnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVy
LCBtZXNzYWdlKSkKKyAgICBpZiAoYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
bWVzc2FnZSkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVy
LmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBjYWxsU3RhY2ssIG1lc3NhZ2UpOwor
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCAiIiwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwogI2Vu
ZGlmCiAKICAgICBpZiAoIUNvbnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQpAQCAtMTk0
LDQ5ICsxODcsNDkgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKgogICAgIHByaW50U291cmNlVVJM
QW5kTGluZShsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLCAwKTsKICAgICBwcmludE1lc3NhZ2VTb3Vy
Y2VBbmRMZXZlbFByZWZpeChKU01lc3NhZ2VTb3VyY2UsIGxldmVsKTsKIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKICAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nOwotICAgICAgICBpZiAobGFzdENhbGxlci5h
cmd1bWVudEF0KGkpLmdldFN0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGFyZ0FzU3RyaW5nKSkK
KyAgICAgICAgaWYgKGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKS5nZXRTdHJpbmcoYXJndW1lbnRz
LT5nbG9iYWxTdGF0ZSgpLCBhcmdBc1N0cmluZykpCiAgICAgICAgICAgICBwcmludGYoIiAlcyIs
IGFyZ0FzU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICAgICBwcmludGYoIlxuIik7CiB9
CiAKLXZvaWQgQ29uc29sZTo6ZGVidWcoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lk
IENvbnNvbGU6OmRlYnVnKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgLy8gSW4gRmlyZWJ1
ZywgY29uc29sZS5kZWJ1ZyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY29uc29sZS5sb2cuIFNv
IHdlJ2xsIGRvIHRoZSBzYW1lLgotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVu
dHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6ZXJyb3IoU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7
Ci0gICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNhbGxT
dGFjayk7CisgICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjppbmZvKFNjcmlwdENh
bGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjppbmZvKFBhc3NPd25QdHI8U2NyaXB0
QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3Rh
Y2spCiB7Ci0gICAgbG9nKGNhbGxTdGFjayk7CisgICAgbG9nKGFyZ3VtZW50cywgY2FsbFN0YWNr
KTsKIH0KIAotdm9pZCBDb25zb2xlOjpsb2coU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2
b2lkIENvbnNvbGU6OmxvZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2Uo
TG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNz
YWdlKExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNr
KTsKIH0KIAotdm9pZCBDb25zb2xlOjpkaXIoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2
b2lkIENvbnNvbGU6OmRpcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2Uo
T2JqZWN0TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKKyAgICBhZGRN
ZXNzYWdlKE9iamVjdE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2Fs
bFN0YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjpkaXJ4bWwoU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2spCit2b2lkIENvbnNvbGU6OmRpcnhtbChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAg
IC8vIFRoZSBzdGFuZGFyZCBiZWhhdmlvciBvZiBvdXIgY29uc29sZS5sb2cgd2lsbCBwcmludCB0
aGUgRE9NIHRyZWUgZm9yIG5vZGVzLgotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1
bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6dHJhY2UoU2NyaXB0Q2FsbFN0
YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnRyYWNlKFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sp
CiB7Ci0gICAgYWRkTWVzc2FnZShUcmFjZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNh
bGxTdGFjaywgdHJ1ZSk7CisgICAgYWRkTWVzc2FnZShUcmFjZU1lc3NhZ2VUeXBlLCBMb2dNZXNz
YWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKIAogICAgIGlmICghc2hvdWxk
UHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0OCwxNSArMjQxLDE1IEBA
IHZvaWQgQ29uc29sZTo6dHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAgfQog
fQogCi12b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgU2NyaXB0
Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29s
IGNvbmRpdGlvbiwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBpZiAoY29uZGl0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhZGRNZXNzYWdlKEFzc2VydE1lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrLCB0cnVlKTsKKyAgICBhZGRNZXNzYWdlKEFzc2VydE1l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUp
OwogfQogCi12b2lkIENvbnNvbGU6OmNvdW50KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQor
dm9pZCBDb25zb2xlOjpjb3VudChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRz
LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTI2Nyw3ICsyNjAs
NyBAQCB2b2lkIENvbnNvbGU6OmNvdW50KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAg
IC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVoYXZpb3Igb2YgY291bnRpbmcgd2l0aCBudWxsIGFuZCB1
bmRlZmluZWQgdGl0bGUgaW4KICAgICAvLyB0aGUgc2FtZSBidWNrZXQgYXMgbm8gYXJndW1lbnQK
ICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFj
ay0+c3RhdGUoKSwgbGFzdENhbGxlciwgdGl0bGUpOworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKHRpdGxlKTsKIAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y291bnQodGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJj
ZVVSTCgpKTsKICNlbHNlCkBAIC0yNzUsMjAgKzI2OCwxOSBAQCB2b2lkIENvbnNvbGU6OmNvdW50
KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6
bWFya1RpbWVsaW5lKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpt
YXJrVGltZWxpbmUoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNh
bGxTdGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSk7CisgICAgYXJndW1lbnRzLT5n
ZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPm1hcmtUaW1lbGluZShtZXNzYWdlKTsKICNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGNhbGxTdGFjayk7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CiAjZW5kaWYKIH0K
IApAQCAtMzIxLDcgKzMxMyw3IEBAIFN0cmluZyBDb25zb2xlOjpsYXN0V01MRXJyb3JNZXNzYWdl
KCkgY29uc3QKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCi12b2lkIENvbnNv
bGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc093blB0
cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICgh
cGFnZSkKQEAgLTM0Miw3ICszMzQsNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAgICAgIHJlc29sdmVk
VGl0bGUgPSAiIjsKICNlbmRpZgogCi0gICAgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KGNhbGxTdGFj
ay0+c3RhdGUoKSwgcmVzb2x2ZWRUaXRsZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KGFy
Z3VtZW50cy0+Z2xvYmFsU3RhdGUoKSwgcmVzb2x2ZWRUaXRsZSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFj
ay0+YXQoMCk7CkBAIC0zNTAsNyArMzQyLDcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogI2VuZGlmCiB9CiAK
LXZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBTdHJpbmcm
IHRpdGxlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5w
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzYyLDcgKzM1NCw3IEBAIHZvaWQgQ29uc29sZTo6
cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aykKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKGNhbGxTdGFjay0+c3RhdGUoKSwgdGl0bGUp
OworICAgIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlID0gU2NyaXB0UHJvZmlsZXI6OnN0
b3AoYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpLCB0aXRsZSk7CiAgICAgaWYgKCFwcm9maWxlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTM5NCw3ICszODYsNyBAQCB2b2lkIENvbnNvbGU6OnRpbWUo
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6OnRpbWVFbmQo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENv
bnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTQyMCwy
OCArNDEyLDMwIEBAIHZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Omdy
b3VwKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpncm91cChQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFn
ZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChKU01lc3NhZ2VTb3VyY2Us
IGNhbGxTdGFjayk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3Vw
KGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50
cyk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb25z
b2xlOjpncm91cENvbGxhcHNlZChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29u
c29sZTo6Z3JvdXBDb2xsYXBzZWQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0
YXJ0R3JvdXAoSlNNZXNzYWdlU291cmNlLCBjYWxsU3RhY2ssIHRydWUpOworICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1
ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJB
TShjYWxsU3RhY2spOwogI2VuZGlmCiB9CkBAIC00NTcsOSArNDUxLDIyIEBAIHZvaWQgQ29uc29s
ZTo6Z3JvdXBFbmQoKQogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6d2FybihTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaykKK2Jvb2wgQ29uc29sZTo6c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1Ry
YWNlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIFBhZ2UqIHBhZ2UgPSB0
aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNGcm9udGVuZCgpOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBDb25zb2xlOjp3YXJuKFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgV2Fy
bmluZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VU
eXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKIE1l
bW9yeUluZm8qIENvbnNvbGU6Om1lbW9yeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRleCBhYjYyNTI1Li45YTQ4
ZmI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmgKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTY3JpcHRBcmd1bWVudHM7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAj
ZW5kaWYKQEAgLTgzLDMyICs4NSwzNSBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29u
c3Q7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTY3Jp
cHRDYWxsU3RhY2sqIGNhbGxTdGFjayA9IDApOwotCi0gICAgdm9pZCBkZWJ1ZyhTY3JpcHRDYWxs
U3RhY2sqKTsKLSAgICB2b2lkIGVycm9yKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgaW5m
byhTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGxvZyhTY3JpcHRDYWxsU3RhY2sqKTsKLSAg
ICB2b2lkIHdhcm4oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBkaXIoU2NyaXB0Q2FsbFN0
YWNrKik7Ci0gICAgdm9pZCBkaXJ4bWwoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCB0cmFj
ZShTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRp
dGlvbiwgU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBjb3VudChTY3JpcHRDYWxsU3RhY2sq
KTsKLSAgICB2b2lkIG1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
U3RhY2spOworCisgICAgdm9pZCBkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBlcnJvcihQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBp
bmZvKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+KTsKKyAgICB2b2lkIGxvZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCB3YXJuKFBhc3NPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGRpcihQYXNz
T3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7Cisg
ICAgdm9pZCBkaXJ4bWwoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgdHJhY2UoUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgYXNzZXJ0Q29uZGl0
aW9uKGJvb2wgY29uZGl0aW9uLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBjb3VudChQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBtYXJrVGlt
ZWxpbmUoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4pOwogI2lmIEVOQUJMRShXTUwpCiAgICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2Uo
KSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHZv
aWQgcHJvZmlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIHBy
b2ZpbGVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBwcm9m
aWxlKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIHByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiwg
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4p
OwogI2VuZGlmCiAgICAgdm9pZCB0aW1lKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdGltZUVu
ZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGdyb3VwKFNjcmlw
dENhbGxTdGFjayopOwotICAgIHZvaWQgZ3JvdXBDb2xsYXBzZWQoU2NyaXB0Q2FsbFN0YWNrKik7
CisgICAgdm9pZCB0aW1lRW5kKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGdyb3VwKFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICB2b2lkIGdyb3VwQ29sbGFwc2VkKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICB2b2lkIGdyb3VwRW5kKCk7CiAKKyAgICBib29s
IHNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpIGNvbnN0OworCiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUHJpbnRF
eGNlcHRpb25zKGJvb2wpOwogCkBAIC0xMjAsNyArMTI1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGlubGluZSBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0gICAgdm9pZCBhZGRNZXNzYWdlKE1l
c3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFjayosIGJvb2wgYWNjZXB0Tm9B
cmd1bWVudHMgPSBmYWxzZSk7CisgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VUeXBlLCBNZXNz
YWdlTGV2ZWwsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+LCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOwogCiAgICAgQ29uc29s
ZShGcmFtZSopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71463</attachid>
            <date>2010-10-21 11:23:37 -0700</date>
            <delta_ts>2010-10-22 08:20:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>script-arguments.patch</filename>
            <type>text/plain</type>
            <size>130749</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCAzMjg4MDU5Li5lZWEzNTM3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xNjYsOCArMTY2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5j
cHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotCWJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAotCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5j
cHAgXAorCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKIAliaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCBmZGVlNmZiLi42OTJiNDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpA
QCAtNDksOCArNDksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L1NjaGVk
dWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgXAog
CWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZy
YW1lLmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCisJYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0MmUzNDRhLi44ZjVk
NjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTY4Niw4ICs2ODYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTExMjMsNyArMTEyMiwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JT
dG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5jcHAKKyAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmODIxMC4uYTk5OWNlZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMTUgQEAKIDIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBkZWNvdXBsZSBTY3JpcHRBcmd1bWVudHMgZnJvbSBTY3JpcHRDYWxsU3Rh
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MDU4
CisKKyAgICAgICAgU2NyaXB0Q2FsbEZyYW1lIGFuZCBTY3JpcHRDYWxsU3RhY2sgYXJlIG5vdyB0
aGUgc2FtZSBmb3IgYm90aCBKU0MgYW5kIFY4LgorICAgICAgICBUaGUgZmFjdG9yeSBmdW5jdGlv
bnMgdGhhdCBhbGxvdyB0byBjcmVhdGUgU2NyaXB0Q2FsbFN0YWNrIGZyb20gVk0tc3BlY2lmaWMK
KyAgICAgICAgb2JqZWN0cyBhcmUgZGVmaW5lZCBpbiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cC4KKworICAgICAgICBTY3JpcHRBcmd1bWVudHMgY2xhc3MgaXMgdXNlZCBmb3IgcGFzc2luZyBh
cmd1bWVudHMgZnJvbSBKUyBjb2RlIHRvIHRoZSBuYXRpdmUKKyAgICAgICAgcGFydC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCB3aXRoIGV4aXN0
aW5nIENvbnNvbGUgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbEZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQ
dHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0
Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
bGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVD
YWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6
Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4Q29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25z
b2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
Ojp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
TWVzc2FnZTo6aXNFcXVhbCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3Vt
ZW50czo6U2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFyZ3VtZW50
czo6flNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6
OmFyZ3VtZW50QXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjpnbG9iYWxT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1l
bnRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmlzRXF1YWwp
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50Q291bnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
YWxsRnJhbWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjpi
dWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6ZnVuY3Rpb25O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6c291cmNlVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6bGluZU51bWJlcik6CisgICAgICAgICog
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENhbGxTdGFjazo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6aXNFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
Q29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRlYnVnKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNv
bGU6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc29sZTo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcik6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkaXJ4bWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6dHJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YXNzZXJ0Q29uZGl0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpw
cm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGVFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
Ojpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cENvbGxhcHNlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9Db25zb2xl
Lmg6CisKKzIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgVW5yZXZpZXdlZC4gUmV2ZXJ0IHI3MDIzMi4gQ2hyb21pdW0gY29tcGlsYXRp
b24gZmFpbHVyZS4KIAogMjAxMC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDFmMjU1MDAuLmJlMTFiNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtODE2LDEwICs4
MTYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCi0J
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKLQlXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENh
bGxTdGFjay5jcHAgXAotCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggXAor
CVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAorCVdlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAgXApAQCAtMTg1MSw4ICsxODQ5LDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291
cmNlLmggXAorCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgXAorCVdlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRCcmVha3BvaW50LmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5o
IFwKKwlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKwlXZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggXAogCVdl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3MDVhNDMwLi4wYTc4ZDllIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjk5LDEw
ICs2OTksNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAgICAnYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFjay5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdENhbGxT
dGFjay5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyR3RrLmNwcCcsCkBAIC04NjksMTAgKzg2
NSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oJywKLSAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRDYWxsRnJhbWUuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNr
LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCcsCkBAIC0xOTUzLDYgKzE5NDcsMTIgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGI2YWM0
YWUuLmYwZDdmNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMzUxLDggKzM1MSw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3Mv
djgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCBcCiAjICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRB
cnJheS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IFwKLSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgICAgIGJp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL1NjcmlwdENvbnRyb2xs
ZXJCYXNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtNTc0LDgg
KzU3Myw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKLSAg
ICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtMTAxMiw3ICsxMDEw
LDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5jcHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCisgICAgaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgXAorICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
Y3BwIFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBcCiAgICAgbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwIFwKQEAgLTEzODgsOCArMTM4OSw2IEBAIHY4IHsKICAgICAgICAgYmlu
ZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogIyAgICAgICAgYmluZGluZ3MvdjgvU2Ny
aXB0QXJyYXkuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5o
IFwKLSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggXAotICAgICAgICBiaW5k
aW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuaCBc
CiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKQEAgLTE0NzIsOCAr
MTQ3MSw2IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5o
IFwKICAgICAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdENhbGxGcmFtZS5oIFwKLSAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgg
XAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggXAogICAgICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRGdW5jdGlvbkNhbGwuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBmZDk0MjFjLi42ZDg2M2MyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTYwMzk0LDcgKzYwMzk0LDcgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxGcmFtZS5jcHAi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQpAQCAtNjA0NDYsNjMgKzYwNDQ2LDcgQEAKIAkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsRnJhbWUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0K
LQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxs
U3RhY2suY3BwIg0KLQkJCQkJPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJ
Pg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJ
Lz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
Ci0JCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQotCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJ
CQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0Q2FsbFN0YWNrLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJ
CQk8RmlsZQ0KQEAgLTYzMzk1LDYgKzYzMzM5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1bWVudHMu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEJyZWFrcG9pbnQu
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTYzNDAzLDYgKzYzMzU1LDIyIEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxTY3JpcHRDYWxsRnJhbWUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxGcmFtZS5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XFNjcmlwdENhbGxTdGFjay5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbFN0YWNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
U2NyaXB0RGVidWdMaXN0ZW5lci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWJjNDQwYi4uODdkODkyOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0NTksNiArNTQ1
OSwxMCBAQAogCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkQx
MTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAx
MTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8qIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVz
b3VyY2UuaCAqLzsgfTsKKwkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwICovOyB9OworCQlGMzkyMjQ5RDEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLzsg
fTsKKwkJRjM5QkU5NUIxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzlCRTk1OTEyNjcz
QkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLzsgfTsKKwkJRjM5QkU5NUMxMjY3
M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlw
dEFyZ3VtZW50cy5oICovOyB9OwogCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyogSlNXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuY3BwICovOyB9OwogCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyog
SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyLmggKi87IH07CiAJCUY0RUFGNEFFMTBDNzQyQjEwMDkxMDBEMyAv
KiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6
ZXIuY3BwICovOyB9OwpAQCAtMTE0ODUsNiArMTE0ODksMTAgQEAKIAkJRjM2NDRBRkQxMTE5ODA1
OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JX
b3JrZXJSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JXb3JrZXJSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzkyMjQ5
QTEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5IC8q
IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3Jp
cHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QXJn
dW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ2MTE2MUQ1MzIw
MENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8q
IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRp
emVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjU2LDggKzEyMjY0LDE0IEBACiAJCQkJRjM3NUNDMDYx
MTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8sCiAJCQkJMUM4
MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsICovLAogCQkJ
CUJDQzY0RjVGMERDRkI4NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICovLAorCQkJ
CUYzOUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAorCQkJ
CUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKIAkJCQky
MDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8sCiAJCQkJ
N0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLywKKwkJCQk0
MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKKwkJCQk0
MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi8sCisJCQkJNDE2
RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8sCisJCQkJNDE2
RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovLAogCQkJCTdBRkQ0
RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8sCiAJCQkJOUZB
MzdFRUYxMTcyRkQ0MTAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGUuaWRsICovLAogCQkJCTlGQTM3
RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwgKi8sCkBAIC0xNjc3
MywxMCArMTY3ODcsOCBAQAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVs
ZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJCQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8sCi0JCQkJNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCi0JCQkJNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxGcmFtZS5oICovLAotCQkJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsU3RhY2suY3BwICovLAotCQkJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsU3RhY2suaCAqLywKKwkJCQlGMzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkgLyogU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8sCisJCQkJRjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5
IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIwQzdDMDA5
RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJOTNCNzBENTQwOUVCMEM3QzAw
OUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQlBODNFMUM3MjBFNDkwNDJCMDAx
NDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKQEAgLTIwNTUyLDYgKzIwNTY0LDcg
QEAKIAkJCQkxQ0VGQzlCOTBENzhEQzhDMDA3RDI1NzkgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUJFMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4u
aCBpbiBIZWFkZXJzICovLAorCQkJCUYzOUJFOTVDMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRB
cmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgwMDk3Mjk5MCAv
KiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkQ0QThC
MTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4g
SGVhZGVycyAqLywKQEAgLTIxMTI2LDYgKzIxMTM5LDcgQEAKIAkJCQkwODFDREZCOTEyNkVDRkRC
MDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4MUNERkJBMTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQ0RGQkYxMjZFQ0ZFODAwRDIx
NUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUYzOTIyNDlEMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNTEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzE3OSw2ICsyMzE5Myw3IEBACiAJCQkJNTE2MkM3RjQx
MUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRUMwMUJEMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzlCRTk1QjEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0
QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTIwMEIxOTA5MTFDMjc3RDkwMERDQ0Qz
QSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjFEMjIwMEVG
MzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE2RTc1Q0MwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTIzNjg3LDYgKzIzNzAyLDcgQEAKIAkJCQk5NzI4QzMxMzEyNjhFNDM5
MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4
NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdBMUYyQjUyMTI2QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKaW5kZXggY2YwOGNhOS4uZTIwMTJjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTQxLDggKzE0MSw3IEBACiAjaW5jbHVkZSAi
TWVtb3J5SW5mby5jcHAiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmNwcCIKICNpbmNsdWRl
ICJTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIgotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5j
cHAiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmNwcCIKKyNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmNwcCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyV2luLmNwcCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKaW5kZXggZjA0MTlj
Ny4uNmRmODhmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0
b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcApAQCAt
MjksOCArMjksMTEgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJKU1Njcmlw
dFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApAQCAtNTIsNiArNTUsMjggQEAgSlNWYWx1ZSBKU0NvbnNvbGU6OnBy
b2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXko
ZXhlYywgbGlzdCk7CiB9CiAKK0pTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKGV4ZWMsIDEpKTsKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdmFsdWVU
b1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKworICAgIGltcGwoKS0+cHJvZmlsZSh0aXRsZSwgZXhlYywgY2FsbFN0YWNrLnJlbGVh
c2UoKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDb25zb2xl
Ojpwcm9maWxlRW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIDEpKTsKKyAgICBjb25z
dCBTdHJpbmcmIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIGltcGwoKS0+cHJvZmlsZUVuZCh0
aXRsZSwgZXhlYywgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJm
NzRiOTYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0KLSNpbmNsdWRlIDxydW50aW1lL0FyZ0xp
c3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxG
cmFtZShjb25zdCBVU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHVybFN0cmlu
ZywgaW50IGxpbmVOdW1iZXIsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50
Q291bnQpCi0gICAgOiBtX2Z1bmN0aW9uTmFtZSh1c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1l
KSkKLSAgICAsIG1fc291cmNlVVJMKHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpKQotICAgICwg
bV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCi17Ci0gICAgaWYgKCFleGVjKQotICAgICAgICByZXR1
cm47Ci0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsg
KytpKQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+YXJndW1l
bnQoaSkpKTsKLX0KLQotU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkKLXsKLX0K
LQotY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdENhbGxGcmFtZTo6YXJndW1lbnRBdCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgp
OwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzMWFlYzdlLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgU2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKLQotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwotY2xh
c3MgVVN0cmluZzsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRDYWxs
RnJhbWUgIHsKLXB1YmxpYzoKLSAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgSlNDOjpVU3RyaW5n
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IEpTQzo6VVN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51
bWJlciwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7Ci0gICAg
flNjcmlwdENhbGxGcmFtZSgpOwotCi0gICAgY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAgICB1bnNpZ25lZCBsaW5lTnVt
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0KLSAgICAvLyBhcmd1bWVudCBy
ZXRyaWV2YWwgbWV0aG9kcwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHVuc2ln
bmVkKSBjb25zdDsKLSAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9hcmd1bWVudHMuc2l6ZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fZnVuY3Rpb25O
YW1lOwotICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKLSAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7
Ci0KLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbEZyYW1lX2gKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGU2MWIwNy4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0KLSNpbmNsdWRlIDxpbnRlcnByZXRl
ci9DYWxsRnJhbWUuaD4KLSNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9i
YWxEYXRhLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBza2lwQXJndW1lbnRDb3VudCkKLSAgICA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAg
LCBtX2V4ZWMoZXhlYykKLSAgICAsIG1fY2FsbGVyKDApCi17Ci0gICAgaW50IHNpZ25lZExpbmVO
dW1iZXI7Ci0gICAgaW50cHRyX3Qgc291cmNlSUQ7Ci0gICAgVVN0cmluZyB1cmxTdHJpbmc7Ci0g
ICAgSlNWYWx1ZSBmdW5jdGlvbjsKLQotICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
TGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBm
dW5jdGlvbik7Ci0KLSAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+
PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDA7Ci0KLSAgICBpZiAoZnVuY3Rpb24pIHsKLSAgICAg
ICAgbV9jYWxsZXIgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9mcmFtZXMuYXBw
ZW5kKFNjcmlwdENhbGxGcmFtZShtX2NhbGxlci0+bmFtZShtX2V4ZWMpLCB1cmxTdHJpbmcsIGxp
bmVOdW1iZXIsIG1fZXhlYywgc2tpcEFyZ3VtZW50Q291bnQpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZy
YW1lLCBiZWNhdXNlCi0gICAgICAgIC8vIHNvbWV0aGluZyBjYWxsZWQgdXMsIGFuZCBnYXZlIHVz
IGFyZ3VtZW50cy4KLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShVU3Ry
aW5nKCksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9leGVjLCBza2lwQXJndW1lbnRDb3VudCkp
OwotICAgIH0KLX0KLQotU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKCkKLXsKLX0K
LQotY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZTY3JpcHRDYWxsU3RhY2s6OmF0KHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIC8vIEZpcnN0IGZyYW1lIGlzIHByZS1wb3B1bGF0ZWQgaW4gY29uc3RydWN0
b3IsIHNvIGRvbid0IHRyaWdnZXIKLSAgICAvLyBpbml0aWFsaXphdGlvbiB1bmxlc3MgbG9va2lu
ZyBiZXlvbmQgdGhlIGZpcnN0IGZyYW1lLgotICAgIGlmIChpbmRleCA+IDApCi0gICAgICAgIGlu
aXRpYWxpemUoKTsKLSAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID4gaW5kZXgpOwotICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF07Ci19Ci0KLXVuc2lnbmVkIFNjcmlwdENhbGxTdGFjazo6c2l6
ZSgpCi17Ci0gICAgaW5pdGlhbGl6ZSgpOwotICAgIHJldHVybiBtX2ZyYW1lcy5zaXplKCk7Ci19
Ci0KLXZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIW1fY2Fs
bGVyIHx8IG1faW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCBzaWduZWRM
aW5lTnVtYmVyOwotICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgdXJsU3RyaW5n
OwotICAgIEpTVmFsdWUgZnVuY3Rpb247Ci0gICAgLy8gY2FsbEZyYW1lIG11c3QgZXhpc3QgaWYg
bV9jYWxsZXIgaXMgbm90IG51bGwuCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBtX2V4ZWMt
PmNhbGxlckZyYW1lKCk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgQVNTRVJUKGNhbGxG
cmFtZSk7Ci0gICAgICAgIG1fZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVy
KGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rp
b24pOwotICAgICAgICBpZiAoIWZ1bmN0aW9uKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IEpTRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAg
dW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVO
dW1iZXIgOiAwOwotICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGpzRnVu
Y3Rpb24tPm5hbWUobV9leGVjKSwgdXJsU3RyaW5nLCBsaW5lTnVtYmVyLCBtX2V4ZWMsIDApKTsK
LSAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAgIH0KLSAg
ICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNr
VHJhY2UoaW50LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JikKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2QxYzQ2Li4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2FsbFN0YWNrX2gKLSNkZWZp
bmUgU2NyaXB0Q2FsbFN0YWNrX2gKLQotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBFeGVjU3Rh
dGU7Ci0gICAgY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAg
Y2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KLSAgICBjbGFzcyBTY3JpcHRDYWxsU3RhY2sgOiBwdWJs
aWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0Q2FsbFN0YWNrKEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQgPSAwKTsKLSAgICAgICAg
flNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhlYzsgfQotICAgICAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2V4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OyB9Ci0gICAgICAgIC8vIGZyYW1lIHJldHJpZXZhbCBtZXRob2RzCi0gICAgICAgIGNvbnN0IFNj
cmlwdENhbGxGcmFtZSAmYXQodW5zaWduZWQpOwotICAgICAgICB1bnNpZ25lZCBzaXplKCk7Ci0g
ICAgICAgIHN0YXRpYyBib29sIHN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+Jik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKLSAg
ICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwotCi0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4
ZWM7Ci0gICAgICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOwotICAgICAgICBK
U0M6OkpTRnVuY3Rpb24qIG1fY2FsbGVyOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNWZhYmRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKKworI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUg
IlNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+Cisj
aW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Fy
Z0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTR2xvYmFsRGF0YS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRD
YWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBtYXhTdGFja1NpemUpCit7Cisg
ICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gZnJhbWVzOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gZXhlYzsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBBU1NFUlQoY2FsbEZyYW1l
KTsKKyAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CisgICAgICAgIGludHB0cl90IHNvdXJj
ZUlEOworICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgSlNWYWx1ZSBmdW5jdGlv
bjsKKworICAgICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2Fs
bEZyYW1lLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7
CisgICAgICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lOworICAgICAgICBpZiAoZnVuY3Rpb24pCisg
ICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKS0+bmFtZShleGVj
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0
IGlmIGZyYW1lcyBpcyBlbXB0eSB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBmcmFtZSwgYmVjYXVz
ZQorICAgICAgICAgICAgLy8gc29tZXRoaW5nIGNhbGxlZCB1cywgYW5kIGdhdmUgdXMgYXJndW1l
bnRzLgorICAgICAgICAgICAgaWYgKCFmcmFtZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRM
aW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDogMDsKKyAgICAgICAgZnJhbWVzLmFw
cGVuZChTY3JpcHRDYWxsRnJhbWUodXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSksIHVzdHJp
bmdUb1N0cmluZyh1cmxTdHJpbmcpLCBsaW5lTnVtYmVyKSk7CisgICAgICAgIGlmICghZnVuY3Rp
b24gfHwgZnJhbWVzLnNpemUoKSA9PSBtYXhTdGFja1NpemUpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOworICAgIH0KKyAg
ICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhmcmFtZXMpOworfQorCitQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKK3sKKyAgICBWZWN0b3I8U2NyaXB0VmFsdWU+
IGFyZ3VtZW50czsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCBhcmd1bWVu
dENvdW50OyArK2kpCisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+
YXJndW1lbnQoaSkpKTsKKyAgICByZXR1cm4gbmV3IFNjcmlwdEFyZ3VtZW50cyhleGVjLCBhcmd1
bWVudHMpOworfQorCitib29sIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZShpbnQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDRkODhkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9o
CisjZGVmaW5lIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0QXJndW1lbnRzOworY2xhc3MgU2NyaXB0Q2Fs
bFN0YWNrOworCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CitQYXNzT3duUHRyPFNj
cmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
aAppbmRleCA2YmVmNGY3Li5iNzE2ODQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBA
IC0zMiw3ICszMiw4IEBACiAjaWZuZGVmIFNjcmlwdFN0YXRlX2gKICNkZWZpbmUgU2NyaXB0U3Rh
dGVfaAogCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBA
IC01Miw3ICs1Myw3IEBAIGNsYXNzIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpIHsgfQog
ICAgIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkgOiBt
X2dsb2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSB7IH0KLSAg
ICBTY3JpcHRTdGF0ZSogZ2V0KCkKKyAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChtX2dsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggMGI1NmYxMy4uMjNkYjk1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xOTY2LDggKzE5NjYsMTIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgbXkgJGhhc09wdGlvbmFs
QXJndW1lbnRzID0gMDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdENh
bGxTdGFjayBjYWxsU3RhY2soZXhlYywgJG51bVBhcmFtZXRlcnMpO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsICRudW1QYXJh
bWV0ZXJzKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tU
cmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVj
LCBtYXhTdGFja1NpemUpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siU2NyaXB0QXJndW1lbnRzLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2suaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCJ9ID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aCA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsK
QEAgLTIzNTcsOCArMjM2MSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCkKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKLSAgICAgICAgKyskcGFyYW1JbmRleDsKLSAgICAgICAg
JGZ1bmN0aW9uU3RyaW5nIC49ICImY2FsbFN0YWNrIjsKKyAgICAgICAgJHBhcmFtSW5kZXggKz0g
MjsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgp
LCBjYWxsU3RhY2sucmVsZWFzZSgpIjsKICAgICB9CiAKICAgICBpZiAoQHskZnVuY3Rpb24tPnJh
aXNlc0V4Y2VwdGlvbnN9KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA3NTFlMzUwLi4wYzc5ZTY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTEzMDQsMTEgKzEzMDQsMTUgQEAgRU5ECiAKICAg
ICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21B
cmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxF
TkQpOwotICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3Rh
Y2s6OmNyZWF0ZShhcmdzLCAkbnVtUGFyYW1ldGVycykpOworICAgIE93blB0cjxTY3JpcHRBcmd1
bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJncywgJG51bVBh
cmFtZXRlcnMpKTsKKyAgICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJl
RnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2Fw
dHVyZSA6IDE7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFjayhtYXhTdGFja1NpemUpKTsKICAgICBpZiAoIWNhbGxTdGFjaykKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIEVORAorICAgICAgICAkaW1wbEluY2x1ZGVzeyJT
Y3JpcHRBcmd1bWVudHMuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2Fs
bFN0YWNrLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaCJ9ID0gMTsKICAgICB9CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwpAQCAtMjcxOSw4ICsyNzIzLDggQEAgc3Vi
IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewog
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkaW5kZXg7Ci0gICAgICAgICRmdW5j
dGlvblN0cmluZyAuPSAiY2FsbFN0YWNrLmdldCgpIjsKLSAgICAgICAgJGluZGV4Kys7CisgICAg
ICAgICRmdW5jdGlvblN0cmluZyAuPSAic2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0
YWNrLnJlbGVhc2UoKSI7CisgICAgICAgICRpbmRleCArPSAyOwogICAgIH0KIAogICAgIGlmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1
cmVDaGVjayJ9KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAppbmRleCA1MjM2MjY3Li43ZTA2MDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRl
ICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU2xvZy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
KyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KQEAgLTk5NCwxMiArOTk2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKEV4CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmpl
Y3QodGhpc1ZhbHVlKSk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU2Ny
aXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCAxKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAg
ICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2Uo
KSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7CisgICAg
T3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhl
eGVjLCBtYXhTdGFja1NpemUpKTsKICAgICBsb2cqIGludEFyZyA9IHRvbG9nKGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBpbXAtPmN1c3RvbUFyZ3NBbmRF
eGNlcHRpb24oaW50QXJnLCAmY2FsbFN0YWNrLCBlYyk7CisgICAgaW1wLT5jdXN0b21BcmdzQW5k
RXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJl
bGVhc2UoKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDQ0ZjBkM2UuLjM0NDFiNzMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAt
MjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJJREJLZXkuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01h
Y3Jvcy5oIgpAQCAtNzA1LDExICs3MDcsMTMgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjdXN0b21BcmdzQW5kRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywgMSkpOworICAgIE93blB0
cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMo
YXJncywgMSkpOworICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1cmVG
dWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlIDogMTsKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKG1heFN0YWNrU2l6ZSkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIEVYQ0VQVElPTl9CTE9DSyhsb2cqLCBpbnRB
cmcsIFY4bG9nOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4bG9nOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwotICAgIGltcC0+Y3VzdG9tQXJn
c0FuZEV4Y2VwdGlvbihpbnRBcmcsIGNhbGxTdGFjay5nZXQoKSwgZWMpOworICAgIGltcC0+Y3Vz
dG9tQXJnc0FuZEV4Y2VwdGlvbihpbnRBcmcsIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNh
bGxTdGFjay5yZWxlYXNlKCksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBn
b3RvIGZhaWw7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmMGM3MzQzLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZy
YW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotCi0jaW5jbHVkZSA8djguaD4K
LQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJl
ciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCkKLSAgICA6IG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKLSAgICAsIG1fc291cmNl
VVJMKHVybFN0cmluZykKLSAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQotewotICAgIGZv
ciAoaW50IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50cy5MZW5ndGgoKTsgKytp
KQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoYXJndW1lbnRzW2ldKSk7
Ci19Ci0KLVNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIpCi0gICAg
OiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCi0gICAgLCBtX3NvdXJjZVVSTCh1cmxTdHJp
bmcpCi0gICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKLXsKLX0KLQotU2NyaXB0Q2FsbEZy
YW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkKLXsKLX0KLQotY29uc3QgU2NyaXB0VmFsdWUmIFNjcmlw
dENhbGxGcmFtZTo6YXJndW1lbnRBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tp
bmRleF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjc3ZDRhLi4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2FsbEZyYW1lX2gKLSNk
ZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKLQotI2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKLQotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgcmV0cmlldmluZyBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTCBh
bmQgc3RvcmluZyBoZXJlCi0gICAgLy8gZm9yIGFsbCBjYWxsIGZyYW1lcywgbm90IGp1c3QgdGhl
IGZpcnN0IG9uZS4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU1Nj4gYW5kCi0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTE4MD4KLSAgICBjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCB2ODo6QXJndW1l
bnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwotICAgICAgICBTY3JpcHRDYWxsRnJh
bWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBp
bnQgbGluZU51bWJlcik7Ci0gICAgICAgIH5TY3JpcHRDYWxsRnJhbWUoKTsKLQotICAgICAgICBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1l
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VVUkw7IH0KLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZU51bWJlcjsgfQotCi0gICAgICAgIC8vIGFyZ3VtZW50IHJldHJpZXZhbCBtZXRob2Rz
Ci0gICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHVuc2lnbmVkKSBjb25zdDsK
LSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1l
bnRzLnNpemUoKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25O
YW1lOwotICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGlu
ZU51bWJlcjsKLQotICAgICAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotICAg
IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxGcmFt
ZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNlMjljN2EuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUu
aCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLQotI2luY2x1ZGUgPHY4LWRlYnVnLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQgZ2V0RnJhbWVMb2NhdGlvbih2ODo6SGFu
ZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSwgU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJj
ZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKQotewotICAgIEFTU0VSVCghZnJhbWUu
SXNFbXB0eSgpKTsKLSAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc291cmNlTmFtZVZhbHVlKGZy
YW1lLT5HZXRTY3JpcHROYW1lT3JTb3VyY2VVUkwoKSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTdHJp
bmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZyYW1lLT5HZXRGdW5jdGlvbk5hbWUoKSk7Ci0gICAgKnNv
dXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJp
bmcoc291cmNlTmFtZVZhbHVlKTsKLSAgICAqZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lVmFs
dWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lVmFsdWUpOwot
ICAgICpzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKLX0KLQotc3Rh
dGljIHZvaWQgZ2V0VG9wRnJhbWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBz
dGFja1RyYWNlLCBTdHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3Ry
aW5nKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgaWYgKHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQo
KSA8PSAwKSB7Ci0gICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBi
dXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4
IGVycm9yIGZvciBleGFtcGxlLgotICAgICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVO
dW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4K
LSAgICAgICAgKnNvdXJjZU5hbWUgPSAidW5kZWZpbmVkIjsKLSAgICAgICAgKnNvdXJjZUxpbmVO
dW1iZXIgPSAwOwotICAgICAgICAqZnVuY3Rpb25OYW1lID0gInVuZGVmaW5lZCI7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSBzdGFja1Ry
YWNlLT5HZXRGcmFtZSgwKTsKLSAgICAgICAgZ2V0RnJhbWVMb2NhdGlvbihmcmFtZSwgc291cmNl
TmFtZSwgc291cmNlTGluZU51bWJlciwgZnVuY3Rpb25OYW1lKTsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRs
ZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCi17Ci0gICAgU3RyaW5nIHNvdXJjZU5hbWU7Ci0gICAg
aW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBnZXRG
cmFtZUxvY2F0aW9uKGZyYW1lLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5j
dGlvbk5hbWUpOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwg
c291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRvU2NyaXB0
Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5k
bGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZy
YW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKQotewotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgaW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRG
cmFtZUNvdW50KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsK
LSAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFj
ZS0+R2V0RnJhbWUoaSk7Ci0gICAgICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0
Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IGludCBTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgPSAyMDA7Ci1jb25zdCB2ODo6U3RhY2tU
cmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9u
cyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCi0gICAg
IHY4OjpTdGFja1RyYWNlOjprTGluZU51bWJlcgotICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtDb2x1
bW5PZmZzZXQKLSAgICB8IHY4OjpTdGFja1RyYWNlOjprU2NyaXB0TmFtZU9yU291cmNlVVJMCi0g
ICAgfCB2ODo6U3RhY2tUcmFjZTo6a0Z1bmN0aW9uTmFtZSk7Ci0KLQotUGFzc093blB0cjxTY3Jp
cHRDYWxsU3RhY2s+IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQsIGludCBmcmFtQ291bnRMaW1p
dCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKLSAgICB2ODo6Q29udGV4
dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OlN0YWNr
VHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1D
b3VudExpbWl0LCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRpb25zKSk7Ci0KLSAgICBp
ZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5n
IHNvdXJjZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0
aW9uTmFtZTsKLSAgICBnZXRUb3BGcmFtZUxvY2F0aW9uKHN0YWNrVHJhY2UsICZzb3VyY2VOYW1l
LCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7Ci0KLSAgICBWZWN0b3I8T3duUHRy
PFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOwotICAgIGlmIChmcmFtQ291bnRM
aW1pdCA+IDEpCi0gICAgICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFj
a1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsKLQotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0
YWNrKFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpLCBuZXcgU2NyaXB0Q2FsbEZyYW1l
KGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBz
a2lwQXJndW1lbnRDb3VudCksIHNjcmlwdENhbGxGcmFtZXMpOwotfQotCi1QYXNzT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRl
LCB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKQotewotICAgIHY4OjpIYW5k
bGVTY29wZSBzY29wZTsKLSAgICBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3Jp
cHRDYWxsRnJhbWVzOwotICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3RvcihzdGF0ZS0+Y29udGV4
dCgpLCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsKLQotICAgIFN0cmluZyBzb3VyY2VO
YW1lOwotICAgIGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7
Ci0gICAgZ2V0VG9wRnJhbWVMb2NhdGlvbihzdGFja1RyYWNlLCAmc291cmNlTmFtZSwgJnNvdXJj
ZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOwotCi0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxs
U3RhY2soc3RhdGUsIG5ldyBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1l
LCBzb3VyY2VMaW5lTnVtYmVyKSwgc2NyaXB0Q2FsbEZyYW1lcyk7Ci19Ci0KLVNjcmlwdENhbGxT
dGFjazo6U2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0
cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZyYW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFt
ZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcykKLSAgICA6IG1fdG9wRnJhbWUodG9wRnJhbWUpCi0gICAg
LCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotICAgIG1fc2NyaXB0Q2FsbEZyYW1lcy5z
d2FwKHNjcmlwdENhbGxGcmFtZXMpOwotfQotCi1TY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxs
U3RhY2soKQotewotfQotCi1jb25zdCBTY3JpcHRDYWxsRnJhbWUmIFNjcmlwdENhbGxTdGFjazo6
YXQodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgaWYgKCFpbmRleCAmJiBtX3RvcEZyYW1lKQotICAg
ICAgICByZXR1cm4gKm1fdG9wRnJhbWU7Ci0gICAgcmV0dXJuICptX3NjcmlwdENhbGxGcmFtZXMu
YXQoaW5kZXgpOwotfQotCi11bnNpZ25lZCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQotewotICAg
IGlmIChtX3NjcmlwdENhbGxGcmFtZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMTsKLSAg
ICByZXR1cm4gbV9zY3JpcHRDYWxsRnJhbWVzLnNpemUoKTsKLX0KLQotCi1ib29sIFNjcmlwdENh
bGxTdGFjazo6c3RhY2tUcmFjZShpbnQgZnJhbWVMaW1pdCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgc3RhY2tUcmFjZSkKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmICgh
djg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7
Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2Nv
cGUoY29udGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gdHJhY2Uodjg6OlN0
YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1lTGltaXQpKTsKLSAgICBpbnQgZnJhbWVD
b3VudCA9IHRyYWNlLT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgaWYgKHRyYWNlLklzRW1wdHkoKSB8
fCAhZnJhbWVDb3VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJh
bWU+IGZyYW1lID0gdHJhY2UtPkdldEZyYW1lKGkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAg
IHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzY3JpcHROYW1lID0gZnJhbWUtPkdldFNjcmlwdE5hbWUo
KTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldFN0cmluZygic2NyaXB0TmFtZSIsIHNjcmlwdE5h
bWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc2NyaXB0TmFtZSkpOwotICAgICAg
ICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1lID0gZnJhbWUtPkdldEZ1bmN0aW9u
TmFtZSgpOwotICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBm
dW5jdGlvbk5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1l
KSk7Ci0gICAgICAgIGZyYW1lT2JqZWN0LT5zZXROdW1iZXIoImxpbmVOdW1iZXIiLCBmcmFtZS0+
R2V0TGluZU51bWJlcigpKTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigiY29sdW1u
IiwgZnJhbWUtPkdldENvbHVtbigpKTsKLSAgICAgICAgc3RhY2tUcmFjZS0+cHVzaE9iamVjdChm
cmFtZU9iamVjdCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZTUx
OTUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAor
KysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxsU3Rh
Y2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAotCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZy
YW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KLWNsYXNzIFNjcmlwdENhbGxTdGFj
ayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGludCBt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlOwotICAgIHN0YXRpYyBjb25zdCB2ODo6U3RhY2tUcmFj
ZTo6U3RhY2tUcmFjZU9wdGlvbnMgc3RhY2tUcmFjZU9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQgPSAwLCBpbnQgZnJhbUNvdW50TGltaXQgPSAxKTsKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShTY3JpcHRTdGF0ZSos
IHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+KTsKLSAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0K
LSAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgSmF2YVNjcmlwdCBv
ciBpZiBmZXRjaGluZyB0aGUgc3RhY2sgZmFpbGVkLgotICAgIC8vIFNldHMgc3RhY2tUcmFjZSB0
byBiZSBhbiBhcnJheSBvZiBzdGFjayBmcmFtZSBvYmplY3RzLgotICAgIC8vIEEgc3RhY2sgZnJh
bWUgb2JqZWN0IGxvb2tzIGxpa2U6Ci0gICAgLy8gewotICAgIC8vICAgc2NyaXB0TmFtZTogPGZp
bGUgbmFtZSBmb3IgdGhlIGFzc29jaWF0ZWQgc2NyaXB0IHJlc291cmNlPgotICAgIC8vICAgZnVu
Y3Rpb25OYW1lOiA8bmFtZSBvZiB0aGUgSmF2YVNjcmlwdCBmdW5jdGlvbj4KLSAgICAvLyAgIGxp
bmVOdW1iZXI6IDwxIGJhc2VkIGxpbmUgbnVtYmVyPgotICAgIC8vICAgY29sdW1uOiA8MSBiYXNl
ZCBjb2x1bW4gb2Zmc2V0IG9uIHRoZSBsaW5lPgotICAgIC8vIH0KLSAgICBzdGF0aWMgYm9vbCBz
dGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBz
dGFja1RyYWNlKTsKLQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpOwot
ICAgIHVuc2lnbmVkIHNpemUoKTsKLQotICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KLSAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2NyaXB0Q2Fs
bFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJh
bWU+IHRvcEZyYW1lLCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2Fs
bEZyYW1lcyk7Ci0gICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
djg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSk7Ci0KLSAgICBPd25QdHI8U2Ny
aXB0Q2FsbEZyYW1lPiBtX3RvcEZyYW1lOwotICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRl
OwotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+IG1fc2NyaXB0Q2FsbEZyYW1l
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxT
dGFja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmZiZWVmCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgorI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisKKyNpbmNsdWRl
IDx2OC1kZWJ1Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTY3JpcHRDYWxs
RnJhbWUgdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUp
Cit7CisgICAgU3RyaW5nIHNvdXJjZU5hbWU7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNv
dXJjZU5hbWVWYWx1ZShmcmFtZS0+R2V0U2NyaXB0TmFtZU9yU291cmNlVVJMKCkpOworICAgIGlm
ICghc291cmNlTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgc291cmNlTmFtZSA9IHRvV2Vi
Q29yZVN0cmluZyhzb3VyY2VOYW1lVmFsdWUpOworCisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsK
KyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1
bmN0aW9uTmFtZSgpKTsKKyAgICBpZiAoIWZ1bmN0aW9uTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAg
ICAgICAgZnVuY3Rpb25OYW1lID0gdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZVZhbHVlKTsK
KworICAgIGludCBzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKKyAg
ICByZXR1cm4gU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNl
TGluZU51bWJlcik7Cit9CisKK3N0YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2UsIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBzY3JpcHRDYWxsRnJhbWVzLCBz
aXplX3QgbWF4U3RhY2tTaXplKQoreworICAgIC8vIFRPRE8oeXVyeXMpOiByZW1vdmUgdGhpcz8/
PworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisgICAgaW50
IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7CisgICAgaWYgKGZyYW1l
Q291bnQgPiBzdGF0aWNfY2FzdDxpbnQ+KG1heFN0YWNrU2l6ZSkpCisgICAgICAgIGZyYW1lQ291
bnQgPSBtYXhTdGFja1NpemU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBp
KyspIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3Rh
Y2tUcmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRv
U2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFmcmFt
ZUNvdW50KSB7CisgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBi
dXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQgbWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4
IGVycm9yIGZvciBleGFtcGxlLgorICAgICAgICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVO
dW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQgZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4K
KyAgICAgICAgc2NyaXB0Q2FsbEZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKCJ1bmRlZmlu
ZWQiLCAidW5kZWZpbmVkIiwgMCkpOworICAgIH0KK30KKworUGFzc093blB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIHNpemVfdCBtYXhTdGFj
a1NpemUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1l
PiBzY3JpcHRDYWxsRnJhbWVzOworICAgIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0
LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzLCBtYXhTdGFja1NpemUpOworICAgIHJldHVy
biBuZXcgU2NyaXB0Q2FsbFN0YWNrKHNjcmlwdENhbGxGcmFtZXMpOworfQorCitQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1Np
emUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgLy8gVE9ETyh5
dXJ5cyk6IHJlbW92ZT8KKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRl
eHQpOworICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNr
VHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKG1heFN0YWNrU2l6ZSwgc3RhY2tUcmFjZU9wdGlvbnMp
KTsKKyAgICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGNvbnRleHQsIHN0YWNrVHJhY2Us
IG1heFN0YWNrU2l6ZSk7Cit9CisKK1Bhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVT
Y3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVk
IHNraXBBcmd1bWVudENvdW50KQoreworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgp
OworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRl
eHQpOworCisgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgZm9yIChpbnQg
aSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgdjhhcmd1bWVudHMuTGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZSh2OGFyZ3VtZW50c1tpXSkpOworCisg
ICAgcmV0dXJuIG5ldyBTY3JpcHRBcmd1bWVudHMoc3RhdGUsIGFyZ3VtZW50cyk7Cit9CisKK2Jv
b2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6Okdl
dEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZShjb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiB0
cmFjZSh2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoZnJhbWVMaW1pdCkpOworICAg
IGludCBmcmFtZUNvdW50ID0gdHJhY2UtPkdldEZyYW1lQ291bnQoKTsKKyAgICBpZiAodHJhY2Uu
SXNFbXB0eSgpIHx8ICFmcmFtZUNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSB0cmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdE5hbWUgPSBmcmFtZS0+R2V0
U2NyaXB0TmFtZSgpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJzY3JpcHROYW1l
Iiwgc2NyaXB0TmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhzY3JpcHROYW1l
KSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBmdW5jdGlvbk5hbWUgPSBmcmFtZS0+
R2V0RnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoImZ1bmN0
aW9uTmFtZSIsIGZ1bmN0aW9uTmFtZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhm
dW5jdGlvbk5hbWUpKTsKKyAgICAgICAgZnJhbWVPYmplY3QtPnNldE51bWJlcigibGluZU51bWJl
ciIsIGZyYW1lLT5HZXRMaW5lTnVtYmVyKCkpOworICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVt
YmVyKCJjb2x1bW4iLCBmcmFtZS0+R2V0Q29sdW1uKCkpOworICAgICAgICBzdGFja1RyYWNlLT5w
dXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2FmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKKyNkZWZpbmUgU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeV9oCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0U3RhdGU7CisKK2NvbnN0
IHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucyBzdGFja1RyYWNlT3B0aW9ucyA9IHN0
YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCisgICAgICB2ODo6
U3RhY2tUcmFjZTo6a0xpbmVOdW1iZXIKKyAgICB8IHY4OjpTdGFja1RyYWNlOjprQ29sdW1uT2Zm
c2V0CisgICAgfCB2ODo6U3RhY2tUcmFjZTo6a1NjcmlwdE5hbWVPclNvdXJjZVVSTAorICAgIHwg
djg6OlN0YWNrVHJhY2U6OmtGdW5jdGlvbk5hbWUpOworCitjbGFzcyBTY3JpcHRBcmd1bWVudHM7
CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CisKK1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
cmVhdGVTY3JpcHRDYWxsU3RhY2sodjg6OkxvY2FsPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2
ODo6U3RhY2tUcmFjZT4sIHNpemVfdCBtYXhTdGFja1NpemUpOworUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplKTsKK1Bh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0OTA0YTRl
Li5mYTM3YzM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC00NjgsNyAr
NDY5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wpCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNh
bGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhib29sIHZhbHVlKQogewotICAgIHY4OjpWODo6
U2V0Q2FwdHVyZVN0YWNrVHJhY2VGb3JVbmNhdWdodEV4Y2VwdGlvbnModmFsdWUsIFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgU2NyaXB0Q2FsbFN0YWNrOjpzdGFj
a1RyYWNlT3B0aW9ucyk7CisgICAgdjg6OlY4OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1
Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlLCBzdGFja1RyYWNlT3B0aW9ucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRTdGF0ZS5oCmluZGV4IGNlMzUwZGEuLjExODEzYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb250ZXh0LkNs
ZWFyKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgU2NyaXB0U3RhdGUqIGdldCgpIHsgcmV0dXJu
IG1fc2NyaXB0U3RhdGU7IH0KKyAgICBTY3JpcHRTdGF0ZSogZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9zY3JpcHRTdGF0ZTsgfQogcHJpdmF0ZToKICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0
ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggOGI2YmIxNy4uNDBmOWE3YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiT3duUHRyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTExNywxOCArMTE4
LDE3IEBAIHZvaWQgVjhDb25zb2xlTWVzc2FnZTo6aGFuZGxlcih2ODo6SGFuZGxlPHY4OjpNZXNz
YWdlPiBtZXNzYWdlLCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgLy8gQ3VycmVudGx5IHN0YWNrIHRy
YWNlIGlzIG9ubHkgY29sbGVjdGVkIHdoZW4gaW5zcGVjdG9yIGlzIG9wZW4uCiAgICAgaWYgKCFz
dGFja1RyYWNlLklzRW1wdHkoKSAmJiBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkgPiAwKSB7
CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpH
ZXRFbnRlcmVkKCk7Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0
YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOwotICAgICAgICBjYWxsU3RhY2sgPSBTY3JpcHRDYWxs
U3RhY2s6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSk7CisgICAgICAgIGNhbGxTdGFj
ayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhjb250ZXh0LCBzdGFja1RyYWNlLCBTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwogICAgIH0KIAogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZXNvdXJjZU5hbWUgPSBtZXNzYWdlLT5HZXRTY3JpcHRSZXNvdXJjZU5h
bWUoKTsKICAgICBib29sIHVzZVVSTCA9IHJlc291cmNlTmFtZS5Jc0VtcHR5KCkgfHwgIXJlc291
cmNlTmFtZS0+SXNTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lU3RyaW5nID0gdXNl
VVJMID8gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogdG9XZWJDb3JlU3RyaW5nKHJlc291cmNl
TmFtZSk7CiAgICAgVjhDb25zb2xlTWVzc2FnZSBjb25zb2xlTWVzc2FnZShlcnJvck1lc3NhZ2Us
IHJlc291cmNlTmFtZVN0cmluZywgbWVzc2FnZS0+R2V0TGluZU51bWJlcigpKTsKLSAgICBjb25z
b2xlTWVzc2FnZS5kaXNwYXRjaE5vdyhwYWdlLCBjYWxsU3RhY2suZ2V0KCkpOworICAgIGNvbnNv
bGVNZXNzYWdlLmRpc3BhdGNoTm93KHBhZ2UsIGNhbGxTdGFjay5yZWxlYXNlKCkpOwogfQogCi12
b2lkIFY4Q29uc29sZU1lc3NhZ2U6OmRpc3BhdGNoTm93KFBhZ2UqIHBhZ2UsIFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrKQordm9pZCBWOENvbnNvbGVNZXNzYWdlOjpkaXNwYXRjaE5vdyhQYWdl
KiBwYWdlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIEFT
U0VSVChwYWdlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVN
ZXNzYWdlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAppbmRleCAz
ODdiNWVlLi42Yjg5MmRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29s
ZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSw3ICs4Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nIG1fc291cmNlSUQ7CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIG1fbGluZU51bWJlcjsKIAotICAgICAgICB2b2lkIGRpc3BhdGNoTm93KFBhZ2Uq
LCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE5vdyhQYWdlKiwgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgICAgICAvLyBBbGwgZGVsYXllZCBtZXNz
YWdlcyBhcmUgc3RvcmVkIGluIHRoaXMgdmVjdG9yLiBJZiB0aGUgdmVjdG9yCiAgICAgICAgIC8v
IGlzIDAsIHRoZXJlIGFyZSBubyBkZWxheWVkIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQppbmRleCBmYzgzYjYxLi5iMTdiOGU5Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRlICJWOENv
bnNvbGUuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKICNpbmNsdWRlICJWOFNjcmlwdFByb2ZpbGUuaCIKIApAQCAtNjIsMTEgKzY1LDkgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6dHJhY2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUudHJhY2VDYWxs
YmFjayIpOwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Ci0gICAgdjg6OkxvY2FsPHY4
OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1Ry
YWNlKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgU2NyaXB0Q2Fs
bFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBzdGFja1RyYWNl
KSk7Ci0gICAgaW1wLT50cmFjZShjYWxsU3RhY2suZ2V0KCkpOworICAgIE93blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNr
OjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CisgICAg
aW1wLT50cmFjZShzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgp
KTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKQEAgLTc0LDkgKzc1
LDM0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5h
c3NlcnRDYWxsYmFjayIpOwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKFNj
cmlwdENhbGxTdGFjazo6Y3JlYXRlKGFyZ3MsIDEsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0
YWNrU2l6ZVRvQ2FwdHVyZSkpOworICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKSk7CiAgICAgYm9vbCBjb25kaXRpb24gPSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUo
KTsKLSAgICBpbXAtPmFzc2VydENvbmRpdGlvbihjb25kaXRpb24sIGNhbGxTdGFjay5nZXQoKSk7
CisgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhhcmdzLCAxKSk7CisgICAgaW1wLT5hc3NlcnRDb25kaXRpb24oY29uZGl0aW9u
LCBzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKKyAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUucHJvZmlsZSIpOworICAgIENvbnNvbGUqIGlt
cCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7CisgICAgaWYg
KCFjYWxsU3RhY2spCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CisgICAgaW1wLT5wcm9maWxlKHRpdGxlLCBT
Y3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKKyAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
bnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIElOQ19TVEFUUygiRE9NLkNvbnNvbGUucHJvZmlsZUVuZCIpOworICAgIENvbnNvbGUqIGlt
cCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7CisgICAgaWYg
KCFjYWxsU3RhY2spCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CisgICAgaW1wLT5wcm9maWxlRW5kKHRpdGxl
LCBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBjYWxsU3RhY2sucmVsZWFzZSgpKTsKICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L05vZGVGaWx0ZXIuaCBiL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaAppbmRleCBkMjAyMmJjLi41
Y2UyODY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmgKKysrIGIvV2ViQ29y
ZS9kb20vTm9kZUZpbHRlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIE5vZGVGaWx0ZXJf
aAogI2RlZmluZSBOb2RlRmlsdGVyX2gKIAorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgog
I2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA2NzkzMGNkLi4wMzI4M2Jm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zMyw0NiArMzMsMTUgQEAK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2VuZGlmCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db25zb2xlTWVz
c2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSkK
LSAgICA6IG1fZnVuY3Rpb25OYW1lKGZyYW1lLmZ1bmN0aW9uTmFtZSgpKQotICAgICwgbV9zb3Vy
Y2VVUkwoZnJhbWUuc291cmNlVVJMKCkpCi0gICAgLCBtX2xpbmVOdW1iZXIoZnJhbWUubGluZU51
bWJlcigpKQotewotfQotCi1Db25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpDYWxsRnJhbWUoKQot
ICAgIDogbV9saW5lTnVtYmVyKDApCi17Ci19Ci0KLWJvb2wgQ29uc29sZU1lc3NhZ2U6OkNhbGxG
cmFtZTo6aXNFcXVhbChjb25zdCBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lJiBvKSBjb25zdAot
ewotICAgIHJldHVybiBtX2Z1bmN0aW9uTmFtZSA9PSBvLm1fZnVuY3Rpb25OYW1lCi0gICAgICAg
ICYmIG1fc291cmNlVVJMID09IG8ubV9zb3VyY2VVUkwKLSAgICAgICAgJiYgbV9saW5lTnVtYmVy
ID09IG8ubV9saW5lTnVtYmVyOwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1lOjpidWlsZEluc3Bl
Y3Rvck9iamVjdCgpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZnJhbWUg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGZyYW1lLT5zZXRTdHJpbmcoImZ1bmN0
aW9uTmFtZSIsIG1fZnVuY3Rpb25OYW1lKTsKLSAgICBmcmFtZS0+c2V0U3RyaW5nKCJzb3VyY2VV
UkwiLCBtX3NvdXJjZVVSTCk7Ci0gICAgZnJhbWUtPnNldE51bWJlcigibGluZU51bWJlciIsIG1f
bGluZU51bWJlcik7Ci0gICAgcmV0dXJuIGZyYW1lOwotfQotI2VuZGlmCi0KIENvbnNvbGVNZXNz
YWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3Nh
Z2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUs
IHVuc2lnbmVkIGcpCiAgICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCkBAIC04NSwz
NSArNTQsMjYgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
cywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGMKIHsKIH0KIAotQ29uc29sZU1lc3Nh
Z2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2Fn
ZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIHVu
c2lnbmVkIGcsIGJvb2wgc3RvcmVUcmFjZSkKK0NvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBT
dHJpbmcmIG0sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcpCiAgICAgOiBtX3NvdXJj
ZShzKQogICAgICwgbV90eXBlKHQpCiAgICAgLCBtX2xldmVsKGwpCiAgICAgLCBtX21lc3NhZ2Uo
bSkKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICwgbV9hcmd1bWVudHMoY2FsbFN0YWNrLT5h
dCgwKS5hcmd1bWVudENvdW50KCkpCi0gICAgLCBtX3NjcmlwdFN0YXRlKGNhbGxTdGFjay0+Z2xv
YmFsU3RhdGUoKSkKLSNlbmRpZgotICAgICwgbV9mcmFtZXMoc3RvcmVUcmFjZSA/IGNhbGxTdGFj
ay0+c2l6ZSgpIDogMCkKKyAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKKyAgICAsIG1fY2Fs
bFN0YWNrKGNhbGxTdGFjaykKICAgICAsIG1fZ3JvdXBMZXZlbChnKQogICAgICwgbV9yZXBlYXRD
b3VudCgxKQogewotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxT
dGFjay0+YXQoMCk7CisgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gbV9j
YWxsU3RhY2stPmF0KDApOwogICAgIG1fbGluZSA9IGxhc3RDYWxsZXIubGluZU51bWJlcigpOwog
ICAgIG1fdXJsID0gbGFzdENhbGxlci5zb3VyY2VVUkwoKTsKIAotICAgIGlmIChzdG9yZVRyYWNl
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsU3RhY2stPnNpemUoKTsg
KytpKQotICAgICAgICAgICAgbV9mcmFtZXNbaV0gPSBDb25zb2xlTWVzc2FnZTo6Q2FsbEZyYW1l
KGNhbGxTdGFjay0+YXQoaSkpOwotICAgIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxhc3RDYWxsZXIuYXJndW1lbnRDb3VudCgpOyArK2kp
Ci0gICAgICAgIG1fYXJndW1lbnRzW2ldID0gbGFzdENhbGxlci5hcmd1bWVudEF0KGkpOwotI2Vu
ZGlmCisgICAgYm9vbCBzdG9yZVRyYWNlID0gKHQgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0ID09
IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwgdCA9PSBBc3NlcnRNZXNzYWdlVHlwZSk7
CisgICAgaWYgKCFzdG9yZVRyYWNlKQorICAgICAgICBtX2NhbGxTdGFjay5jbGVhcigpOwogfQog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVj
dGVkU2NyaXB0SG9zdCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uT2JqID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKQEAgLTEyNSwxMiArODUsMTIgQEAgdm9pZCBDb25z
b2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIElu
amVjdGVkU2NyaXB0SG8KICAgICBqc29uT2JqLT5zZXROdW1iZXIoImdyb3VwTGV2ZWwiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVw
ZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2Jq
LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBtX21lc3NhZ2UpOwotICAgIGlmICghbV9hcmd1bWVudHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX3NjcmlwdFN0YXRlLmdldCgpKTsK
KyAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewor
ICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SG9z
dC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRlKCkpOwogICAgICAg
ICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBqc29uQXJncyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFs
dWUgPSBpbmplY3RlZFNjcmlwdC53cmFwRm9yQ29uc29sZShtX2FyZ3VtZW50c1tpXSk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNw
ZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1fYXJndW1lbnRzLT5h
cmd1bWVudEF0KGkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNDAsMTIgKzEwMCw4IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFk
ZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhv
CiAgICAgICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgicGFyYW1ldGVycyIsIGpzb25BcmdzKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGZyYW1lcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUo
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsr
KQotICAgICAgICAgICAgZnJhbWVzLT5wdXNoT2JqZWN0KG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5z
cGVjdG9yT2JqZWN0KCkpOwotICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgic3RhY2tUcmFjZSIs
IGZyYW1lcyk7Ci0gICAgfQorICAgIGlmIChtX2NhbGxTdGFjaykKKyAgICAgICAganNvbk9iai0+
c2V0QXJyYXkoInN0YWNrVHJhY2UiLCBtX2NhbGxTdGFjay0+YnVpbGRJbnNwZWN0b3JPYmplY3Qo
KSk7CiAgICAgZnJvbnRlbmQtPmFkZENvbnNvbGVNZXNzYWdlKGpzb25PYmopOwogfQogCkBAIC0x
NTMsMzIgKzEwOSwyMCBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudElu
Q29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgZnJvbnRlbmQtPnVw
ZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQobV9yZXBlYXRDb3VudCk7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKIAogYm9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25z
b2xlTWVzc2FnZSogbXNnKSBjb25zdAogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KG1zZy0+bV9hcmd1bWVudHMuc2l6ZSgpICE9IG1fYXJndW1lbnRzLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghbXNnLT5tX3NjcmlwdFN0YXRlLmdldCgpICYmIG1zZy0+
bV9hcmd1bWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1fYXJndW1lbnRzW2ldLmlz
RXF1YWwobXNnLT5tX3NjcmlwdFN0YXRlLmdldCgpLCBtc2ctPm1fYXJndW1lbnRzW2ldKSkKKyAg
ICBpZiAobV9hcmd1bWVudHMpIHsKKyAgICAgICAgaWYgKCFtX2FyZ3VtZW50cy0+aXNFcXVhbCht
c2ctPm1fYXJndW1lbnRzLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLQotICAgIHNpemVfdCBmcmFtZUNvdW50ID0g
bXNnLT5tX2ZyYW1lcy5zaXplKCk7Ci0gICAgaWYgKGZyYW1lQ291bnQgIT0gbV9mcmFtZXMuc2l6
ZSgpKQorICAgIH0gZWxzZSBpZiAobXNnLT5tX2FyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKLSAg
ICAgICAgaWYgKCFtX2ZyYW1lc1tpXS5pc0VxdWFsKG1zZy0+bV9mcmFtZXNbaV0pKQorICAgIGlm
IChtX2NhbGxTdGFjaykgeworICAgICAgICBpZiAoIW1fY2FsbFN0YWNrLT5pc0VxdWFsKG1zZy0+
bV9jYWxsU3RhY2suZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICB9IGVsc2UgaWYgKG1zZy0+bV9jYWxsU3RhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJldHVybiBtc2ctPm1fc291cmNlID09IG1fc291cmNlCiAgICAgICAgICYmIG1zZy0+bV90
eXBlID09IG1fdHlwZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggNmMzZjJjNy4u
NGU4OGJlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxl
ay5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxNSArMzIs
MTYgQEAKICNkZWZpbmUgQ29uc29sZU1lc3NhZ2VfaAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgot
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5k
OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3Mg
U2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2NyaXB0VmFs
dWU7CkBAIC00OCwxMiArNDksMTAgQEAgY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBDb25zb2xl
TWVzc2FnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1LCB1bnNpZ25lZCBnKTsKLSAgICBDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG0sIFNjcmlwdENhbGxTdGFjayosIHVuc2lnbmVkIGcsIGJvb2wgc3RvcmVUcmFj
ZSA9IGZhbHNlKTsKKyAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1l
bnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+LCB1bnNpZ25lZCBnKTsKIAotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgdm9pZCBhZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5k
KiwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwotI2VuZGlmCiAgICAgdm9pZCBpbmNy
ZW1lbnRDb3VudCgpIHsgKyttX3JlcGVhdENvdW50OyB9CiAgICAgYm9vbCBpc0VxdWFsKENvbnNv
bGVNZXNzYWdlKiBtc2cpIGNvbnN0OwogCkBAIC02MSwzMCArNjAsMTIgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogCiBw
cml2YXRlOgotICAgIGNsYXNzIENhbGxGcmFtZSB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBs
aWNpdCBDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSk7Ci0gICAgICAgIENh
bGxGcmFtZSgpOwotICAgICAgICBib29sIGlzRXF1YWwoY29uc3QgQ2FsbEZyYW1lJiBvKSBjb25z
dDsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgICAgICBTdHJpbmcgbV9zb3Vy
Y2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKLSAgICB9OwotCiAgICAgTWVz
c2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBNZXNzYWdlVHlwZSBtX3R5cGU7CiAgICAgTWVzc2Fn
ZUxldmVsIG1fbGV2ZWw7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7Ci0gICAgU2NyaXB0U3Rh
dGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsKLSNlbmRpZgotICAgIFZlY3RvcjxDYWxsRnJh
bWU+IG1fZnJhbWVzOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IG1fYXJndW1lbnRzOwor
ICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fY2FsbFN0YWNrOwogICAgIHVuc2lnbmVkIG1f
bGluZTsKICAgICBTdHJpbmcgbV91cmw7CiAgICAgdW5zaWduZWQgbV9ncm91cExldmVsOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmOTlkNDg3Li5iMTk1
YzM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODIs
NiArODIsNyBAQAogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3Jp
cHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKQEAgLTMzOSwx
MyArMzQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q29uc29sZU1lc3NhZ2Vz
RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzW2ldLT5hZGRU
b0Zyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBib29sIHN0b3JlU3RhY2tUcmFjZSA9IHR5cGUgPT0gVHJhY2VN
ZXNzYWdlVHlwZSB8fCB0eXBlID09IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwgdHlw
ZSA9PSBBc3NlcnRNZXNzYWdlVHlwZTsKLSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29s
ZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCBtX2dyb3Vw
TGV2ZWwsIHN0b3JlU3RhY2tUcmFjZSkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25z
b2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxT
dGFjaywgbV9ncm91cExldmVsKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCkBAIC0zOTEsMTEgKzM5MSwxMSBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKICAgICAgICAgbV9m
cm9udGVuZC0+Y29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKIHsKICAgICAr
K21fZ3JvdXBMZXZlbDsKIAotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2Fn
ZShzb3VyY2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZSA6IFN0
YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgY2FsbFN0YWNr
LCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2Fn
ZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIiIsIGFyZ3Vt
ZW50cywgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjplbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggNmQ0ZDllMC4uNjhhYTE0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFz
cyBTY3JpcHRQcm9maWxlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtMTQ1LDggKzE0Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAgdm9pZCBzZXRD
b25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwotICAg
IHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAg
IHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlSUQpOworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVN
ZXNzYWdlcygpOwogICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4mIGNv
bnNvbGVNZXNzYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc29sZU1lc3NhZ2VzOyB9CiAKQEAg
LTIzMiw3ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFRpbWluZyhjb25zdCBTdHJp
bmcmIHRpdGxlKTsKICAgICBib29sIHN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91
YmxlJiBlbGFwc2VkKTsKIAotICAgIHZvaWQgc3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJj
ZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsRnJhbWUsIGJvb2wgY29sbGFwc2VkID0gZmFsc2UpOwor
ICAgIHZvaWQgc3RhcnRHcm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsRnJhbWUsIGJvb2wgY29sbGFwc2VkID0gZmFsc2UpOwog
ICAgIHZvaWQgZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAogICAgIHZvaWQgbWFya1RpbWVsaW5lKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRBcmd1bWVudHMuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzBlMTM1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICog
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgor
CisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3Jp
cHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFZl
Y3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKKyAgICA6IG1fc2NyaXB0U3RhdGUoc2NyaXB0
U3RhdGUpCit7CisgICAgbV9hcmd1bWVudHMuc3dhcChhcmd1bWVudHMpOworfQorCitTY3JpcHRB
cmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMoKQoreworfQorCitjb25zdCBTY3JpcHRWYWx1ZSAm
U2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOworICAgIHJldHVybiBtX2FyZ3VtZW50
c1tpbmRleF07Cit9CisKK1NjcmlwdFN0YXRlKiBTY3JpcHRBcmd1bWVudHM6Omdsb2JhbFN0YXRl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRTdGF0ZS5nZXQoKTsKK30KKworYm9vbCBT
Y3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCwg
Ym9vbCBjaGVja0Zvck51bGxPclVuZGVmaW5lZCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50Q291bnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVl
ID0gYXJndW1lbnRBdCgwKTsKKyAgICBpZiAoY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQgJiYgKHZh
bHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWdsb2JhbFN0YXRlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSB2YWx1
ZS50b1N0cmluZyhnbG9iYWxTdGF0ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBT
Y3JpcHRBcmd1bWVudHM6OmlzRXF1YWwoU2NyaXB0QXJndW1lbnRzKiBvdGhlcikgY29uc3QKK3sK
KyAgICBpZiAoIW90aGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9hcmd1
bWVudHMuc2l6ZSgpICE9IG90aGVyLT5tX2FyZ3VtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWdsb2JhbFN0YXRlKCkgJiYgbV9hcmd1bWVudHMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJn
dW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghbV9hcmd1bWVudHNbaV0uaXNFcXVh
bChvdGhlci0+Z2xvYmFsU3RhdGUoKSwgb3RoZXItPm1fYXJndW1lbnRzW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMDVhYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNjcmlwdEFyZ3VtZW50c19oCisjZGVmaW5lIFNjcmlwdEFyZ3VtZW50c19oCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFZhbHVl
OworCitjbGFzcyBTY3JpcHRBcmd1bWVudHMgeworcHVibGljOgorICAgIFNjcmlwdEFyZ3VtZW50
cyhTY3JpcHRTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CisgICAgflNj
cmlwdEFyZ3VtZW50cygpOworCisgICAgY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQoc2l6
ZV90KSBjb25zdDsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJndW1lbnRzLnNpemUoKTsgfQorCisgICAgU2NyaXB0U3RhdGUqIGdsb2JhbFN0YXRlKCkgY29u
c3Q7CisKKyAgICBib29sIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhXVEY6OlN0cmluZyYgcmVz
dWx0LCBib29sIGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkID0gZmFsc2UpOworICAgIGJvb2wgaXNF
cXVhbChTY3JpcHRBcmd1bWVudHMqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTY3JpcHRTdGF0
ZVByb3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRlOworICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9h
cmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3Jp
cHRBcmd1bWVudHNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZy
YW1lLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1NWQyNQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKworI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVuc2lnbmVkIGxp
bmVOdW1iZXIpCisgICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICAgLCBtX3Nv
dXJjZVVSTCh1cmxTdHJpbmcpCisgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKK3sKK30K
KworU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkKK3sKK30KKworYm9vbCBTY3Jp
cHRDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBvKSBjb25zdAorewor
ICAgIHJldHVybiBtX2Z1bmN0aW9uTmFtZSA9PSBvLm1fZnVuY3Rpb25OYW1lCisgICAgICAgICYm
IG1fc291cmNlVVJMID09IG8ubV9zb3VyY2VVUkwKKyAgICAgICAgJiYgbV9saW5lTnVtYmVyID09
IG8ubV9saW5lTnVtYmVyOworfQorCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gU2NyaXB0
Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0Cit7CisgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZnJhbWUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGZy
YW1lLT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG1fZnVuY3Rpb25OYW1lKTsKKyAgICBmcmFt
ZS0+c2V0U3RyaW5nKCJzb3VyY2VVUkwiLCBtX3NvdXJjZVVSTCk7CisgICAgZnJhbWUtPnNldE51
bWJlcigibGluZU51bWJlciIsIG1fbGluZU51bWJlcik7CisgICAgcmV0dXJuIGZyYW1lOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZDc3ZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTY3JpcHRDYWxsRnJhbWVfaAorI2RlZmluZSBTY3JpcHRDYWxsRnJhbWVfaAor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKKworY2xh
c3MgU2NyaXB0Q2FsbEZyYW1lICB7CitwdWJsaWM6CisgICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdW5zaWduZWQg
bGluZU51bWJlcik7CisgICAgflNjcmlwdENhbGxGcmFtZSgpOworCisgICAgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZTsgfQorICAgIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KKyAg
ICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisK
KyAgICBib29sIGlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJikgY29uc3Q7CisgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOworICAgIFN0cmluZyBtX3NvdXJj
ZVVSTDsKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsRnJhbWVfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQwMTBi
YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5j
cHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhWZWN0b3I8
U2NyaXB0Q2FsbEZyYW1lPiYgZnJhbWVzKQoreworICAgIG1fZnJhbWVzLnN3YXAoZnJhbWVzKTsK
K30KKworU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKCkKK3sKK30KKworY29uc3Qg
U2NyaXB0Q2FsbEZyYW1lICZTY3JpcHRDYWxsU3RhY2s6OmF0KHNpemVfdCBpbmRleCkKK3sKKyAg
ICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID4gaW5kZXgpOworICAgIHJldHVybiBtX2ZyYW1lc1tp
bmRleF07Cit9CisKK3NpemVfdCBTY3JpcHRDYWxsU3RhY2s6OnNpemUoKQoreworICAgIHJldHVy
biBtX2ZyYW1lcy5zaXplKCk7Cit9CisKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNj
cmlwdENhbGxTdGFjayogbykgY29uc3QKK3sKKyAgICBpZiAoIW8pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHNpemVfdCBmcmFtZUNvdW50ID0gby0+bV9mcmFtZXMuc2l6ZSgpOworICAg
IGlmIChmcmFtZUNvdW50ICE9IG1fZnJhbWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKKyAgICAg
ICAgaWYgKCFtX2ZyYW1lc1tpXS5pc0VxdWFsKG8tPm1fZnJhbWVzW2ldKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3Rvck9iamVjdCgp
IGNvbnN0Cit7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBmcmFtZXMgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXpl
KCk7IGkrKykKKyAgICAgICAgZnJhbWVzLT5wdXNoT2JqZWN0KG1fZnJhbWVzLmF0KGkpLmJ1aWxk
SW5zcGVjdG9yT2JqZWN0KCkpOworICAgIHJldHVybiBmcmFtZXM7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjNmJiYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNjcmlwdENhbGxTdGFja19oCisjZGVmaW5lIFNjcmlwdENhbGxTdGFja19oCisKKyNpbmNs
dWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5z
cGVjdG9yQXJyYXk7CisKK2NsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlID0gMjAwOworCisgICAgU2NyaXB0Q2FsbFN0YWNrKFZlY3RvcjxTY3JpcHRDYWxsRnJh
bWU+Jik7CisgICAgflNjcmlwdENhbGxTdGFjaygpOworCisgICAgY29uc3QgU2NyaXB0Q2FsbEZy
YW1lICZhdChzaXplX3QpOworICAgIHNpemVfdCBzaXplKCk7CisgICAgc3RhdGljIGJvb2wgc3Rh
Y2tUcmFjZShpbnQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsKKworICAgIGJvb2wg
aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZl
Y3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCAyZDRjYzk4
Li42ZmJmMjUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAorI2luY2x1ZGUgIlNjcmlwdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpAQCAtNzcsMTkgKzc4LDYg
QEAgc3RhdGljIHZvaWQgcHJpbnRTb3VyY2VVUkxBbmRMaW5lKGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgZ2V0Rmly
c3RBcmd1bWVudEFzU3RyaW5nKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0
Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIFN0cmluZyYgcmVzdWx0LCBib29sIGNoZWNrRm9yTnVsbE9y
VW5kZWZpbmVkID0gZmFsc2UpCi17Ci0gICAgaWYgKCFjYWxsRnJhbWUuYXJndW1lbnRDb3VudCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUg
PSBjYWxsRnJhbWUuYXJndW1lbnRBdCgwKTsKLSAgICBpZiAoY2hlY2tGb3JOdWxsT3JVbmRlZmlu
ZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSB2YWx1ZS50b1N0cmluZyhzY3JpcHRTdGF0ZSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFu
ZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCiB7
CiAgICAgY29uc3QgY2hhciogc291cmNlU3RyaW5nOwpAQCAtMTQ0LDcgKzEzMiwxMiBAQCBzdGF0
aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsCiAgICAgcHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcsIGxl
dmVsU3RyaW5nKTsKIH0KIAotdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCit7CisgICAgYWRkTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIDApOworfQorCit2b2lkIENvbnNvbGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAg
LTE1NSw3ICsxNDgsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZQogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0
YWNrLCBtZXNzYWdlKTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIDAsIGNhbGxTdGFj
ayk7CiAgICAgZWxzZQogICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKICNlbmRpZgpAQCAtMTY5LDcgKzE2Miw3IEBAIHZvaWQgQ29uc29sZTo6YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxl
dmVsIGxlCiAgICAgcHJpbnRmKCIgJXNcbiIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBib29sIGFjY2VwdE5vQXJndW1lbnRz
KQordm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgIFBhc3NPd25Q
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMpCiB7
CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xNzcs
MTUgKzE3MCwxNSBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBTY3JpcHRDYWxsU3RhY2sqCiAKICAgICBjb25zdCBTY3JpcHRD
YWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogCi0gICAgaWYgKCFhY2Nl
cHROb0FyZ3VtZW50cyAmJiAhbGFzdENhbGxlci5hcmd1bWVudENvdW50KCkpCisgICAgaWYgKCFh
Y2NlcHROb0FyZ3VtZW50cyAmJiAhYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChnZXRGaXJzdEFyZ3VtZW50
QXNTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLCBtZXNzYWdlKSkKKyAgICBp
ZiAoYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSkpCiAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFz
dENhbGxlci5zb3VyY2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3Vy
Y2UsIHR5cGUsIGxldmVsLCBjYWxsU3RhY2ssIG1lc3NhZ2UpOworICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUs
IGxldmVsLCAiIiwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwogI2VuZGlmCiAKICAgICBpZiAoIUNv
bnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQpAQCAtMTk0LDQ5ICsxODcsNDkgQEAgdm9p
ZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgU2NyaXB0Q2FsbFN0YWNrKgogICAgIHByaW50U291cmNlVVJMQW5kTGluZShsYXN0Q2FsbGVy
LnNvdXJjZVVSTCgpLCAwKTsKICAgICBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChK
U01lc3NhZ2VTb3VyY2UsIGxldmVsKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
YXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgU3RyaW5n
IGFyZ0FzU3RyaW5nOwotICAgICAgICBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmdldFN0
cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGFyZ0FzU3RyaW5nKSkKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50cy0+YXJndW1lbnRBdChpKS5nZXRTdHJpbmcoYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpLCBh
cmdBc1N0cmluZykpCiAgICAgICAgICAgICBwcmludGYoIiAlcyIsIGFyZ0FzU3RyaW5nLnV0Zjgo
KS5kYXRhKCkpOwogICAgIH0KICAgICBwcmludGYoIlxuIik7CiB9CiAKLXZvaWQgQ29uc29sZTo6
ZGVidWcoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmRlYnVnKFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgLy8gSW4gRmlyZWJ1ZywgY29uc29sZS5kZWJ1ZyBo
YXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY29uc29sZS5sb2cuIFNvIHdlJ2xsIGRvIHRoZSBzYW1l
LgotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9
CiAKLXZvaWQgQ29uc29sZTo6ZXJyb3IoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lk
IENvbnNvbGU6OmVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgYWRkTWVzc2FnZShM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVz
c2FnZShMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0
YWNrKTsKIH0KIAotdm9pZCBDb25zb2xlOjppbmZvKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KQordm9pZCBDb25zb2xlOjppbmZvKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgbG9nKGNh
bGxTdGFjayk7CisgICAgbG9nKGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25z
b2xlOjpsb2coU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmxvZyhQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBl
LCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAotdm9pZCBDb25z
b2xlOjpkaXIoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmRpcihQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoT2JqZWN0TWVzc2FnZVR5cGUs
IExvZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdlKE9iamVjdE1lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKIH0KIAotdm9p
ZCBDb25zb2xlOjpkaXJ4bWwoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNv
bGU6OmRpcnhtbChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIC8vIFRoZSBzdGFuZGFyZCBi
ZWhhdmlvciBvZiBvdXIgY29uc29sZS5sb2cgd2lsbCBwcmludCB0aGUgRE9NIHRyZWUgZm9yIG5v
ZGVzLgotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVudHMsIGNhbGxTdGFjayk7
CiB9CiAKLXZvaWQgQ29uc29sZTo6dHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2
b2lkIENvbnNvbGU6OnRyYWNlKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMs
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgYWRkTWVzc2Fn
ZShUcmFjZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjaywgdHJ1ZSk7Cisg
ICAgYWRkTWVzc2FnZShUcmFjZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50
cywgY2FsbFN0YWNrLCB0cnVlKTsKIAogICAgIGlmICghc2hvdWxkUHJpbnRFeGNlcHRpb25zKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI0OCwxNSArMjQxLDE1IEBAIHZvaWQgQ29uc29sZTo6dHJh
Y2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAgfQogfQogCi12b2lkIENvbnNvbGU6
OmFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCit2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKIHsKICAgICBpZiAoY29uZGl0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhZGRNZXNzYWdlKEFzc2VydE1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY2Fs
bFN0YWNrLCB0cnVlKTsKKyAgICBhZGRNZXNzYWdlKEFzc2VydE1lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2ssIHRydWUpOwogfQogCi12b2lkIENvbnNv
bGU6OmNvdW50KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpjb3Vu
dChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTI2Nyw3ICsyNjAsNyBAQCB2b2lkIENvbnNvbGU6
OmNvdW50KFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAgIC8vIEZvbGxvdyBGaXJlYnVn
J3MgYmVoYXZpb3Igb2YgY291bnRpbmcgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQgdGl0bGUgaW4K
ICAgICAvLyB0aGUgc2FtZSBidWNrZXQgYXMgbm8gYXJndW1lbnQKICAgICBTdHJpbmcgdGl0bGU7
Ci0gICAgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgbGFzdENh
bGxlciwgdGl0bGUpOworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKHRp
dGxlKTsKIAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y291bnQodGl0bGUsIGxh
c3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKICNlbHNlCkBA
IC0yNzUsMjAgKzI2OCwxOSBAQCB2b2lkIENvbnNvbGU6OmNvdW50KFNjcmlwdENhbGxTdGFjayog
Y2FsbFN0YWNrKQogI2VuZGlmCiB9CiAKLXZvaWQgQ29uc29sZTo6bWFya1RpbWVsaW5lKFNjcmlw
dENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjptYXJrVGltZWxpbmUoUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFNjcmlw
dENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgU3RyaW5nIG1l
c3NhZ2U7Ci0gICAgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwg
bGFzdENhbGxlciwgbWVzc2FnZSk7CisgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPm1hcmtU
aW1lbGluZShtZXNzYWdlKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7Cisg
ICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CiAjZW5kaWYKIH0KIApAQCAtMzIxLDcgKzMxMyw3
IEBAIFN0cmluZyBDb25zb2xlOjpsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3QKIAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCi12b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6
OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzQyLDcgKzMzNCw3IEBAIHZvaWQgQ29uc29s
ZTo6cHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aykKICAgICAgICAgcmVzb2x2ZWRUaXRsZSA9ICIiOwogI2VuZGlmCiAKLSAgICBTY3JpcHRQcm9m
aWxlcjo6c3RhcnQoY2FsbFN0YWNrLT5zdGF0ZSgpLCByZXNvbHZlZFRpdGxlKTsKKyAgICBTY3Jp
cHRQcm9maWxlcjo6c3RhcnQoc3RhdGUsIHJlc29sdmVkVGl0bGUpOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3Rh
Y2stPmF0KDApOwpAQCAtMzUwLDcgKzM0Miw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQog
Ci12b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2Fs
bFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlKQpAQCAtMzYyLDcgKzM1NCw3IEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZUVuZChjb25zdCBT
dHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFBy
b2ZpbGVyOjpzdG9wKGNhbGxTdGFjay0+c3RhdGUoKSwgdGl0bGUpOworICAgIFJlZlB0cjxTY3Jp
cHRQcm9maWxlPiBwcm9maWxlID0gU2NyaXB0UHJvZmlsZXI6OnN0b3Aoc3RhdGUsIHRpdGxlKTsK
ICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzk0LDcgKzM4Niw3IEBA
IHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogI2VuZGlmCiB9CiAKLXZv
aWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdlID0gdGhp
cy0+cGFnZSgpOwpAQCAtNDIwLDI4ICs0MTIsMzAgQEAgdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNv
bnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogI2VuZGlmCiB9
CiAKLXZvaWQgQ29uc29sZTo6Z3JvdXAoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lk
IENvbnNvbGU6Omdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdy
b3VwKEpTTWVzc2FnZVNvdXJjZSwgY2FsbFN0YWNrKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnN0YXJ0R3JvdXAoYXJndW1lbnRzLCBjYWxsU3RhY2spOwogI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbFN0YWNrKTsKICNl
bmRpZgogfQogCi12b2lkIENvbnNvbGU6Omdyb3VwQ29sbGFwc2VkKFNjcmlwdENhbGxTdGFjayog
Y2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChQYXNzT3duUHRyPFNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+c3RhcnRHcm91cChKU01lc3NhZ2VTb3VyY2UsIGNhbGxTdGFjaywg
dHJ1ZSk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3VwKGFyZ3Vt
ZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50
cyk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7CiAjZW5kaWYKIH0KQEAgLTQ1Nyw5ICs0
NTEsMjIgQEAgdm9pZCBDb25zb2xlOjpncm91cEVuZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBDb25z
b2xlOjp3YXJuKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQorYm9vbCBDb25zb2xlOjpzaG91
bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSBjb25zdAoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmhhc0Zyb250ZW5kKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2
b2lkIENvbnNvbGU6Ondhcm4oUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdl
KExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBjYWxsU3RhY2spOworICAgIGFk
ZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywg
Y2FsbFN0YWNrKTsKIH0KIAogTWVtb3J5SW5mbyogQ29uc29sZTo6bWVtb3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmggYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5o
CmluZGV4IGFiNjI1MjUuLjkyZmVlNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmgKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzksNiArNDAs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNjcmlwdEFyZ3VtZW50czsKKwog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNj
cmlwdFByb2ZpbGU+ID4gUHJvZmlsZXNBcnJheTsKICNlbmRpZgpAQCAtODMsNDQgKzg2LDQ0IEBA
IHB1YmxpYzoKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKICAgICB2b2lkIGRpc2Nvbm5lY3RG
cmFtZSgpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrID0g
MCk7Ci0KLSAgICB2b2lkIGRlYnVnKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgZXJyb3Io
U2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBpbmZvKFNjcmlwdENhbGxTdGFjayopOwotICAg
IHZvaWQgbG9nKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgd2FybihTY3JpcHRDYWxsU3Rh
Y2sqKTsKLSAgICB2b2lkIGRpcihTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIGRpcnhtbChT
Y3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIHRyYWNlKFNjcmlwdENhbGxTdGFjayopOwotICAg
IHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBTY3JpcHRDYWxsU3RhY2sqKTsK
LSAgICB2b2lkIGNvdW50KFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgbWFya1RpbWVsaW5l
KFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2b2lkIGFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayk7CisKKyAgICB2b2lkIGRlYnVn
KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
KTsKKyAgICB2b2lkIGVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGluZm8oUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgbG9nKFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICB2b2lkIHdhcm4oUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4pOworICAgIHZvaWQgZGlyKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwg
UGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGRpcnhtbChQYXNzT3duUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9p
ZCB0cmFjZShQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2Fs
bFN0YWNrPik7CisgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFBhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICB2b2lkIGNvdW50KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3Jp
cHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIG1hcmtUaW1lbGluZShQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAjaWYgRU5BQkxFKFdNTCkK
ICAgICBTdHJpbmcgbGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0cmluZyYs
IFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgcHJvZmlsZUVuZChjb25zdCBTdHJpbmcmLCBT
Y3JpcHRDYWxsU3RhY2sqKTsKKyAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZmlsZXM7IH0KKyAgICB2b2lkIHByb2ZpbGUoY29uc3QgU3RyaW5n
JiwgU2NyaXB0U3RhdGUqLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQg
cHJvZmlsZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRTdGF0ZSosIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CiAjZW5kaWYKICAgICB2b2lkIHRpbWUoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCB0aW1lRW5kKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQg
Z3JvdXAoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBncm91cENvbGxhcHNlZChTY3JpcHRD
YWxsU3RhY2sqKTsKKyAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxT
Y3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQg
Z3JvdXAoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4pOworICAgIHZvaWQgZ3JvdXBDb2xsYXBzZWQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogICAgIHZvaWQgZ3JvdXBFbmQoKTsK
IAorICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgY29uc3Q7CisKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRQcmludEV4Y2VwdGlvbnMoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRT
aG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCk7CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvZmlsZXM7IH0KLSNlbmRpZgotCiAgICAgTWVtb3J5SW5mbyogbWVtb3J5KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIFBhZ2UqIHBhZ2UoKSBjb25zdDsKLSAgICB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiwgYm9v
bCBhY2NlcHROb0FyZ3VtZW50cyA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4sIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMgPSBmYWxzZSk7CiAK
ICAgICBDb25zb2xlKEZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAppbmRleCA1MjUyOGYxLi45ZjAzOTExIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuaWRsCkBAIC0zMCwxMCArMzAsNiBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgIGludGVy
ZmFjZSBbT21pdENvbnN0cnVjdG9yXSBDb25zb2xlIHsKIAotI2lmIGRlZmluZWQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwcm9maWxlczsKLSNlbmRp
ZgotICAgIAogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBkZWJ1ZygpOwog
ICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBlcnJvcigpOwogICAgICAgICBb
Q3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBpbmZvKCk7CkBAIC01MSw4ICs0Nyw5IEBAIG1v
ZHVsZSB3aW5kb3cgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgotICAgICAgICBbQ3VzdG9tQXJn
dW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwotICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5k
bGluZ10gdm9pZCBwcm9maWxlRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgdGl0bGUpOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3Rv
bUdldHRlcl0gQXJyYXkgcHJvZmlsZXM7CisgICAgICAgIFtDdXN0b21dIHZvaWQgcHJvZmlsZShp
biBET01TdHJpbmcgdGl0bGUpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGVFbmQoaW4g
RE9NU3RyaW5nIHRpdGxlKTsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgdGltZShpbiBbQ29udmVy
dFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71565</attachid>
            <date>2010-10-22 08:20:11 -0700</date>
            <delta_ts>2010-11-12 07:21:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>script-arguments-4.patch</filename>
            <type>text/plain</type>
            <size>132184</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCAzMjg4MDU5Li5lZWEzNTM3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xNjYsOCArMTY2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAliaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5j
cHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAotCWJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAotCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5j
cHAgXAorCWJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwKIAliaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAgXAogCWJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCBmZGVlNmZiLi42OTJiNDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Fu
ZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpA
QCAtNDksOCArNDksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L1NjaGVk
dWxlZEFjdGlvbi5jcHAgXAogCWJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgXAog
CWJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZy
YW1lLmNwcCBcCi0JYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBcCisJYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAogCWJpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKIAliaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0MmUzNDRhLi44ZjVk
NjIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTY4Niw4ICs2ODYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcAotICAgIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFjay5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTExMjMsNyArMTEyMiwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JT
dG9yYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5jcHAKKyAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKIAogICAgIGxvYWRlci9DYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMyOWJiNy4uYjRhZmNiOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTcw
OCw2ICs3MDgsMTE2IEBACiAKIDIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBkZWNvdXBsZSBTY3JpcHRBcmd1bWVudHMgZnJvbSBTY3JpcHRD
YWxsU3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4MDU4CisKKyAgICAgICAgU2NyaXB0Q2FsbEZyYW1lIGFuZCBTY3JpcHRDYWxsU3RhY2sgYXJl
IG5vdyB0aGUgc2FtZSBmb3IgYm90aCBKU0MgYW5kIFY4LgorICAgICAgICBUaGUgZmFjdG9yeSBm
dW5jdGlvbnMgdGhhdCBhbGxvdyB0byBjcmVhdGUgU2NyaXB0Q2FsbFN0YWNrIGZyb20gVk0tc3Bl
Y2lmaWMKKyAgICAgICAgb2JqZWN0cyBhcmUgZGVmaW5lZCBpbiBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcC4KKworICAgICAgICBTY3JpcHRBcmd1bWVudHMgY2xhc3MgaXMgdXNlZCBmb3IgcGFz
c2luZyBhcmd1bWVudHMgZnJvbSBKUyBjb2RlIHRvIHRoZSBuYXRpdmUKKyAgICAgICAgcGFydC4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCB3aXRo
IGV4aXN0aW5nIENvbnNvbGUgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbEZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
YWxsU3RhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxs
U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RhdGVQcm90
ZWN0ZWRQdHI6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0Q2FsbEZyYW1lc1Zl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldENh
cHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3Rl
ZFB0cjo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZU1lc3NhZ2U6OmhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhDb25zb2xlTWVzc2FnZTo6ZGlzcGF0Y2hOb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlTWVzc2FnZTo6aXNFcXVhbCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFy
Z3VtZW50czo6flNjcmlwdEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1
bWVudHM6OmFyZ3VtZW50QXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJndW1lbnRzOjpn
bG9iYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6Omlz
RXF1YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50Q291bnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDYWxsRnJhbWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZy
YW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENh
bGxGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6ZnVu
Y3Rpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6c291cmNlVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6bGluZU51bWJlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENhbGxTdGFjazo6YXQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNr
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6aXNFcXVhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRlYnVnKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnNvbGU6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OmRpcik6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpkaXJ4bWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6dHJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YXNzZXJ0
Q29uZGl0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlOjpwcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cENvbGxhcHNl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpzaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6CisgICAgICAgICogcGFnZS9D
b25zb2xlLmg6CisKKzIwMTAtMTAtMjEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZC4gUmV2ZXJ0IHI3MDIzMi4gQ2hyb21pdW0gY29t
cGlsYXRpb24gZmFpbHVyZS4KIAogMjAxMC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDI2YjY5MmQuLjY0NjBlZTkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtODE2
LDEwICs4MTYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
aCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKLQlXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFjay5jcHAgXAotCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
LmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgXAor
CVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgXApAQCAtMTg1Miw4ICsxODUwLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
clJlc291cmNlLmggXAorCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgXAor
CVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIFwKIAlXZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtw
b2ludC5oIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKKwlXZWJD
b3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgg
XAogCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCBcCiAJV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0YTQxN2YzLi4zM2ZmZGU4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
Njk5LDEwICs2OTksNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCcsCi0g
ICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCi0gICAgICAgICAg
ICAnYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFjay5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyR3RrLmNwcCcsCkBAIC04Njks
MTAgKzg2NSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3Jl
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwJywKLSAgICAgICAgICAgICdi
aW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0Q2FsbFN0YWNrLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCcsCkBAIC0xOTU0LDYgKzE5NDgsMTIg
QEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
U2NyaXB0QXJndW1lbnRzLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0
ZW5lci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmgn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IGI2YWM0YWUuLmYwZDdmNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzUxLDggKzM1MSw3IEBAIHY4IHsKICAgICAgICAgYmlu
ZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCBcCiAjICAgICAgICBiaW5kaW5ncy92OC9T
Y3JpcHRBcnJheS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwIFwKLSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAg
ICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy92
OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL1NjcmlwdENv
bnRyb2xsZXJCYXNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAt
NTc0LDggKzU3Myw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IFwKLSAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCi0gICAgICAgIGJp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXApAQCAtMTAxMiw3
ICsxMDEwLDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisgICAgaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5jcHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCisgICAg
aW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgXAorICAgIGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suY3BwIFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBcCiAg
ICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIFwKQEAgLTEzODgsOCArMTM4OSw2IEBAIHY4IHsKICAgICAg
ICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogIyAgICAgICAgYmluZGluZ3Mv
djgvU2NyaXB0QXJyYXkuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5oIFwKLSAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmggXAotICAgICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVu
ZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKQEAgLTE0
NzIsOCArMTQ3MSw2IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCi0gICAgICAgIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5oIFwKLSAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggXAogICAgICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggXAogICAgICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCAwZDljMjI0Li5hNGRmZmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTYwMzk4LDcgKzYwMzk4LDcgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxGcmFt
ZS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNjA0NTAsNjMgKzYwNDUwLDcgQEAKIAkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsRnJhbWUuaCINCi0JCQkJCT4NCi0JCQkJPC9G
aWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRDYWxsU3RhY2suY3BwIg0KLQkJCQkJPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQot
CQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQot
CQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQot
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQot
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+
DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkv
Pg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
LQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNrLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KQEAgLTYzMzk5LDYgKzYzMzQzLDE0IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1
bWVudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEJyZWFr
cG9pbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTYzNDA3LDYgKzYzMzU5LDIyIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxTY3JpcHRDYWxsRnJhbWUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxGcmFtZS5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXFNjcmlwdENhbGxTdGFjay5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0Q2FsbFN0YWNrLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcU2NyaXB0RGVidWdMaXN0ZW5lci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDk4ZjkxNi4uNTQyMGY5
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0NjAs
NiArNTQ2MCwxMCBAQAogCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3Jp
cHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2
NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2
NDRCMDAxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1Mzcg
LyogSW5qZWN0ZWRTY3JpcHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8q
IEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29y
a2VyUmVzb3VyY2UuaCAqLzsgfTsKKwkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjM5MjI0OUExMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwICovOyB9OworCQlGMzkyMjQ5RDEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM5MjI0OUIxMjZGMTFBRTAwQTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aCAqLzsgfTsKKwkJRjM5QkU5NUIxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzlCRTk1
OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLzsgfTsKKwkJRjM5QkU5
NUMxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8q
IFNjcmlwdEFyZ3VtZW50cy5oICovOyB9OwogCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyog
SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovOyB9OwogCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBE
MDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggKi87IH07CiAJCUY0RUFGNEFFMTBDNzQyQjEwMDkx
MDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVT
YW5pdGl6ZXIuY3BwICovOyB9OwpAQCAtMTE0ODgsNiArMTE0OTIsMTAgQEAKIAkJRjM2NDRBRkQx
MTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNw
ZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
MzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM5MjI0OUIxMjZGMTFBRTAwQTky
NkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGMzlCRTk1OTEyNjczQkY0MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAv
KiBTY3JpcHRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ2MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNENDYxNDcxMTYxRDUzMjAwQ0Ew
RDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2Fu
aXRpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9wZW5UeXBl
U2FuaXRpemVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjYwLDggKzEyMjY4LDE0IEBACiAJCQkJRjM3
NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8sCiAJ
CQkJMUM4MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsICov
LAogCQkJCUJDQzY0RjVGMERDRkI4NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICov
LAorCQkJCUYzOUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICov
LAorCQkJCUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywK
IAkJCQkyMDBCMTkwODExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgKi8s
CiAJCQkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLywK
KwkJCQk0MTZFNzVDQTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywK
KwkJCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi8sCisJ
CQkJNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8sCisJ
CQkJNDE2RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovLAogCQkJ
CTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8sCiAJ
CQkJOUZBMzdFRUYxMTcyRkQ0MTAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGUuaWRsICovLAogCQkJ
CTlGQTM3RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwgKi8sCkBA
IC0xNjc3OCwxMCArMTY3OTIsOCBAQAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBT
Y2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKIAkJCQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMg
LyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8sCi0JCQkJNDE2RTc1Q0EwRURGOTBDNzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCi0JCQkJNDE2RTc1QzkwRURGOTBDNzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovLAotCQkJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovLAotCQkJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLywKKwkJCQlGMzkyMjQ5QTEyNkYxMUFFMDBBOTI2RDkg
LyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8sCisJCQkJRjM5MjI0OUIxMjZGMTFBRTAw
QTkyNkQ5IC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLywKIAkJCQk5M0I3MEQ1MzA5RUIw
QzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJOTNCNzBENTQwOUVC
MEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuaCAqLywKIAkJCQlBODNFMUM3MjBFNDkw
NDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKQEAgLTIwNTU4LDYgKzIw
NTcwLDcgQEAKIAkJCQkxQ0VGQzlCOTBENzhEQzhDMDA3RDI1NzkgLyogU2NoZWR1bGVQYWlyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUJFMEMyNzREQUMwMDlGNEVDOSAvKiBT
Y3JlZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCUYzOUJFOTVDMTI2NzNCRjQwMEUwQTY3NCAvKiBT
Y3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3NDgwMDk3
Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
RkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTIxMTMzLDYgKzIxMTQ2LDcgQEAKIAkJCQkwODFDREZCOTEy
NkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4MUNERkJBMTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQ0RGQkYxMjZFQ0ZF
ODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUYzOTIyNDlEMTI2RjExQUUwMEE5MjZEOSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUw
NTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTIwNCw3ICsyMTIxOCw2IEBACiAJCQlpc2Eg
PSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJC
MTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldl
YkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRl
dmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAx
OwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC0yMzE4OCw2ICsyMzIwMSw3
IEBACiAJCQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUMwMUJEMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzlCRTk1QjEyNjczQkY0
MDBFMEE2NzQgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTIwMEIx
OTA5MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RTc1Q0MwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIzNjk2LDYgKzIzNzEwLDcgQEAKIAkJ
CQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdBMUYyQjUyMTI2QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0b3JD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjM5MjI0OUMxMjZGMTFBRTAwQTkyNkQ5IC8q
IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggY2YwOGNhOS4uZTIwMTJjZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTQxLDggKzE0
MSw3IEBACiAjaW5jbHVkZSAiTWVtb3J5SW5mby5jcHAiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIgotI2luY2x1ZGUg
IlNjcmlwdENhbGxGcmFtZS5jcHAiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmNwcCIKKyNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyV2luLmNwcCIKICNpbmNsdWRl
ICJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAKaW5kZXggZjA0MTljNy4uNmRmODhmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25z
b2xlQ3VzdG9tLmNwcApAQCAtMjksOCArMjksMTEgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIK
ICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNTIsNiArNTUsMjggQEAgSlNW
YWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1
cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7CiB9CiAKK0pTVmFsdWUgSlNDb25zb2xlOjpw
cm9maWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIDEpKTsKKyAgICBjb25zdCBTdHJp
bmcmIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIGltcGwoKS0+cHJvZmlsZSh0aXRsZSwgZXhl
YywgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisK
K0pTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlRW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4
ZWMsIDEpKTsKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIGlt
cGwoKS0+cHJvZmlsZUVuZCh0aXRsZSwgZXhlYywgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJmNzRiOTYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0KLSNpbmNs
dWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TY3JpcHRDYWxs
RnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFVTdHJpbmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCi0gICAgOiBtX2Z1bmN0aW9uTmFtZSh1c3RyaW5nVG9T
dHJpbmcoZnVuY3Rpb25OYW1lKSkKLSAgICAsIG1fc291cmNlVVJMKHVzdHJpbmdUb1N0cmluZyh1
cmxTdHJpbmcpKQotICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCi17Ci0gICAgaWYgKCFl
eGVjKQotICAgICAgICByZXR1cm47Ci0gICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5h
cmd1bWVudENvdW50KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBp
IDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoU2NyaXB0
VmFsdWUoZXhlYy0+YXJndW1lbnQoaSkpKTsKLX0KLQotU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0
Q2FsbEZyYW1lKCkKLXsKLX0KLQotY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdENhbGxGcmFtZTo6
YXJndW1lbnRBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9hcmd1bWVu
dHMuc2l6ZSgpID4gaW5kZXgpOwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWFlYzdlLi4wMDAwMDAwCi0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgU2NyaXB0Q2Fs
bEZyYW1lX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xh
c3MgRXhlY1N0YXRlOwotY2xhc3MgVVN0cmluZzsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKLXB1YmxpYzoKLSAgICBTY3JpcHRDYWxsRnJhbWUo
Y29uc3QgSlNDOjpVU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IEpTQzo6VVN0cmluZyYgdXJs
U3RyaW5nLCBpbnQgbGluZU51bWJlciwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBza2lwQXJn
dW1lbnRDb3VudCk7Ci0gICAgflNjcmlwdENhbGxGcmFtZSgpOwotCi0gICAgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZTsgfQotICAgIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAg
ICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0K
LSAgICAvLyBhcmd1bWVudCByZXRyaWV2YWwgbWV0aG9kcwotICAgIGNvbnN0IFNjcmlwdFZhbHVl
JiBhcmd1bWVudEF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHMuc2l6ZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
U3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgIFN0cmluZyBtX3NvdXJjZVVSTDsKLSAgICB1bnNp
Z25lZCBtX2xpbmVOdW1iZXI7Ci0KLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbEZy
YW1lX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGU2MWIwNy4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0KLSNp
bmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KLSNpbmNsdWRlIDxpbnRlcnByZXRlci9J
bnRlcnByZXRlci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKLSAgICA6IG1faW5pdGlh
bGl6ZWQoZmFsc2UpCi0gICAgLCBtX2V4ZWMoZXhlYykKLSAgICAsIG1fY2FsbGVyKDApCi17Ci0g
ICAgaW50IHNpZ25lZExpbmVOdW1iZXI7Ci0gICAgaW50cHRyX3Qgc291cmNlSUQ7Ci0gICAgVVN0
cmluZyB1cmxTdHJpbmc7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbjsKLQotICAgIGV4ZWMtPmludGVy
cHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3Vy
Y2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0KLSAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0g
c2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDA7Ci0KLSAgICBpZiAo
ZnVuY3Rpb24pIHsKLSAgICAgICAgbV9jYWxsZXIgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKLSAg
ICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShtX2NhbGxlci0+bmFtZShtX2V4
ZWMpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIsIG1fZXhlYywgc2tpcEFyZ3VtZW50Q291bnQpKTsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0IHdlIHNob3Vs
ZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCi0gICAgICAgIC8vIHNvbWV0aGluZyBjYWxs
ZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4KLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNj
cmlwdENhbGxGcmFtZShVU3RyaW5nKCksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9leGVjLCBz
a2lwQXJndW1lbnRDb3VudCkpOwotICAgIH0KLX0KLQotU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0
Q2FsbFN0YWNrKCkKLXsKLX0KLQotY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZTY3JpcHRDYWxsU3Rh
Y2s6OmF0KHVuc2lnbmVkIGluZGV4KQotewotICAgIC8vIEZpcnN0IGZyYW1lIGlzIHByZS1wb3B1
bGF0ZWQgaW4gY29uc3RydWN0b3IsIHNvIGRvbid0IHRyaWdnZXIKLSAgICAvLyBpbml0aWFsaXph
dGlvbiB1bmxlc3MgbG9va2luZyBiZXlvbmQgdGhlIGZpcnN0IGZyYW1lLgotICAgIGlmIChpbmRl
eCA+IDApCi0gICAgICAgIGluaXRpYWxpemUoKTsKLSAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgp
ID4gaW5kZXgpOwotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF07Ci19Ci0KLXVuc2lnbmVkIFNj
cmlwdENhbGxTdGFjazo6c2l6ZSgpCi17Ci0gICAgaW5pdGlhbGl6ZSgpOwotICAgIHJldHVybiBt
X2ZyYW1lcy5zaXplKCk7Ci19Ci0KLXZvaWQgU2NyaXB0Q2FsbFN0YWNrOjppbml0aWFsaXplKCkK
LXsKLSAgICBpZiAoIW1fY2FsbGVyIHx8IG1faW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwotICAgIGludHB0cl90IHNvdXJjZUlEOwotICAg
IFVTdHJpbmcgdXJsU3RyaW5nOwotICAgIEpTVmFsdWUgZnVuY3Rpb247Ci0gICAgLy8gY2FsbEZy
YW1lIG11c3QgZXhpc3QgaWYgbV9jYWxsZXIgaXMgbm90IG51bGwuCi0gICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBtX2V4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Ci0gICAgICAgIG1fZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
cmV0cmlldmVMYXN0Q2FsbGVyKGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQs
IHVybFN0cmluZywgZnVuY3Rpb24pOwotICAgICAgICBpZiAoIWZ1bmN0aW9uKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBhc0Z1bmN0aW9uKGZ1
bmN0aW9uKTsKLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIg
Pj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOwotICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoU2Ny
aXB0Q2FsbEZyYW1lKGpzRnVuY3Rpb24tPm5hbWUobV9leGVjKSwgdXJsU3RyaW5nLCBsaW5lTnVt
YmVyLCBtX2V4ZWMsIDApKTsKLSAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpOwotICAgIH0KLSAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotYm9vbCBTY3Jp
cHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UoaW50LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxN2QxYzQ2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChjKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0
Q2FsbFN0YWNrX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKLQotI2luY2x1ZGUgIlNjcmlw
dENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LSAgICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgSlNWYWx1ZTsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0gICAgY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KLSAgICBjbGFzcyBTY3Jp
cHRDYWxsU3RhY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAg
U2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291
bnQgPSAwKTsKLSAgICAgICAgflNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgICAgIFNjcmlwdFN0
YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlYzsgfQotICAgICAgICBTY3JpcHRTdGF0
ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpOyB9Ci0gICAgICAgIC8vIGZyYW1lIHJldHJpZXZhbCBtZXRob2Rz
Ci0gICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSAmYXQodW5zaWduZWQpOwotICAgICAgICB1
bnNpZ25lZCBzaXplKCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHN0YWNrVHJhY2UoaW50LCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IGluaXRpYWxpemUoKTsKLSAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwotCi0gICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBtX2V4ZWM7Ci0gICAgICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1f
ZnJhbWVzOwotICAgICAgICBKU0M6OkpTRnVuY3Rpb24qIG1fY2FsbGVyOwotICAgIH07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja19oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWZhYmRkCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMCwwICsxLDk1
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICog
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmg+CisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBt
YXhTdGFja1NpemUpCit7CisgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gZnJhbWVzOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gZXhlYzsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CisgICAg
ICAgIGludHB0cl90IHNvdXJjZUlEOworICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAg
ICAgSlNWYWx1ZSBmdW5jdGlvbjsKKworICAgICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRy
aWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJs
U3RyaW5nLCBmdW5jdGlvbik7CisgICAgICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lOworICAgICAg
ICBpZiAoZnVuY3Rpb24pCisgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSBhc0Z1bmN0aW9uKGZ1
bmN0aW9uKS0+bmFtZShleGVjKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDYWxs
ZXIgaXMgdW5rbm93biwgYnV0IGlmIGZyYW1lcyBpcyBlbXB0eSB3ZSBzaG91bGQgc3RpbGwgYWRk
IHRoZSBmcmFtZSwgYmVjYXVzZQorICAgICAgICAgICAgLy8gc29tZXRoaW5nIGNhbGxlZCB1cywg
YW5kIGdhdmUgdXMgYXJndW1lbnRzLgorICAgICAgICAgICAgaWYgKCFmcmFtZXMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGxp
bmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDogMDsK
KyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUodXN0cmluZ1RvU3RyaW5nKGZ1
bmN0aW9uTmFtZSksIHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBsaW5lTnVtYmVyKSk7Cisg
ICAgICAgIGlmICghZnVuY3Rpb24gfHwgZnJhbWVzLnNpemUoKSA9PSBtYXhTdGFja1NpemUpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpOworICAgIH0KKyAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhmcmFtZXMpOwor
fQorCitQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKK3sKKyAgICBW
ZWN0b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50
Q291bnQ7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
U2NyaXB0VmFsdWUoZXhlYy0+YXJndW1lbnQoaSkpKTsKKyAgICByZXR1cm4gbmV3IFNjcmlwdEFy
Z3VtZW50cyhleGVjLCBhcmd1bWVudHMpOworfQorCitib29sIFNjcmlwdENhbGxTdGFjazo6c3Rh
Y2tUcmFjZShpbnQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKQoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43NDRkODhkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeV9oCisjZGVmaW5lIFNjcmlwdENhbGxTdGFja0ZhY3RvcnlfaAorCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVj
U3RhdGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0QXJndW1lbnRz
OworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOworCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IG1heFN0YWNrU2l6
ZSk7CitQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5X2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggM2VkZDFiZC4uZDY2OTlmNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTM1LDkgKzM1LDI4IEBACiAjaW5jbHVkZSAiSlNE
T01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2NyaXB0U3RhdGVQcm90ZWN0
ZWRQdHI6On5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpCit7Cit9CisKK1NjcmlwdFN0YXRlUHJv
dGVjdGVkUHRyOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUpCisgICAgOiBtX2dsb2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKQoreworfQorCitTY3JpcHRTdGF0ZSogU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHI6OmdldCgp
IGNvbnN0Cit7CisgICAgaWYgKG1fZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gbV9nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICByZXR1cm4gMDsKK30KKworCiBTY3JpcHRTdGF0
ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqIGZyYW1lKQogewogICAgIEpTRE9NV2luZG93
U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggNmJlZjRmNy4uMGMw
ODYxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMzIsMTAgKzMyLDE0IEBACiAj
aWZuZGVmIFNjcmlwdFN0YXRlX2gKICNkZWZpbmUgU2NyaXB0U3RhdGVfaAogCi0jaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIEZyYW1lOwpAQCAtNTAsMTQgKzU0LDkgQEAgdHlwZWRlZiBK
U0M6OkV4ZWNTdGF0ZSBTY3JpcHRTdGF0ZTsKIAogY2xhc3MgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQ
dHIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIFNjcmlwdFN0YXRlUHJvdGVj
dGVkUHRyKCkgeyB9Ci0gICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIoU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKSA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpIHsgfQotICAgIFNjcmlwdFN0YXRlKiBnZXQoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
Z2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBleHBsaWNpdCBTY3JpcHRTdGF0
ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSopOworICAgIH5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0
cigpOworICAgIFNjcmlwdFN0YXRlKiBnZXQoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgSlNDOjpQ
cm90ZWN0ZWRQdHI8SlNDOjpKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMGI1NmYxMy4u
MjNkYjk1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0xOTY2LDggKzE5NjYsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgbXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMDsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdENhbGxTdGFjayBjYWxsU3RhY2soZXhlYywgJG51
bVBhcmFtZXRlcnMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsICRudW1QYXJhbWV0ZXJzKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNpemVfdCBtYXhTdGFja1NpemUg
PSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBtYXhTdGFja1NpemUpKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0QXJndW1lbnRzLmgifSA9
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3Rh
Y2suaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKQEAgLTIzNTcsOCArMjM2MSw4IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKIAogICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmci
fSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKLSAg
ICAgICAgKyskcGFyYW1JbmRleDsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICImY2FsbFN0
YWNrIjsKKyAgICAgICAgJHBhcmFtSW5kZXggKz0gMjsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5n
IC49ICJzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2sucmVsZWFzZSgpIjsKICAg
ICB9CiAKICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA3NTFlMzUwLi4wYzc5
ZTY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAg
LTEzMDQsMTEgKzEzMDQsMTUgQEAgRU5ECiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgIE93blB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShhcmdzLCAkbnVtUGFyYW1l
dGVycykpOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVh
dGVTY3JpcHRBcmd1bWVudHMoYXJncywgJG51bVBhcmFtZXRlcnMpKTsKKyAgICBzaXplX3QgbWF4
U3RhY2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7CisgICAgT3duUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFja1NpemUp
KTsKICAgICBpZiAoIWNhbGxTdGFjaykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IEVORAorICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRBcmd1bWVudHMuaCJ9ID0gMTsKICAg
ICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrLmgifSA9IDE7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCJ9ID0gMTsKICAgICB9CiAgICAg
aWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU1ZHQ2hlY2tT
ZWN1cml0eURvY3VtZW50In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxF
TkQpOwpAQCAtMjcxOSw4ICsyNzIzLDggQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
KCkKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0g
IiwgIiBpZiAkaW5kZXg7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiY2FsbFN0YWNrLmdl
dCgpIjsKLSAgICAgICAgJGluZGV4Kys7CisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAic2Ny
aXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSI7CisgICAgICAgICRp
bmRleCArPSAyOwogICAgIH0KIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9KSB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA1MjM2MjY3Li43ZTA2
MDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJK
U2xvZy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
VGVzdE9iai5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTk5NCwxMiArOTk2LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKEV4CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
c3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgVGVzdE9i
aiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVj
LCAxKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRl
U2NyaXB0QXJndW1lbnRzKGV4ZWMsIDEpKTsKKyAgICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1w
LT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2Fs
bFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhleGVjLCBtYXhTdGFja1NpemUpKTsKICAgICBs
b2cqIGludEFyZyA9IHRvbG9nKGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKLSAgICBpbXAtPmN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oaW50QXJnLCAmY2FsbFN0YWNr
LCBlYyk7CisgICAgaW1wLT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJn
dW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwCmluZGV4IDQ0ZjBkM2UuLjM0NDFiNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIklE
QkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgpAQCAtNzA1LDExICs3MDcsMTMg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BcmdzQW5kRXhjZXB0aW9uQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IHsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNr
OjpjcmVhdGUoYXJncywgMSkpOworICAgIE93blB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFy
Z3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJncywgMSkpOworICAgIHNpemVfdCBtYXhT
dGFja1NpemUgPSBpbXAtPnNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlIDogMTsKKyAgICBPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKG1heFN0YWNrU2l6ZSkp
OwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
ICAgIEVYQ0VQVElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpIYXNJbnN0YW5jZShhcmdz
WzBdKSA/IFY4bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDApOwotICAgIGltcC0+Y3VzdG9tQXJnc0FuZEV4Y2VwdGlvbihpbnRBcmcsIGNhbGxT
dGFjay5nZXQoKSwgZWMpOworICAgIGltcC0+Y3VzdG9tQXJnc0FuZEV4Y2VwdGlvbihpbnRBcmcs
IHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCksIGVjKTsKICAg
ICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM3MzQzLi4wMDAwMDAwCi0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdENh
bGxGcmFtZS5oIgotCi0jaW5jbHVkZSA8djguaD4KLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NyaXB0Q2FsbEZy
YW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
dW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKLSAgICA6IG1fZnVuY3Rpb25OYW1l
KGZ1bmN0aW9uTmFtZSkKLSAgICAsIG1fc291cmNlVVJMKHVybFN0cmluZykKLSAgICAsIG1fbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQotewotICAgIGZvciAoaW50IGkgPSBza2lwQXJndW1lbnRDb3Vu
dDsgaSA8IGFyZ3VtZW50cy5MZW5ndGgoKTsgKytpKQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBl
bmQoU2NyaXB0VmFsdWUoYXJndW1lbnRzW2ldKSk7Ci19Ci0KLVNjcmlwdENhbGxGcmFtZTo6U2Ny
aXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgaW50IGxpbmVOdW1iZXIpCi0gICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5h
bWUpCi0gICAgLCBtX3NvdXJjZVVSTCh1cmxTdHJpbmcpCi0gICAgLCBtX2xpbmVOdW1iZXIobGlu
ZU51bWJlcikKLXsKLX0KLQotU2NyaXB0Q2FsbEZyYW1lOjp+U2NyaXB0Q2FsbEZyYW1lKCkKLXsK
LX0KLQotY29uc3QgU2NyaXB0VmFsdWUmIFNjcmlwdENhbGxGcmFtZTo6YXJndW1lbnRBdCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5k
ZXgpOwotICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1l
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZjc3ZDRhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgU2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKLQot
I2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IHY4IHsKLSAgICBjbGFzcyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBjbGFzcyBTY3JpcHRWYWx1ZTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmV0cmlldmlu
ZyBsaW5lIG51bWJlciBhbmQgc291cmNlIFVSTCBhbmQgc3RvcmluZyBoZXJlCi0gICAgLy8gZm9y
IGFsbCBjYWxsIGZyYW1lcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KLSAgICAvLyBTZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1Nj4gYW5kCi0gICAgLy8g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4MD4KLSAgICBjbGFz
cyBTY3JpcHRDYWxsRnJhbWUgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxGcmFt
ZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGlu
dCBsaW5lTnVtYmVyLCBjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50
Q291bnQpOwotICAgICAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcik7Ci0gICAgICAgIH5T
Y3JpcHRDYWxsRnJhbWUoKTsKLQotICAgICAgICBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KLSAgICAgICAgdW5zaWdu
ZWQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQotCi0gICAgICAg
IC8vIGFyZ3VtZW50IHJldHJpZXZhbCBtZXRob2RzCi0gICAgICAgIGNvbnN0IFNjcmlwdFZhbHVl
JiBhcmd1bWVudEF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwotICAgICAgICBTdHJpbmcgbV9zb3Vy
Y2VVUkw7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKLQotICAgICAgICBWZWN0b3I8
U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjljN2EuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2Vy
dmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
LQotI2luY2x1ZGUgPHY4LWRlYnVnLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IHZvaWQgZ2V0RnJhbWVMb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSwg
U3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rp
b25OYW1lKQotewotICAgIEFTU0VSVCghZnJhbWUuSXNFbXB0eSgpKTsKLSAgICB2ODo6TG9jYWw8
djg6OlN0cmluZz4gc291cmNlTmFtZVZhbHVlKGZyYW1lLT5HZXRTY3JpcHROYW1lT3JTb3VyY2VV
UkwoKSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZyYW1l
LT5HZXRGdW5jdGlvbk5hbWUoKSk7Ci0gICAgKnNvdXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFsdWUu
SXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoc291cmNlTmFtZVZhbHVlKTsKLSAgICAq
ZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNv
cmVTdHJpbmcoZnVuY3Rpb25OYW1lVmFsdWUpOwotICAgICpzb3VyY2VMaW5lTnVtYmVyID0gZnJh
bWUtPkdldExpbmVOdW1iZXIoKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0VG9wRnJhbWVMb2NhdGlv
bih2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlLCBTdHJpbmcqIHNvdXJjZU5h
bWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAg
aWYgKHN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKSA8PSAwKSB7Ci0gICAgICAgIC8vIFN1Y2Nl
c3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQg
bWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgotICAgICAg
ICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQg
ZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KLSAgICAgICAgKnNvdXJjZU5hbWUgPSAidW5k
ZWZpbmVkIjsKLSAgICAgICAgKnNvdXJjZUxpbmVOdW1iZXIgPSAwOwotICAgICAgICAqZnVuY3Rp
b25OYW1lID0gInVuZGVmaW5lZCI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2
ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSBzdGFja1RyYWNlLT5HZXRGcmFtZSgwKTsKLSAgICAgICAg
Z2V0RnJhbWVMb2NhdGlvbihmcmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgZnVu
Y3Rpb25OYW1lKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFt
ZT4gdG9TY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCi17
Ci0gICAgU3RyaW5nIHNvdXJjZU5hbWU7Ci0gICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAg
U3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBnZXRGcmFtZUxvY2F0aW9uKGZyYW1lLCAmc291cmNl
TmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOwotICAgIHJldHVybiBuZXcg
U2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJl
cik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJh
Y2UsIFZlY3RvcjxPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiA+JiBzY3JpcHRDYWxsRnJhbWVzKQot
ewotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgaW50
IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFj
a0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7Ci0gICAgICAgIHNj
cmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUpKTsKLSAg
ICB9Ci19Ci0KLWNvbnN0IGludCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUgPSAyMDA7Ci1jb25zdCB2ODo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMgU2Ny
aXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1Ry
YWNlOjpTdGFja1RyYWNlT3B0aW9ucz4oCi0gICAgIHY4OjpTdGFja1RyYWNlOjprTGluZU51bWJl
cgotICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtDb2x1bW5PZmZzZXQKLSAgICB8IHY4OjpTdGFja1Ry
YWNlOjprU2NyaXB0TmFtZU9yU291cmNlVVJMCi0gICAgfCB2ODo6U3RhY2tUcmFjZTo6a0Z1bmN0
aW9uTmFtZSk7Ci0KLQotUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IFNjcmlwdENhbGxTdGFj
azo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFy
Z3VtZW50Q291bnQsIGludCBmcmFtQ291bnRMaW1pdCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRl
eHQpOwotICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNr
VHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKGZyYW1Db3VudExpbWl0LCBTY3JpcHRDYWxsU3RhY2s6
OnN0YWNrVHJhY2VPcHRpb25zKSk7Ci0KLSAgICBpZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nIHNvdXJjZU5hbWU7Ci0gICAgaW50IHNvdXJj
ZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBnZXRUb3BGcmFtZUxv
Y2F0aW9uKHN0YWNrVHJhY2UsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0
aW9uTmFtZSk7Ci0KLSAgICBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRD
YWxsRnJhbWVzOwotICAgIGlmIChmcmFtQ291bnRMaW1pdCA+IDEpCi0gICAgICAgIHRvU2NyaXB0
Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJhbWVzKTsK
LQotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0
KGNvbnRleHQpLCBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwg
c291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCksIHNjcmlwdENh
bGxGcmFtZXMpOwotfQotCi1QYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0
YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNl
PiBzdGFja1RyYWNlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBWZWN0b3I8
T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiBzY3JpcHRDYWxsRnJhbWVzOwotICAgIHRvU2NyaXB0
Q2FsbEZyYW1lc1ZlY3RvcihzdGF0ZS0+Y29udGV4dCgpLCBzdGFja1RyYWNlLCBzY3JpcHRDYWxs
RnJhbWVzKTsKLQotICAgIFN0cmluZyBzb3VyY2VOYW1lOwotICAgIGludCBzb3VyY2VMaW5lTnVt
YmVyOwotICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7Ci0gICAgZ2V0VG9wRnJhbWVMb2NhdGlvbihz
dGFja1RyYWNlLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUp
OwotCi0gICAgcmV0dXJuIG5ldyBTY3JpcHRDYWxsU3RhY2soc3RhdGUsIG5ldyBTY3JpcHRDYWxs
RnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyKSwgc2NyaXB0
Q2FsbEZyYW1lcyk7Ci19Ci0KLVNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZyYW1l
LCBWZWN0b3I8T3duUHRyPFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcykKLSAg
ICA6IG1fdG9wRnJhbWUodG9wRnJhbWUpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRl
KQotewotICAgIG1fc2NyaXB0Q2FsbEZyYW1lcy5zd2FwKHNjcmlwdENhbGxGcmFtZXMpOwotfQot
Ci1TY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQotewotfQotCi1jb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIFNjcmlwdENhbGxTdGFjazo6YXQodW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
aWYgKCFpbmRleCAmJiBtX3RvcEZyYW1lKQotICAgICAgICByZXR1cm4gKm1fdG9wRnJhbWU7Ci0g
ICAgcmV0dXJuICptX3NjcmlwdENhbGxGcmFtZXMuYXQoaW5kZXgpOwotfQotCi11bnNpZ25lZCBT
Y3JpcHRDYWxsU3RhY2s6OnNpemUoKQotewotICAgIGlmIChtX3NjcmlwdENhbGxGcmFtZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gbV9zY3JpcHRDYWxsRnJhbWVz
LnNpemUoKTsKLX0KLQotCi1ib29sIFNjcmlwdENhbGxTdGFjazo6c3RhY2tUcmFjZShpbnQgZnJh
bWVMaW1pdCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3RhY2tUcmFjZSkKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAg
IHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6U3RhY2tUcmFjZT4gdHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNl
KGZyYW1lTGltaXQpKTsKLSAgICBpbnQgZnJhbWVDb3VudCA9IHRyYWNlLT5HZXRGcmFtZUNvdW50
KCk7Ci0gICAgaWYgKHRyYWNlLklzRW1wdHkoKSB8fCAhZnJhbWVDb3VudCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7Ci0g
ICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lID0gdHJhY2UtPkdldEZyYW1l
KGkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZU9iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzY3Jp
cHROYW1lID0gZnJhbWUtPkdldFNjcmlwdE5hbWUoKTsKLSAgICAgICAgZnJhbWVPYmplY3QtPnNl
dFN0cmluZygic2NyaXB0TmFtZSIsIHNjcmlwdE5hbWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNv
cmVTdHJpbmcoc2NyaXB0TmFtZSkpOwotICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZnVu
Y3Rpb25OYW1lID0gZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpOwotICAgICAgICBmcmFtZU9iamVj
dC0+c2V0U3RyaW5nKCJmdW5jdGlvbk5hbWUiLCBmdW5jdGlvbk5hbWUuSXNFbXB0eSgpID8gIiIg
OiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1lKSk7Ci0gICAgICAgIGZyYW1lT2JqZWN0LT5z
ZXROdW1iZXIoImxpbmVOdW1iZXIiLCBmcmFtZS0+R2V0TGluZU51bWJlcigpKTsKLSAgICAgICAg
ZnJhbWVPYmplY3QtPnNldE51bWJlcigiY29sdW1uIiwgZnJhbWUtPkdldENvbHVtbigpKTsKLSAg
ICAgICAgc3RhY2tUcmFjZS0+cHVzaE9iamVjdChmcmFtZU9iamVjdCk7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2suaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZTUxOTUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3Rh
Y2tfaAotCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIHY4IHsKLSAgICBjbGFz
cyBBcmd1bWVudHM7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9y
QXJyYXk7Ci0KLWNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlOwot
ICAgIHN0YXRpYyBjb25zdCB2ODo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZU9wdGlvbnMgc3RhY2tU
cmFjZU9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNy
ZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQgPSAw
LCBpbnQgZnJhbUNvdW50TGltaXQgPSAxKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+
KTsKLSAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRo
ZXJlIGlzIG5vIHJ1bm5pbmcgSmF2YVNjcmlwdCBvciBpZiBmZXRjaGluZyB0aGUgc3RhY2sgZmFp
bGVkLgotICAgIC8vIFNldHMgc3RhY2tUcmFjZSB0byBiZSBhbiBhcnJheSBvZiBzdGFjayBmcmFt
ZSBvYmplY3RzLgotICAgIC8vIEEgc3RhY2sgZnJhbWUgb2JqZWN0IGxvb2tzIGxpa2U6Ci0gICAg
Ly8gewotICAgIC8vICAgc2NyaXB0TmFtZTogPGZpbGUgbmFtZSBmb3IgdGhlIGFzc29jaWF0ZWQg
c2NyaXB0IHJlc291cmNlPgotICAgIC8vICAgZnVuY3Rpb25OYW1lOiA8bmFtZSBvZiB0aGUgSmF2
YVNjcmlwdCBmdW5jdGlvbj4KLSAgICAvLyAgIGxpbmVOdW1iZXI6IDwxIGJhc2VkIGxpbmUgbnVt
YmVyPgotICAgIC8vICAgY29sdW1uOiA8MSBiYXNlZCBjb2x1bW4gb2Zmc2V0IG9uIHRoZSBsaW5l
PgotICAgIC8vIH0KLSAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0LCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKTsKLQotICAgIGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpOwotICAgIHVuc2lnbmVkIHNpemUoKTsKLQotICAg
IFNjcmlwdFN0YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KLSAg
ICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRl
OyB9Ci0KLXByaXZhdGU6Ci0gICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvcEZyYW1lLCBWZWN0b3I8T3duUHRy
PFNjcmlwdENhbGxGcmFtZT4gPiYgc2NyaXB0Q2FsbEZyYW1lcyk7Ci0gICAgU2NyaXB0Q2FsbFN0
YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4g
c3RhY2tUcmFjZSk7Ci0KLSAgICBPd25QdHI8U2NyaXB0Q2FsbEZyYW1lPiBtX3RvcEZyYW1lOwot
ICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0
Q2FsbEZyYW1lPiA+IG1fc2NyaXB0Q2FsbEZyYW1lczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFNjcmlwdENhbGxTdGFja19oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MmZiZWVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisKKyNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
KyNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCisKKyNpbmNsdWRlIDx2OC1kZWJ1Zy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBTY3JpcHRDYWxsRnJhbWUgdG9TY3JpcHRDYWxsRnJhbWUodjg6
OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCit7CisgICAgU3RyaW5nIHNvdXJjZU5hbWU7
CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJjZU5hbWVWYWx1ZShmcmFtZS0+R2V0U2Ny
aXB0TmFtZU9yU291cmNlVVJMKCkpOworICAgIGlmICghc291cmNlTmFtZVZhbHVlLklzRW1wdHko
KSkKKyAgICAgICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhzb3VyY2VOYW1lVmFsdWUp
OworCisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4g
ZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpKTsKKyAgICBpZiAoIWZ1
bmN0aW9uTmFtZVZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gdG9XZWJD
b3JlU3RyaW5nKGZ1bmN0aW9uTmFtZVZhbHVlKTsKKworICAgIGludCBzb3VyY2VMaW5lTnVtYmVy
ID0gZnJhbWUtPkdldExpbmVOdW1iZXIoKTsKKyAgICByZXR1cm4gU2NyaXB0Q2FsbEZyYW1lKGZ1
bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlcik7Cit9CisKK3N0YXRpYyB2
b2lkIHRvU2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcih2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UsIFZlY3RvcjxTY3JpcHRD
YWxsRnJhbWU+JiBzY3JpcHRDYWxsRnJhbWVzLCBzaXplX3QgbWF4U3RhY2tTaXplKQoreworICAg
IC8vIFRPRE8oeXVyeXMpOiByZW1vdmUgdGhpcz8/PworICAgIHY4OjpDb250ZXh0OjpTY29wZSBj
b250ZXh0U2NvcGUoY29udGV4dCk7CisgICAgaW50IGZyYW1lQ291bnQgPSBzdGFja1RyYWNlLT5H
ZXRGcmFtZUNvdW50KCk7CisgICAgaWYgKGZyYW1lQ291bnQgPiBzdGF0aWNfY2FzdDxpbnQ+KG1h
eFN0YWNrU2l6ZSkpCisgICAgICAgIGZyYW1lQ291bnQgPSBtYXhTdGFja1NpemU7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpTdGFja0ZyYW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7CisgICAg
ICAgIHNjcmlwdENhbGxGcmFtZXMuYXBwZW5kKHRvU2NyaXB0Q2FsbEZyYW1lKHN0YWNrRnJhbWUp
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFmcmFtZUNvdW50KSB7CisgICAgICAgIC8vIFN1Y2Nl
c3NmdWxseSBncmFiYmVkIHN0YWNrIHRyYWNlLCBidXQgdGhlcmUgYXJlIG5vIGZyYW1lcy4gSXQg
bWF5IGhhcHBlbiBpbiBjYXNlIG9mIGEgc3ludGF4IGVycm9yIGZvciBleGFtcGxlLgorICAgICAg
ICAvLyBGYWxsYmFjayB0byBzZXR0aW5nIGxpbmVOdW1iZXIgdG8gMCwgYW5kIHNvdXJjZSBhbmQg
ZnVuY3Rpb24gbmFtZSB0byAidW5kZWZpbmVkIi4KKyAgICAgICAgc2NyaXB0Q2FsbEZyYW1lcy5h
cHBlbmQoU2NyaXB0Q2FsbEZyYW1lKCJ1bmRlZmluZWQiLCAidW5kZWZpbmVkIiwgMCkpOworICAg
IH0KK30KKworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFj
ayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlN0YWNrVHJh
Y2U+IHN0YWNrVHJhY2UsIHNpemVfdCBtYXhTdGFja1NpemUpCit7CisgICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7
CisKKyAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBzY3JpcHRDYWxsRnJhbWVzOworICAgIHRv
U2NyaXB0Q2FsbEZyYW1lc1ZlY3Rvcihjb250ZXh0LCBzdGFja1RyYWNlLCBzY3JpcHRDYWxsRnJh
bWVzLCBtYXhTdGFja1NpemUpOworICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKHNjcmlw
dENhbGxGcmFtZXMpOworfQorCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUpCit7CisgICAgdjg6OkhhbmRsZVNjb3Bl
IHNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0
OjpHZXRDdXJyZW50KCk7CisgICAgLy8gVE9ETyh5dXJ5cyk6IHJlbW92ZT8KKyAgICB2ODo6Q29u
dGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OlN0
YWNrVHJhY2U+IHN0YWNrVHJhY2Uodjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKG1h
eFN0YWNrU2l6ZSwgc3RhY2tUcmFjZU9wdGlvbnMpKTsKKyAgICByZXR1cm4gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKGNvbnRleHQsIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSk7Cit9CisKK1Bhc3NP
d25QdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgdjhhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50KQoreworICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9
IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOworCisgICAgVmVjdG9yPFNjcmlwdFZh
bHVlPiBhcmd1bWVudHM7CisgICAgZm9yIChpbnQgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwg
djhhcmd1bWVudHMuTGVuZ3RoKCk7ICsraSkKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3Jp
cHRWYWx1ZSh2OGFyZ3VtZW50c1tpXSkpOworCisgICAgcmV0dXJuIG5ldyBTY3JpcHRBcmd1bWVu
dHMoc3RhdGUsIGFyZ3VtZW50cyk7Cit9CisKK2Jvb2wgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1Ry
YWNlKGludCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1Ry
YWNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5D
b250ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4
dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiB0cmFjZSh2ODo6U3RhY2tUcmFjZTo6Q3VycmVu
dFN0YWNrVHJhY2UoZnJhbWVMaW1pdCkpOworICAgIGludCBmcmFtZUNvdW50ID0gdHJhY2UtPkdl
dEZyYW1lQ291bnQoKTsKKyAgICBpZiAodHJhY2UuSXNFbXB0eSgpIHx8ICFmcmFtZUNvdW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50
OyArK2kpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUgPSB0cmFj
ZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGZyYW1lT2Jq
ZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpT
dHJpbmc+IHNjcmlwdE5hbWUgPSBmcmFtZS0+R2V0U2NyaXB0TmFtZSgpOworICAgICAgICBmcmFt
ZU9iamVjdC0+c2V0U3RyaW5nKCJzY3JpcHROYW1lIiwgc2NyaXB0TmFtZS5Jc0VtcHR5KCkgPyAi
IiA6IHRvV2ViQ29yZVN0cmluZyhzY3JpcHROYW1lKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBmdW5jdGlvbk5hbWUgPSBmcmFtZS0+R2V0RnVuY3Rpb25OYW1lKCk7CisgICAgICAg
IGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIGZ1bmN0aW9uTmFtZS5Jc0Vt
cHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWUpKTsKKyAgICAgICAgZnJh
bWVPYmplY3QtPnNldE51bWJlcigibGluZU51bWJlciIsIGZyYW1lLT5HZXRMaW5lTnVtYmVyKCkp
OworICAgICAgICBmcmFtZU9iamVjdC0+c2V0TnVtYmVyKCJjb2x1bW4iLCBmcmFtZS0+R2V0Q29s
dW1uKCkpOworICAgICAgICBzdGFja1RyYWNlLT5wdXNoT2JqZWN0KGZyYW1lT2JqZWN0KTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYx
M2FmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5X2gKKyNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCisKKyNpbmNsdWRlIDx2
OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2NyaXB0U3RhdGU7CisKK2NvbnN0IHY4OjpTdGFja1RyYWNlOjpTdGFja1RyYWNl
T3B0aW9ucyBzdGFja1RyYWNlT3B0aW9ucyA9IHN0YXRpY19jYXN0PHY4OjpTdGFja1RyYWNlOjpT
dGFja1RyYWNlT3B0aW9ucz4oCisgICAgICB2ODo6U3RhY2tUcmFjZTo6a0xpbmVOdW1iZXIKKyAg
ICB8IHY4OjpTdGFja1RyYWNlOjprQ29sdW1uT2Zmc2V0CisgICAgfCB2ODo6U3RhY2tUcmFjZTo6
a1NjcmlwdE5hbWVPclNvdXJjZVVSTAorICAgIHwgdjg6OlN0YWNrVHJhY2U6OmtGdW5jdGlvbk5h
bWUpOworCitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CisK
K1Bhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2sodjg6Okxv
Y2FsPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4sIHNpemVfdCBtYXhT
dGFja1NpemUpOworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhzaXplX3QgbWF4U3RhY2tTaXplKTsKK1Bhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBj
cmVhdGVTY3JpcHRBcmd1bWVudHMoY29uc3Qgdjg6OkFyZ3VtZW50cyYgdjhhcmd1bWVudHMsIHVu
c2lnbmVkIHNraXBBcmd1bWVudENvdW50KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCA0OTA0YTRlLi5mYTM3YzM4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkV2ZW50LmgiCkBAIC00NjgsNyArNDY5LDcgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9u
cyhib29sIHZhbHVlKQogewotICAgIHY4OjpWODo6U2V0Q2FwdHVyZVN0YWNrVHJhY2VGb3JVbmNh
dWdodEV4Y2VwdGlvbnModmFsdWUsIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZSwgU2NyaXB0Q2FsbFN0YWNrOjpzdGFja1RyYWNlT3B0aW9ucyk7CisgICAgdjg6OlY4
OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0
Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBzdGFja1RyYWNlT3B0aW9ucyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0
ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCmluZGV4IGNlMzUwZGEuLjEx
ODEzYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9jb250ZXh0LkNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgU2NyaXB0U3RhdGUqIGdldCgpIHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KKyAgICBTY3Jp
cHRTdGF0ZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQogcHJpdmF0ZToK
ICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENv
bnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25zb2xlTWVzc2FnZS5j
cHAKaW5kZXggOGI2YmIxNy4uNDBmOWE3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29s
ZU1lc3NhZ2UuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiT3duUHRyLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAKQEAgLTExNywxOCArMTE4LDE3IEBAIHZvaWQgVjhDb25zb2xlTWVzc2Fn
ZTo6aGFuZGxlcih2ODo6SGFuZGxlPHY4OjpNZXNzYWdlPiBtZXNzYWdlLCB2ODo6SGFuZGxlPHY4
OjpWCiAgICAgLy8gQ3VycmVudGx5IHN0YWNrIHRyYWNlIGlzIG9ubHkgY29sbGVjdGVkIHdoZW4g
aW5zcGVjdG9yIGlzIG9wZW4uCiAgICAgaWYgKCFzdGFja1RyYWNlLklzRW1wdHkoKSAmJiBzdGFj
a1RyYWNlLT5HZXRGcmFtZUNvdW50KCkgPiAwKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7Ci0gICAgICAgIFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KGNvbnRleHQpOwot
ICAgICAgICBjYWxsU3RhY2sgPSBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShzY3JpcHRTdGF0ZSwg
c3RhY2tUcmFjZSk7CisgICAgICAgIGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhj
b250ZXh0LCBzdGFja1RyYWNlLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXNvdXJjZU5hbWUg
PSBtZXNzYWdlLT5HZXRTY3JpcHRSZXNvdXJjZU5hbWUoKTsKICAgICBib29sIHVzZVVSTCA9IHJl
c291cmNlTmFtZS5Jc0VtcHR5KCkgfHwgIXJlc291cmNlTmFtZS0+SXNTdHJpbmcoKTsKICAgICBT
dHJpbmcgcmVzb3VyY2VOYW1lU3RyaW5nID0gdXNlVVJMID8gZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpIDogdG9XZWJDb3JlU3RyaW5nKHJlc291cmNlTmFtZSk7CiAgICAgVjhDb25zb2xlTWVzc2Fn
ZSBjb25zb2xlTWVzc2FnZShlcnJvck1lc3NhZ2UsIHJlc291cmNlTmFtZVN0cmluZywgbWVzc2Fn
ZS0+R2V0TGluZU51bWJlcigpKTsKLSAgICBjb25zb2xlTWVzc2FnZS5kaXNwYXRjaE5vdyhwYWdl
LCBjYWxsU3RhY2suZ2V0KCkpOworICAgIGNvbnNvbGVNZXNzYWdlLmRpc3BhdGNoTm93KHBhZ2Us
IGNhbGxTdGFjay5yZWxlYXNlKCkpOwogfQogCi12b2lkIFY4Q29uc29sZU1lc3NhZ2U6OmRpc3Bh
dGNoTm93KFBhZ2UqIHBhZ2UsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBWOENv
bnNvbGVNZXNzYWdlOjpkaXNwYXRjaE5vdyhQYWdlKiBwYWdlLCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIEFTU0VSVChwYWdlKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAppbmRleCAzODdiNWVlLi42Yjg5MmRkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29uc29sZU1lc3NhZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MSw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Ry
aW5nIG1fc291cmNlSUQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1fbGluZU51bWJlcjsKIAot
ICAgICAgICB2b2lkIGRpc3BhdGNoTm93KFBhZ2UqLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICAg
ICAgdm9pZCBkaXNwYXRjaE5vdyhQYWdlKiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsK
IAogICAgICAgICAvLyBBbGwgZGVsYXllZCBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHRoaXMgdmVj
dG9yLiBJZiB0aGUgdmVjdG9yCiAgICAgICAgIC8vIGlzIDAsIHRoZXJlIGFyZSBubyBkZWxheWVk
IG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25z
b2xlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3Rv
bS5jcHAKaW5kZXggZmM4M2I2MS4uYjE3YjhlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC0zMyw5ICszMywxMiBAQAogI2luY2x1ZGUg
IlY4Q29uc29sZS5oIgogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIlNjcmlwdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAi
VjhQcm94eS5oIgogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgogCkBAIC02MiwxMSArNjUs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS50cmFj
ZUNhbGxiYWNrIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICB2ODo6TG9j
YWw8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0
YWNrVHJhY2UoU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBTY3Jp
cHRDYWxsU3RhY2s6OnN0YWNrVHJhY2VPcHRpb25zKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHN0YWNr
VHJhY2UpKTsKLSAgICBpbXAtPnRyYWNlKGNhbGxTdGFjay5nZXQoKSk7CisgICAgT3duUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJn
dW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDApKTsK
KyAgICBpbXAtPnRyYWNlKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxl
YXNlKCkpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIApAQCAtNzQs
OSArNzUsMzQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db25z
b2xlLmFzc2VydENhbGxiYWNrIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3Rh
Y2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoYXJncywgMSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhD
YWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmUpKTsKICAgICBib29sIGNvbmRpdGlvbiA9IGFyZ3NbMF0tPkJvb2xlYW5W
YWx1ZSgpOwotICAgIGltcC0+YXNzZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbiwgY2FsbFN0YWNrLmdl
dCgpKTsKKyAgICBPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRl
U2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKKyAgICBpbXAtPmFzc2VydENvbmRpdGlvbihjb25k
aXRpb24sIHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNlKCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOwor
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKwordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5wcm9maWxlIik7CisgICAgQ29uc29s
ZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKDEpKTsKKyAg
ICBpZiAoIWNhbGxTdGFjaykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPFdpdGhVbmRl
ZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKKyAgICBpbXAtPnByb2ZpbGUodGl0
bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOworICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q29uc29sZTo6cHJvZmlsZUVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5wcm9maWxlRW5kIik7CisgICAgQ29uc29s
ZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBPd25QdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKDEpKTsKKyAg
ICBpZiAoIWNhbGxTdGFjaykKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPFdpdGhVbmRl
ZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKKyAgICBpbXAtPnByb2ZpbGVFbmQo
dGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjay5yZWxlYXNlKCkpOwogICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vTm9kZUZpbHRlci5oIGIvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oCmluZGV4IGQyMDIy
YmMuLjVjZTI4NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaAorKysgYi9X
ZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgTm9kZUZp
bHRlcl9oCiAjZGVmaW5lIE5vZGVGaWx0ZXJfaAogCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxk
LmgiCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDY3OTMwY2QuLjAz
MjgzYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTMzLDQ2ICszMywx
NSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnNv
bGVNZXNzYWdlOjpDYWxsRnJhbWU6OkNhbGxGcmFtZShjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGZy
YW1lKQotICAgIDogbV9mdW5jdGlvbk5hbWUoZnJhbWUuZnVuY3Rpb25OYW1lKCkpCi0gICAgLCBt
X3NvdXJjZVVSTChmcmFtZS5zb3VyY2VVUkwoKSkKLSAgICAsIG1fbGluZU51bWJlcihmcmFtZS5s
aW5lTnVtYmVyKCkpCi17Ci19Ci0KLUNvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OkNhbGxGcmFt
ZSgpCi0gICAgOiBtX2xpbmVOdW1iZXIoMCkKLXsKLX0KLQotYm9vbCBDb25zb2xlTWVzc2FnZTo6
Q2FsbEZyYW1lOjppc0VxdWFsKGNvbnN0IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWUmIG8pIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZnVuY3Rpb25OYW1lID09IG8ubV9mdW5jdGlvbk5hbWUKLSAg
ICAgICAgJiYgbV9zb3VyY2VVUkwgPT0gby5tX3NvdXJjZVVSTAotICAgICAgICAmJiBtX2xpbmVO
dW1iZXIgPT0gby5tX2xpbmVOdW1iZXI7Ci19Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmJ1aWxk
SW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBm
cmFtZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZnJhbWUtPnNldFN0cmluZygi
ZnVuY3Rpb25OYW1lIiwgbV9mdW5jdGlvbk5hbWUpOwotICAgIGZyYW1lLT5zZXRTdHJpbmcoInNv
dXJjZVVSTCIsIG1fc291cmNlVVJMKTsKLSAgICBmcmFtZS0+c2V0TnVtYmVyKCJsaW5lTnVtYmVy
IiwgbV9saW5lTnVtYmVyKTsKLSAgICByZXR1cm4gZnJhbWU7Ci19Ci0jZW5kaWYKLQogQ29uc29s
ZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwg
TWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmlu
ZyYgdSwgdW5zaWduZWQgZykKICAgICA6IG1fc291cmNlKHMpCiAgICAgLCBtX3R5cGUodCkKQEAg
LTg1LDM1ICs1NCwyNiBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgYwogewogfQogCi1Db25zb2xl
TWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBN
ZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3RyaW5nJiBtLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aywgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNlKQorQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNv
bnN0IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgZykKICAgICA6IG1f
c291cmNlKHMpCiAgICAgLCBtX3R5cGUodCkKICAgICAsIG1fbGV2ZWwobCkKICAgICAsIG1fbWVz
c2FnZShtKQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgLCBtX2FyZ3VtZW50cyhjYWxsU3Rh
Y2stPmF0KDApLmFyZ3VtZW50Q291bnQoKSkKLSAgICAsIG1fc2NyaXB0U3RhdGUoY2FsbFN0YWNr
LT5nbG9iYWxTdGF0ZSgpKQotI2VuZGlmCi0gICAgLCBtX2ZyYW1lcyhzdG9yZVRyYWNlID8gY2Fs
bFN0YWNrLT5zaXplKCkgOiAwKQorICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQorICAgICwg
bV9jYWxsU3RhY2soY2FsbFN0YWNrKQogICAgICwgbV9ncm91cExldmVsKGcpCiAgICAgLCBtX3Jl
cGVhdENvdW50KDEpCiB7Ci0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0g
Y2FsbFN0YWNrLT5hdCgwKTsKKyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIg
PSBtX2NhbGxTdGFjay0+YXQoMCk7CiAgICAgbV9saW5lID0gbGFzdENhbGxlci5saW5lTnVtYmVy
KCk7CiAgICAgbV91cmwgPSBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpOwogCi0gICAgaWYgKHN0b3Jl
VHJhY2UpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxTdGFjay0+c2l6
ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lc1tpXSA9IENvbnNvbGVNZXNzYWdlOjpDYWxs
RnJhbWUoY2FsbFN0YWNrLT5hdChpKSk7Ci0gICAgfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVudENvdW50KCk7
ICsraSkKLSAgICAgICAgbV9hcmd1bWVudHNbaV0gPSBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSk7
Ci0jZW5kaWYKKyAgICBib29sIHN0b3JlVHJhY2UgPSAodCA9PSBUcmFjZU1lc3NhZ2VUeXBlIHx8
IHQgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSB8fCB0ID09IEFzc2VydE1lc3NhZ2VU
eXBlKTsKKyAgICBpZiAoIXN0b3JlVHJhY2UpCisgICAgICAgIG1fY2FsbFN0YWNrLmNsZWFyKCk7
CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9G
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG9zdCog
aW5qZWN0ZWRTY3JpcHRIb3N0KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25P
YmogPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTI1LDEyICs4NSwxMiBAQCB2b2lk
IENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25PYmotPnNldE51bWJlcigiZ3JvdXBMZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNvbk9iai0+c2V0TnVtYmVy
KCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkpOwogICAgIGpz
b25PYmotPnNldFN0cmluZygibWVzc2FnZSIsIG1fbWVzc2FnZSk7Ci0gICAgaWYgKCFtX2FyZ3Vt
ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1fc2NyaXB0U3RhdGUuZ2V0
KCkpOworICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgp
KSB7CisgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3Jp
cHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAg
ICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25BcmdzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgp
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0
b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBGb3JDb25zb2xlKG1fYXJndW1lbnRzW2ldKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1l
bnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVu
dHMtPmFyZ3VtZW50QXQoaSkpOwogICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE0MCwxMiArMTAwLDggQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2Ny
aXB0SG8KICAgICAgICAgICAgIGpzb25PYmotPnNldEFycmF5KCJwYXJhbWV0ZXJzIiwganNvbkFy
Z3MpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZnJhbWVzID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgp
OyBpKyspCi0gICAgICAgICAgICBmcmFtZXMtPnB1c2hPYmplY3QobV9mcmFtZXMuYXQoaSkuYnVp
bGRJbnNwZWN0b3JPYmplY3QoKSk7Ci0gICAgICAgIGpzb25PYmotPnNldEFycmF5KCJzdGFja1Ry
YWNlIiwgZnJhbWVzKTsKLSAgICB9CisgICAgaWYgKG1fY2FsbFN0YWNrKQorICAgICAgICBqc29u
T2JqLT5zZXRBcnJheSgic3RhY2tUcmFjZSIsIG1fY2FsbFN0YWNrLT5idWlsZEluc3BlY3Rvck9i
amVjdCgpKTsKICAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaik7CiB9CiAK
QEAgLTE1MywzMiArMTA5LDIwIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENv
dW50SW5Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBmcm9udGVu
ZC0+dXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudChtX3JlcGVhdENvdW50KTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiBib29sIENvbnNvbGVNZXNzYWdlOjppc0VxdWFs
KENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBpZiAobXNnLT5tX2FyZ3VtZW50cy5zaXplKCkgIT0gbV9hcmd1bWVudHMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtc2ctPm1fc2NyaXB0U3RhdGUuZ2V0KCkgJiYg
bXNnLT5tX2FyZ3VtZW50cy5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV9hcmd1bWVudHNb
aV0uaXNFcXVhbChtc2ctPm1fc2NyaXB0U3RhdGUuZ2V0KCksIG1zZy0+bV9hcmd1bWVudHNbaV0p
KQorICAgIGlmIChtX2FyZ3VtZW50cykgeworICAgICAgICBpZiAoIW1fYXJndW1lbnRzLT5pc0Vx
dWFsKG1zZy0+bV9hcmd1bWVudHMuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQotCi0gICAgc2l6ZV90IGZyYW1lQ291
bnQgPSBtc2ctPm1fZnJhbWVzLnNpemUoKTsKLSAgICBpZiAoZnJhbWVDb3VudCAhPSBtX2ZyYW1l
cy5zaXplKCkpCisgICAgfSBlbHNlIGlmIChtc2ctPm1fYXJndW1lbnRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7ICsraSkg
ewotICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwobXNnLT5tX2ZyYW1lc1tpXSkpCisg
ICAgaWYgKG1fY2FsbFN0YWNrKSB7CisgICAgICAgIGlmICghbV9jYWxsU3RhY2stPmlzRXF1YWwo
bXNnLT5tX2NhbGxTdGFjay5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIH0gZWxzZSBpZiAobXNnLT5tX2NhbGxTdGFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgcmV0dXJuIG1zZy0+bV9zb3VyY2UgPT0gbV9zb3VyY2UKICAgICAgICAgJiYgbXNn
LT5tX3R5cGUgPT0gbV90eXBlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCA2YzNm
MmM3Li40ZTg4YmVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0
dGxpbGVrLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDE1
ICszMiwxNiBAQAogI2RlZmluZSBDb25zb2xlTWVzc2FnZV9oCiAKICNpbmNsdWRlICJDb25zb2xl
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBj
bGFzcyBTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3Jp
cHRWYWx1ZTsKQEAgLTQ4LDEyICs0OSwxMCBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIENv
bnNvbGVNZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpOwotICAg
IENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbSwgU2NyaXB0Q2FsbFN0YWNrKiwgdW5zaWduZWQgZywgYm9vbCBzdG9y
ZVRyYWNlID0gZmFsc2UpOworICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgUGFzc093blB0cjxTY3JpcHRB
cmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGcpOwogCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmQqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50
SW5Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7Ci0jZW5kaWYKICAgICB2b2lk
IGluY3JlbWVudENvdW50KCkgeyArK21fcmVwZWF0Q291bnQ7IH0KICAgICBib29sIGlzRXF1YWwo
Q29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3Q7CiAKQEAgLTYxLDMwICs2MCwxMiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9
CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbEZyYW1lIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGV4cGxpY2l0IENhbGxGcmFtZShjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGZyYW1lKTsKLSAgICAg
ICAgQ2FsbEZyYW1lKCk7Ci0gICAgICAgIGJvb2wgaXNFcXVhbChjb25zdCBDYWxsRnJhbWUmIG8p
IGNvbnN0OwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBw
cml2YXRlOgotICAgICAgICBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7Ci0gICAgICAgIFN0cmluZyBt
X3NvdXJjZVVSTDsKLSAgICAgICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOwotICAgIH07Ci0KICAg
ICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgIE1lc3NhZ2VUeXBlIG1fdHlwZTsKICAgICBN
ZXNzYWdlTGV2ZWwgbV9sZXZlbDsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKLSAgICBTY3Jp
cHRTdGF0ZVByb3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRlOwotI2VuZGlmCi0gICAgVmVjdG9yPENh
bGxGcmFtZT4gbV9mcmFtZXM7CisgICAgT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gbV9hcmd1bWVu
dHM7CisgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9jYWxsU3RhY2s7CiAgICAgdW5zaWdu
ZWQgbV9saW5lOwogICAgIFN0cmluZyBtX3VybDsKICAgICB1bnNpZ25lZCBtX2dyb3VwTGV2ZWw7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDAwYTExNjYu
LmEwOTM0Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUg
IlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgpAQCAt
MzM5LDEzICszNDAsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRDb25zb2xlTWVz
c2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0t
PmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0
KCkpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgaWYgKCFlbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3RvcmVTdGFja1RyYWNlID0gdHlwZSA9PSBU
cmFjZU1lc3NhZ2VUeXBlIHx8IHR5cGUgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSB8
fCB0eXBlID09IEFzc2VydE1lc3NhZ2VUeXBlOwotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBD
b25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBjYWxsU3RhY2ssIG1f
Z3JvdXBMZXZlbCwgc3RvcmVTdGFja1RyYWNlKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3
IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywg
Y2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKQEAgLTM5MSwxMSArMzkxLDExIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQogICAgICAg
ICBtX2Zyb250ZW5kLT5jb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2Fs
bFN0YWNrKiBjYWxsU3RhY2ssIGJvb2wgY29sbGFwc2VkKQordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpzdGFydEdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIGJvb2wgY29sbGFwc2VkKQogewog
ICAgICsrbV9ncm91cExldmVsOwogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVN
ZXNzYWdlKHNvdXJjZSwgY29sbGFwc2VkID8gU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBl
IDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBjYWxs
U3RhY2ssIG1fZ3JvdXBMZXZlbCkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xl
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBDb2xsYXBzZWRN
ZXNzYWdlVHlwZSA6IFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiIiwg
YXJndW1lbnRzLCBjYWxsU3RhY2ssIG1fZ3JvdXBMZXZlbCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA2ZDRkOWUwLi42OGFhMTQ3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKK2NsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsK
IGNsYXNzIFNjcmlwdFByb2ZpbGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC0xNDUsOCArMTQ2
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAKICAgICB2b2lk
IHNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBib29sKiBuZXdTdGF0ZSk7
Ci0gICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFjayosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
Ci0gICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNsZWFyQ29u
c29sZU1lc3NhZ2VzKCk7CiAgICAgY29uc3QgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4g
PiYgY29uc29sZU1lc3NhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlTWVzc2FnZXM7IH0K
IApAQCAtMjMyLDcgKzIzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VGltaW5nKGNvbnN0
IFN0cmluZyYgdGl0bGUpOwogICAgIGJvb2wgc3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxl
LCBkb3VibGUmIGVsYXBzZWQpOwogCi0gICAgdm9pZCBzdGFydEdyb3VwKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxGcmFtZSwgYm9vbCBjb2xsYXBzZWQgPSBmYWxz
ZSk7CisgICAgdm9pZCBzdGFydEdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxGcmFtZSwgYm9vbCBjb2xsYXBzZWQgPSBmYWxz
ZSk7CiAgICAgdm9pZCBlbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiAgICAgdm9pZCBtYXJrVGltZWxp
bmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMGUxMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCkBAIC0wLDAg
KzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRz
LmgiCisKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NjcmlwdEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRzKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQorICAgIDogbV9zY3JpcHRTdGF0ZShz
Y3JpcHRTdGF0ZSkKK3sKKyAgICBtX2FyZ3VtZW50cy5zd2FwKGFyZ3VtZW50cyk7Cit9CisKK1Nj
cmlwdEFyZ3VtZW50czo6flNjcmlwdEFyZ3VtZW50cygpCit7Cit9CisKK2NvbnN0IFNjcmlwdFZh
bHVlICZTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50QXQoc2l6ZV90IGluZGV4KSBjb25zdAorewor
ICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRleCk7CisgICAgcmV0dXJuIG1fYXJn
dW1lbnRzW2luZGV4XTsKK30KKworU2NyaXB0U3RhdGUqIFNjcmlwdEFyZ3VtZW50czo6Z2xvYmFs
U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdFN0YXRlLmdldCgpOworfQorCiti
b29sIFNjcmlwdEFyZ3VtZW50czo6Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFN0cmluZyYgcmVz
dWx0LCBib29sIGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkKQoreworICAgIGlmICghYXJndW1lbnRD
b3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBTY3JpcHRWYWx1ZSYg
dmFsdWUgPSBhcmd1bWVudEF0KDApOworICAgIGlmIChjaGVja0Zvck51bGxPclVuZGVmaW5lZCAm
JiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZ2xvYmFsU3RhdGUoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJlc3VsdCA9
IHZhbHVlLnRvU3RyaW5nKGdsb2JhbFN0YXRlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFNjcmlwdEFyZ3VtZW50czo6aXNFcXVhbChTY3JpcHRBcmd1bWVudHMqIG90aGVyKSBjb25z
dAoreworICAgIGlmICghb3RoZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X2FyZ3VtZW50cy5zaXplKCkgIT0gb3RoZXItPm1fYXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZ2xvYmFsU3RhdGUoKSAmJiBtX2FyZ3VtZW50cy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2FyZ3VtZW50c1tpXS5p
c0VxdWFsKG90aGVyLT5nbG9iYWxTdGF0ZSgpLCBvdGhlci0+bV9hcmd1bWVudHNbaV0pKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmggYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGYwNWFiCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU2NyaXB0QXJndW1lbnRzX2gKKyNkZWZpbmUgU2NyaXB0QXJndW1lbnRzX2gKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0
VmFsdWU7CisKK2NsYXNzIFNjcmlwdEFyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgU2NyaXB0QXJn
dW1lbnRzKFNjcmlwdFN0YXRlKiwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKKyAg
ICB+U2NyaXB0QXJndW1lbnRzKCk7CisKKyAgICBjb25zdCBTY3JpcHRWYWx1ZSYgYXJndW1lbnRB
dChzaXplX3QpIGNvbnN0OworICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hcmd1bWVudHMuc2l6ZSgpOyB9CisKKyAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUo
KSBjb25zdDsKKworICAgIGJvb2wgZ2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFdURjo6U3RyaW5n
JiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQgPSBmYWxzZSk7CisgICAgYm9v
bCBpc0VxdWFsKFNjcmlwdEFyZ3VtZW50cyopIGNvbnN0OworCitwcml2YXRlOgorICAgIFNjcmlw
dFN0YXRlUHJvdGVjdGVkUHRyIG1fc2NyaXB0U3RhdGU7CisgICAgVmVjdG9yPFNjcmlwdFZhbHVl
PiBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFNjcmlwdEFyZ3VtZW50c19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDU1ZDI1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgorCisj
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdW5zaWdu
ZWQgbGluZU51bWJlcikKKyAgICA6IG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKKyAgICAs
IG1fc291cmNlVVJMKHVybFN0cmluZykKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQor
eworfQorCitTY3JpcHRDYWxsRnJhbWU6On5TY3JpcHRDYWxsRnJhbWUoKQoreworfQorCitib29s
IFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIG8pIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZnVuY3Rpb25OYW1lID09IG8ubV9mdW5jdGlvbk5hbWUKKyAgICAg
ICAgJiYgbV9zb3VyY2VVUkwgPT0gby5tX3NvdXJjZVVSTAorICAgICAgICAmJiBtX2xpbmVOdW1i
ZXIgPT0gby5tX2xpbmVOdW1iZXI7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBT
Y3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK3sKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgZnJhbWUtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgbV9mdW5jdGlvbk5hbWUpOworICAg
IGZyYW1lLT5zZXRTdHJpbmcoInNvdXJjZVVSTCIsIG1fc291cmNlVVJMKTsKKyAgICBmcmFtZS0+
c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgbV9saW5lTnVtYmVyKTsKKyAgICByZXR1cm4gZnJhbWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBkNzdlMQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjcmlwdENhbGxGcmFtZV9oCisjZGVmaW5lIFNjcmlwdENhbGxGcmFt
ZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
CitjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRDYWxsRnJhbWUo
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1bnNp
Z25lZCBsaW5lTnVtYmVyKTsKKyAgICB+U2NyaXB0Q2FsbEZyYW1lKCk7CisKKyAgICBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsg
fQorICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KKworICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7CisgICAgU3RyaW5nIG1f
c291cmNlVVJMOworICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdENhbGxGcmFtZV9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
ZDAxMGJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKKworI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKFZl
Y3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBmcmFtZXMpCit7CisgICAgbV9mcmFtZXMuc3dhcChmcmFt
ZXMpOworfQorCitTY3JpcHRDYWxsU3RhY2s6On5TY3JpcHRDYWxsU3RhY2soKQoreworfQorCitj
b25zdCBTY3JpcHRDYWxsRnJhbWUgJlNjcmlwdENhbGxTdGFjazo6YXQoc2l6ZV90IGluZGV4KQor
eworICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkgPiBpbmRleCk7CisgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XTsKK30KKworc2l6ZV90IFNjcmlwdENhbGxTdGFjazo6c2l6ZSgpCit7CisgICAg
cmV0dXJuIG1fZnJhbWVzLnNpemUoKTsKK30KKworYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmlzRXF1
YWwoU2NyaXB0Q2FsbFN0YWNrKiBvKSBjb25zdAoreworICAgIGlmICghbykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc2l6ZV90IGZyYW1lQ291bnQgPSBvLT5tX2ZyYW1lcy5zaXplKCk7
CisgICAgaWYgKGZyYW1lQ291bnQgIT0gbV9mcmFtZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7ICsraSkgewor
ICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwoby0+bV9mcmFtZXNbaV0pKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3QKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGZyYW1lcyA9IEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVz
LnNpemUoKTsgaSsrKQorICAgICAgICBmcmFtZXMtPnB1c2hPYmplY3QobV9mcmFtZXMuYXQoaSku
YnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7CisgICAgcmV0dXJuIGZyYW1lczsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmggYi9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGM2YmJhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU2NyaXB0Q2FsbFN0YWNrX2gKKyNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKKwor
I2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJbnNwZWN0b3JBcnJheTsKKworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heENhbGxTdGFja1Np
emVUb0NhcHR1cmUgPSAyMDA7CisKKyAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENh
bGxGcmFtZT4mKTsKKyAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7CisKKyAgICBjb25zdCBTY3JpcHRD
YWxsRnJhbWUgJmF0KHNpemVfdCk7CisgICAgc2l6ZV90IHNpemUoKTsKKyAgICBzdGF0aWMgYm9v
bCBzdGFja1RyYWNlKGludCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOworCisgICAg
Ym9vbCBpc0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IDJk
NGNjOTguLjE0ODFlYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisjaW5jbHVkZSAiU2Ny
aXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCkBAIC03NywxOSAr
NzgsNiBAQCBzdGF0aWMgdm9pZCBwcmludFNvdXJjZVVSTEFuZExpbmUoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBn
ZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBT
Y3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSwgU3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JO
dWxsT3JVbmRlZmluZWQgPSBmYWxzZSkKLXsKLSAgICBpZiAoIWNhbGxGcmFtZS5hcmd1bWVudENv
dW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSA9IGNhbGxGcmFtZS5hcmd1bWVudEF0KDApOwotICAgIGlmIChjaGVja0Zvck51bGxPclVu
ZGVmaW5lZCAmJiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc3VsdCA9IHZhbHVlLnRvU3RyaW5nKHNjcmlwdFN0
YXRlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291
cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZl
bCkKIHsKICAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CkBAIC0xNDQsNyArMTMyLDEyIEBA
IHN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwKICAgICBwcmludGYoIiVzICVzOiIsIHNvdXJjZVN0cmlu
ZywgbGV2ZWxTdHJpbmcpOwogfQogCi12b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OmFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBhZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgMCk7Cit9CisKK3ZvaWQgQ29uc29sZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtMTU1LDcgKzE0OCw3IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxlCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBj
YWxsU3RhY2ssIG1lc3NhZ2UpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgMCwgY2Fs
bFN0YWNrKTsKICAgICBlbHNlCiAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwogI2VuZGlmCkBAIC0xNjksNyArMTYyLDcgQEAgdm9pZCBDb25zb2xl
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNz
YWdlTGV2ZWwgbGUKICAgICBwcmludGYoIiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
IH0KIAotdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIGJvb2wgYWNjZXB0Tm9Bcmd1
bWVudHMpCit2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCAgUGFz
c093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgYm9vbCBhY2NlcHROb0FyZ3VtZW50
cykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAg
LTE3NywxNSArMTcwLDE1IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayoKIAogICAgIGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAKLSAgICBpZiAo
IWFjY2VwdE5vQXJndW1lbnRzICYmICFsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKSkKKyAgICBp
ZiAoIWFjY2VwdE5vQXJndW1lbnRzICYmICFhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKGdldEZpcnN0QXJn
dW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpKQor
ICAgIGlmIChhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKSkKICAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigp
LCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2Fn
ZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIGNhbGxTdGFjaywgbWVzc2FnZSk7CisgICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICNlbmRpZgogCiAg
ICAgaWYgKCFDb25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKQEAgLTE5NCw0OSArMTg3
LDQ5IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIFNjcmlwdENhbGxTdGFjayoKICAgICBwcmludFNvdXJjZVVSTEFuZExpbmUo
bGFzdENhbGxlci5zb3VyY2VVUkwoKSwgMCk7CiAgICAgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2
ZWxQcmVmaXgoSlNNZXNzYWdlU291cmNlLCBsZXZlbCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVudENvdW50KCk7ICsraSkgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAg
ICAgIFN0cmluZyBhcmdBc1N0cmluZzsKLSAgICAgICAgaWYgKGxhc3RDYWxsZXIuYXJndW1lbnRB
dChpKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBhcmdBc1N0cmluZykpCisgICAgICAg
IGlmIChhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkuZ2V0U3RyaW5nKGFyZ3VtZW50cy0+Z2xvYmFs
U3RhdGUoKSwgYXJnQXNTdHJpbmcpKQogICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBhcmdBc1N0
cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQogCi12b2lk
IENvbnNvbGU6OmRlYnVnKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xl
OjpkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIC8vIEluIEZpcmVidWcsIGNvbnNv
bGUuZGVidWcgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNvbnNvbGUubG9nLiBTbyB3ZSdsbCBk
byB0aGUgc2FtZS4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBsb2coYXJndW1lbnRzLCBjYWxs
U3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OmVycm9yKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQordm9pZCBDb25zb2xlOjplcnJvcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGFk
ZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjYWxsU3RhY2spOwor
ICAgIGFkZE1lc3NhZ2UoTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBhcmd1bWVu
dHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgQ29uc29sZTo6aW5mbyhTY3JpcHRDYWxsU3RhY2sq
IGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6aW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50
cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewot
ICAgIGxvZyhjYWxsU3RhY2spOworICAgIGxvZyhhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25z
b2xlOjpsb2coUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKExvZ01lc3Nh
Z2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShMb2dN
ZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAK
LXZvaWQgQ29uc29sZTo6ZGlyKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25z
b2xlOjpkaXIoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSAgICBhZGRNZXNzYWdlKE9iamVjdE1l
c3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShP
YmplY3RNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7
CiB9CiAKLXZvaWQgQ29uc29sZTo6ZGlyeG1sKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQor
dm9pZCBDb25zb2xlOjpkaXJ4bWwoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICAvLyBUaGUg
c3RhbmRhcmQgYmVoYXZpb3Igb2Ygb3VyIGNvbnNvbGUubG9nIHdpbGwgcHJpbnQgdGhlIERPTSB0
cmVlIGZvciBub2Rlcy4KLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBsb2coYXJndW1lbnRzLCBj
YWxsU3RhY2spOwogfQogCi12b2lkIENvbnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjp0cmFjZShQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAg
IGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBjYWxsU3RhY2ss
IHRydWUpOworICAgIGFkZE1lc3NhZ2UoVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7CiAKICAgICBpZiAoIXNob3VsZFByaW50RXhj
ZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0yNDgsMTUgKzI0MSwxNSBAQCB2b2lkIENv
bnNvbGU6OnRyYWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogICAgIH0KIH0KIAotdm9p
ZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFj
ayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRp
b24sIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIGNhbGxTdGFjaywgdHJ1ZSk7CisgICAgYWRkTWVzc2FnZShBc3NlcnRNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCB0cnVlKTsKIH0KIAot
dm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29u
c29sZTo6Y291bnQoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CkBAIC0yNjcsNyArMjYwLDcgQEAgdm9p
ZCBDb25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICAgICAvLyBGb2xs
b3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGggbnVsbCBhbmQgdW5kZWZpbmVk
IHRpdGxlIGluCiAgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3VtZW50CiAgICAgU3Ry
aW5nIHRpdGxlOwotICAgIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRl
KCksIGxhc3RDYWxsZXIsIHRpdGxlKTsKKyAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRB
c1N0cmluZyh0aXRsZSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvdW50
KHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7
CiAjZWxzZQpAQCAtMjc1LDIwICsyNjgsMTkgQEAgdm9pZCBDb25zb2xlOjpjb3VudChTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaykKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Om1hcmtUaW1l
bGluZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6bWFya1RpbWVs
aW5lKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NPd25QdHI8U2Ny
aXB0Q2FsbFN0YWNrPikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogICAg
IFN0cmluZyBtZXNzYWdlOwotICAgIGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2st
PnN0YXRlKCksIGxhc3RDYWxsZXIsIG1lc3NhZ2UpOworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5tYXJrVGltZWxpbmUobWVzc2FnZSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxs
U3RhY2spOworICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogI2VuZGlmCiB9CiAKQEAgLTMy
MSw3ICszMTMsNyBAQCBTdHJpbmcgQ29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0
CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAotdm9pZCBDb25zb2xlOjpwcm9m
aWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9p
ZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0
ZSwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTM0Miw3ICszMzQsNyBAQCB2
b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsU3RhY2spCiAgICAgICAgIHJlc29sdmVkVGl0bGUgPSAiIjsKICNlbmRpZgogCi0gICAg
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KGNhbGxTdGFjay0+c3RhdGUoKSwgcmVzb2x2ZWRUaXRsZSk7
CisgICAgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KHN0YXRlLCByZXNvbHZlZFRpdGxlKTsKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVy
ID0gY2FsbFN0YWNrLT5hdCgwKTsKQEAgLTM1MCw3ICszNDIsNyBAQCB2b2lkIENvbnNvbGU6OnBy
b2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAj
ZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUs
IFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQordm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNv
bnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc093blB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIGlmICghcGFnZSkKQEAgLTM2Miw3ICszNTQsNyBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGVF
bmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUg
PSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKKyAgICBS
ZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHN0YXRl
LCB0aXRsZSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM5NCw3
ICszODYsNyBAQCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICNlbmRp
ZgogfQogCi12b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0
Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSog
cGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTQyMCwyOCArNDEyLDMwIEBAIHZvaWQgQ29uc29sZTo6
dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykK
ICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6Omdyb3VwKFNjcmlwdENhbGxTdGFjayogY2FsbFN0
YWNrKQordm9pZCBDb25zb2xlOjpncm91cChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c3RhcnRHcm91cChKU01lc3NhZ2VTb3VyY2UsIGNhbGxTdGFjayk7CisgICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5zdGFydEdyb3VwKGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxT
dGFjayk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaykKK3ZvaWQgQ29uc29sZTo6Z3JvdXBDb2xsYXBzZWQoUGFzc093
blB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc093blB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0R3JvdXAoSlNNZXNzYWdlU291cmNlLCBj
YWxsU3RhY2ssIHRydWUpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRH
cm91cChhcmd1bWVudHMsIGNhbGxTdGFjaywgdHJ1ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShhcmd1bWVudHMpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwogI2VuZGlmCiB9CkBA
IC00NTcsOSArNDUxLDIyIEBAIHZvaWQgQ29uc29sZTo6Z3JvdXBFbmQoKQogI2VuZGlmCiB9CiAK
LXZvaWQgQ29uc29sZTo6d2FybihTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK2Jvb2wgQ29u
c29sZTo6c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5oYXNGcm9udGVuZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwordm9pZCBDb25zb2xlOjp3YXJuKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAg
YWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY2FsbFN0YWNr
KTsKKyAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBh
cmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKIE1lbW9yeUluZm8qIENvbnNvbGU6Om1lbW9yeSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuaAppbmRleCBhYjYyNTI1Li45MmZlZTU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTM5LDYgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRBcmd1
bWVudHM7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKQEAgLTgzLDQ0
ICs4Niw0NCBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAgICAgdm9pZCBk
aXNjb25uZWN0RnJhbWUoKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNh
bGxTdGFjayA9IDApOwotCi0gICAgdm9pZCBkZWJ1ZyhTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2
b2lkIGVycm9yKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgaW5mbyhTY3JpcHRDYWxsU3Rh
Y2sqKTsKLSAgICB2b2lkIGxvZyhTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIHdhcm4oU2Ny
aXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCBkaXIoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9p
ZCBkaXJ4bWwoU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgdm9pZCB0cmFjZShTY3JpcHRDYWxsU3Rh
Y2sqKTsKLSAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgU2NyaXB0Q2Fs
bFN0YWNrKik7Ci0gICAgdm9pZCBjb3VudChTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIG1h
cmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdm9p
ZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spOworCisgICAg
dm9pZCBkZWJ1ZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0
Q2FsbFN0YWNrPik7CisgICAgdm9pZCBlcnJvcihQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBpbmZvKFBhc3NPd25QdHI8
U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lk
IGxvZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPik7CisgICAgdm9pZCB3YXJuKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093
blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGRpcihQYXNzT3duUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBkaXJ4bWwo
UGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4p
OworICAgIHZvaWQgdHJhY2UoUGFzc093blB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRy
PFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0
aW9uLCBQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NPd25QdHI8U2NyaXB0Q2FsbFN0
YWNrPik7CisgICAgdm9pZCBjb3VudChQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NP
d25QdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgdm9pZCBtYXJrVGltZWxpbmUoUGFzc093blB0
cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogI2lmIEVO
QUJMRShXTUwpCiAgICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsKICNlbmRp
ZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHZvaWQgcHJvZmlsZShjb25z
dCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICB2b2lkIHByb2ZpbGVFbmQoY29uc3Qg
U3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJv
ZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CisgICAgdm9pZCBwcm9maWxlKGNv
bnN0IFN0cmluZyYsIFNjcmlwdFN0YXRlKiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsK
KyAgICB2b2lkIHByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0U3RhdGUqLCBQYXNzT3du
UHRyPFNjcmlwdENhbGxTdGFjaz4pOwogI2VuZGlmCiAgICAgdm9pZCB0aW1lKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsK
LSAgICB2b2lkIGdyb3VwKFNjcmlwdENhbGxTdGFjayopOwotICAgIHZvaWQgZ3JvdXBDb2xsYXBz
ZWQoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCB0aW1lRW5kKGNvbnN0IFN0cmluZyYsIFBh
c3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsK
KyAgICB2b2lkIGdyb3VwKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxT
Y3JpcHRDYWxsU3RhY2s+KTsKKyAgICB2b2lkIGdyb3VwQ29sbGFwc2VkKFBhc3NPd25QdHI8U2Ny
aXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICB2b2lkIGdy
b3VwRW5kKCk7CiAKKyAgICBib29sIHNob3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpIGNvbnN0
OworCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAgc3RhdGlj
IHZvaWQgc2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zKGJvb2wpOwogCi0jaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0gICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMoKSBjb25z
dCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9Ci0jZW5kaWYKLQogICAgIE1lbW9yeUluZm8qIG1lbW9y
eSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGlubGluZSBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxT
dGFjayosIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMgPSBmYWxzZSk7CisgICAgdm9pZCBhZGRNZXNz
YWdlKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRz
PiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+LCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0g
ZmFsc2UpOwogCiAgICAgQ29uc29sZShGcmFtZSopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5pZGwgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKaW5kZXggNTI1MjhmMS4u
OWYwMzkxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCisrKyBiL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmlkbApAQCAtMzAsMTAgKzMwLDYgQEAgbW9kdWxlIHdpbmRvdyB7CiAK
ICAgICBpbnRlcmZhY2UgW09taXRDb25zdHJ1Y3Rvcl0gQ29uc29sZSB7CiAKLSNpZiBkZWZpbmVk
KEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UgotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gQXJyYXkgcHJvZmls
ZXM7Ci0jZW5kaWYKLSAgICAKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQg
ZGVidWcoKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgZXJyb3IoKTsK
ICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgaW5mbygpOwpAQCAtNTEsOCAr
NDcsOSBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKLSAgICAgICAg
W0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZShpbiBbQ29udmVydFVuZGVmaW5l
ZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKLSAgICAgICAgW0N1c3RvbUFy
Z3VtZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZUVuZChpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtDdXN0b21HZXR0ZXJdIEFycmF5IHByb2ZpbGVzOworICAgICAgICBbQ3VzdG9tXSB2b2lk
IHByb2ZpbGUoaW4gRE9NU3RyaW5nIHRpdGxlKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9m
aWxlRW5kKGluIERPTVN0cmluZyB0aXRsZSk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHRpbWUo
aW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>