<?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>119737</bug_id>
          
          <creation_ts>2013-08-13 03:17:19 -0700</creation_ts>
          <short_desc>[sh4] DFG_JIT implementation for sh4 architecture</short_desc>
          <delta_ts>2013-08-14 09:50:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>119755</dependson>
    
    <dependson>119758</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Brianceau">jbriance</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>916637</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 03:17:19 -0700</bug_when>
    <thetext>I&apos;ll submit a DFG_JIT implementation proposal for sh4 architecture soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916658</commentid>
    <comment_count>1</comment_count>
      <attachid>208618</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 04:52:21 -0700</bug_when>
    <thetext>Created attachment 208618
DFG_JIT implementation for sh4 architecture

I&apos;ve tested this patch on my sh4 board using r153882 and I didn&apos;t see regressions when running
- Tools/Scripts/run-javascriptcore-tests
- Tools/Scripts/run-fast-jsc
- SunSpider 1.0


SunSpider 1.0 results on r153882 without this patch:

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 13166.3ms +/- 0.2%
--------------------------------------------

  3d:                   2706.3ms +/- 0.5%
    cube:                837.8ms +/- 0.6%
    morph:               539.2ms +/- 0.7%
    raytrace:           1329.3ms +/- 0.7%

  access:               1905.7ms +/- 0.1%
    binary-trees:        114.2ms +/- 2.7%
    fannkuch:           1148.7ms +/- 0.4%
    nbody:               455.2ms +/- 1.0%
    nsieve:              187.7ms +/- 0.3%

  bitops:               1031.2ms +/- 0.4%
    3bit-bits-in-byte:    78.2ms +/- 0.5%
    bits-in-byte:        111.2ms +/- 0.4%
    bitwise-and:         196.0ms +/- 0.0%
    nsieve-bits:         645.8ms +/- 0.6%

  controlflow:            74.0ms +/- 0.0%
    recursive:            74.0ms +/- 0.0%

  crypto:               1165.7ms +/- 1.3%
    aes:                 666.2ms +/- 1.9%
    md5:                 317.5ms +/- 1.1%
    sha1:                182.0ms +/- 2.0%

  date:                 2085.0ms +/- 1.1%
    format-tofte:        925.7ms +/- 1.2%
    format-xparb:       1159.3ms +/- 1.3%

  math:                  850.2ms +/- 1.1%
    cordic:              248.8ms +/- 3.8%
    partial-sums:        343.8ms +/- 2.7%
    spectral-norm:       257.5ms +/- 1.2%

  regexp:                531.0ms +/- 0.8%
    dna:                 531.0ms +/- 0.8%

  string:               2817.3ms +/- 0.5%
    base64:              218.2ms +/- 0.5%
    fasta:               446.3ms +/- 3.2%
    tagcloud:            560.0ms +/- 1.1%
    unpack-code:        1255.2ms +/- 1.0%
    validate-input:      337.7ms +/- 2.2%




SunSpider 1.0 results on r153882 with this patch:

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 10122.6ms +/- 0.2%
--------------------------------------------

  3d:                   2440.8ms +/- 0.2%
    cube:                899.0ms +/- 0.3%
    morph:               278.5ms +/- 0.6%
    raytrace:           1263.3ms +/- 0.2%

  access:                882.0ms +/- 0.3%
    binary-trees:        106.5ms +/- 1.6%
    fannkuch:            289.3ms +/- 0.5%
    nbody:               335.9ms +/- 0.7%
    nsieve:              150.3ms +/- 0.7%

  bitops:                335.5ms +/- 0.6%
    3bit-bits-in-byte:    29.2ms +/- 1.0%
    bits-in-byte:         74.6ms +/- 1.8%
    bitwise-and:          79.2ms +/- 0.4%
    nsieve-bits:         152.5ms +/- 0.9%

  controlflow:            96.1ms +/- 0.2%
    recursive:            96.1ms +/- 0.2%

  crypto:                886.4ms +/- 0.3%
    aes:                 464.9ms +/- 0.6%
    md5:                 251.0ms +/- 0.7%
    sha1:                170.5ms +/- 0.7%

  date:                 1512.6ms +/- 0.4%
    format-tofte:        780.6ms +/- 0.7%
    format-xparb:        732.0ms +/- 0.7%

  math:                  589.3ms +/- 0.4%
    cordic:              148.5ms +/- 0.3%
    partial-sums:        314.9ms +/- 0.6%
    spectral-norm:       125.9ms +/- 0.2%

  regexp:                529.1ms +/- 0.4%
    dna:                 529.1ms +/- 0.4%

  string:               2850.8ms +/- 0.7%
    base64:              189.2ms +/- 0.9%
    fasta:               402.9ms +/- 0.9%
    tagcloud:            541.1ms +/- 0.6%
    unpack-code:        1323.1ms +/- 1.0%
    validate-input:      394.5ms +/- 1.5%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916680</commentid>
    <comment_count>2</comment_count>
      <attachid>208618</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 06:28:05 -0700</bug_when>
    <thetext>Comment on attachment 208618
DFG_JIT implementation for sh4 architecture

I cq- because I just saw that this patch introduces a regression (crash) in v8-v4 test suite.

However, I&apos;d still be happy to get feedbacks on this patch, especially the &quot;SH4_32BIT_DUMMY_ARG&quot; part introduced in DFGSpeculativeJIT.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916754</commentid>
    <comment_count>3</comment_count>
      <attachid>208642</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 09:39:58 -0700</bug_when>
    <thetext>Created attachment 208642
DFG_JIT implementation for sh4 architecture

I&apos;ve tested this patch on my sh4 board using r153999 and I didn&apos;t see regressions when running
- Tools/Scripts/run-javascriptcore-tests
- Tools/Scripts/run-fast-jsc
- SunSpider 1.0
- v8-v4 test suite


v8-v4 test suite results on r153999 without this patch:

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:             74696.0ms +/- 11.7%
--------------------------------------------

  v8:              74696.0ms +/- 11.7%
    crypto:        13296.7ms +/- 1.4%
    deltablue:     21649.7ms +/- 17.6%
    earley-boyer:   6108.0ms +/- 7.4%
    raytrace:       7092.7ms +/- 7.3%
    regexp:         6166.3ms +/- 1.2%
    richards:      15396.0ms +/- 43.9%
    splay:          4986.7ms +/- 6.6%




v8-v4 test suite results on r153999 with this patch:

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:             36705.7ms +/- 0.7%
--------------------------------------------

  v8:              36705.7ms +/- 0.7%
    crypto:         4592.0ms +/- 0.5%
    deltablue:      7425.7ms +/- 1.6%
    earley-boyer:   4113.3ms +/- 0.2%
    raytrace:       5562.7ms +/- 1.1%
    regexp:         7486.7ms +/- 0.1%
    richards:       4316.7ms +/- 1.4%
    splay:          3208.7ms +/- 9.5%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916755</commentid>
    <comment_count>4</comment_count>
      <attachid>208618</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-13 09:40:09 -0700</bug_when>
    <thetext>Comment on attachment 208618
DFG_JIT implementation for sh4 architecture

Separate out the llint changes into a separate patch (it will jus take it easier to be sure a regression was not introduced by those vs. the dfg.  Similarly there&apos;s a lot of assembler changes that look like they should be safe on there own (separate tom this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916770</commentid>
    <comment_count>5</comment_count>
      <attachid>208642</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 09:59:11 -0700</bug_when>
    <thetext>Comment on attachment 208642
DFG_JIT implementation for sh4 architecture

(In reply to comment #4)
&gt; Separate out the llint changes into a separate patch (it will jus take it easier to be sure a regression was not introduced by those vs. the dfg.  Similarly there&apos;s a lot of assembler changes that look like they should be safe on there own (separate tom this patch)

Thanks. So I&apos;m going to separate this patch in 3 parts: LLINT, MacroAssembler not related to the DFG then the DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916779</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 10:16:26 -0700</bug_when>
    <thetext>LLINT part: https://bugs.webkit.org/show_bug.cgi?id=119755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916800</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 10:54:55 -0700</bug_when>
    <thetext>Baseline JIT part: https://bugs.webkit.org/show_bug.cgi?id=119758</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917045</commentid>
    <comment_count>8</comment_count>
      <attachid>208707</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-14 02:14:01 -0700</bug_when>
    <thetext>Created attachment 208707
DFG_JIT implementation for sh4 architecture (after split)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917144</commentid>
    <comment_count>9</comment_count>
      <attachid>208707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 09:24:11 -0700</bug_when>
    <thetext>Comment on attachment 208707
DFG_JIT implementation for sh4 architecture (after split)

Rejecting attachment 208707 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ilure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
Process.sb
make: *** wait: No child processes.  Stop.
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.
Command /bin/sh failed with exit code 2


** BUILD FAILED **


The following build commands failed:
	PhaseScriptExecution &quot;Generate Derived Sources&quot; &quot;/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release/Derived Sources.build/Script-C0CE72841247E66800BC0EC4.sh&quot;
(1 failure)

Full output: http://webkit-queues.appspot.com/results/1464096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917145</commentid>
    <comment_count>10</comment_count>
      <attachid>208707</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-14 09:27:47 -0700</bug_when>
    <thetext>Comment on attachment 208707
DFG_JIT implementation for sh4 architecture (after split)

Mac bot looks sick today :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917155</commentid>
    <comment_count>11</comment_count>
      <attachid>208707</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-08-14 09:50:03 -0700</bug_when>
    <thetext>Comment on attachment 208707
DFG_JIT implementation for sh4 architecture (after split)

Clearing flags on attachment: 208707

Committed r154052: &lt;http://trac.webkit.org/changeset/154052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917156</commentid>
    <comment_count>12</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-08-14 09:50:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208618</attachid>
            <date>2013-08-13 04:52:21 -0700</date>
            <delta_ts>2013-08-13 09:40:09 -0700</delta_ts>
            <desc>DFG_JIT implementation for sh4 architecture</desc>
            <filename>sh4-dfg_119737.patch</filename>
            <type>text/plain</type>
            <size>88638</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzOTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBA
QAorMjAxMy0wOC0xMyAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlYXVAbmRzLmNvbT4KKwor
ICAgICAgICBERkdfSklUIGltcGxlbWVudGF0aW9uIGZvciBzaDQgYXJjaGl0ZWN0dXJlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NzM3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IucHJvOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6aXNDb21wYWN0UHRyQWxpZ25lZEFk
ZHJlc3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6aW52ZXJ0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmFkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJT
SDQ6OmxzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om11bDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om9yMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclNINDo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YWRkNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6eG9yMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclNINDo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OnRlc3RJbW0pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZEVm
ZmVjdGl2ZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmxvYWQxNlVuYWxpZ25lZCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpsb2FkMTZTaWduZWQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9h
ZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6bW92ZUludHNUb0RvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyU0g0Ojpzd2FwRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Omxv
YWRGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpsb2FkRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnN0b3JlRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclNINDo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJT
SDQ6Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpkaXZEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bmVnYXRlRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29y
ZHMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c2lnbkV4dGVuZDMyVG9QdHIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6emVyb0V4dGVuZDMyVG9QdHIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0lu
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaFRydW5jYXRlRG91
YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6dHJ1bmNhdGVE
b3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnRydW5jYXRl
RG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3dhcCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2gzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0
OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE5lZzMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaEFkZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OmJyYW5jaE9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJh
bmNoQ29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNI
NDo6dXJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnJldmVydEp1
bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
U0g0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6U0g0QXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1i
bGVyOjpjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcyk6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxl
cjo6cmVhZFBDcmVsYXRpdmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjps
aW5rSnVtcCk6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6bGlua0NhbGwpOgorICAgICAg
ICAoSlNDOjpTSDRBc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6U0g0QXNz
ZW1ibGVyOjpwYXRjaENvbnN0YW50UG9vbExvYWQpOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJs
ZXI6OnJlcGF0Y2hJbnQzMik6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6cmVsaW5rQ2Fs
bCk6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6cmVsaW5rSnVtcCk6CisgICAgICAgIChK
U0M6OlNINEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6U0g0QXNz
ZW1ibGVyOjpyZXZlcnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpk
ZWJ1Z09mZnNldCk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6
OmRlYnVnQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAg
KiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlND
OjpERkc6OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoK
KyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1
Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVBsYXRmb3JtU3BlY2lmaWNKSVRBc3NlcnRpb25zKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuaDoKKyAgICAgICAgKiBqaXQvSklUU3R1YnNTSDQuaDoKKyAgICAgICAgKEpTQzo6
cGVyZm9ybVNINEpJVEFzc2VydGlvbnMpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5o
OgorICAgICAgICAqIG9mZmxpbmVhc20vc2g0LnJiOgorCiAyMDEzLTA4LTEyICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENvZGVCbG9jaydzIG5vdGlv
biBvZiBhZGRpbmcgaWRlbnRpZmllcnMgZW50aXJlbHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9MTEludE9mZnNldHNFeHRyYWN0b3IucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9MTEludE9mZnNldHNFeHRyYWN0b3IucHJvCShyZXZpc2lvbiAxNTM4ODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvTExJbnRPZmZzZXRzRXh0cmFjdG9yLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBMTElOVF9ERVBFTkRFTkNZID0gXAogICAgICQkUFdE
L29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiIFwKICAgICAkJFBXRC9vZmZsaW5lYXNtL3NlbGZfaGFz
aC5yYiBcCiAgICAgJCRQV0Qvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYiBcCisgICAgJCRQV0Qvb2Zm
bGluZWFzbS9zaDQucmIgXAogICAgICQkUFdEL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiIFwKICAg
ICAkJFBXRC9vZmZsaW5lYXNtL3g4Ni5yYgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAxNTM4ODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgU0g0
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwogCiAgICAgc3RhdGljIGNvbnN0
IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwotICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVy
SUQgZnNjcmF0Y2ggPSBTSDRSZWdpc3RlcnM6OmZyMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUmVn
aXN0ZXJJRCBmc2NyYXRjaCA9IFNINFJlZ2lzdGVyczo6ZHIxMDsKICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6c3A7CiAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpwcjsK
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnMyA9IFNINFJlZ2lzdGVyczo6
cjEzOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0NvbXBh
Y3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICAgewotICAgICAg
ICByZXR1cm4gKHZhbHVlID49IDApICYmICh2YWx1ZSA8PSBNYXhpbXVtQ29tcGFjdFB0ckFsaWdu
ZWRBZGRyZXNzT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA+PSAwKSAmJiAodmFsdWUg
PD0gTWF4aW11bUNvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldCkgJiYgKCEodmFsdWUgJiAz
KSk7CiAgICAgfQogCiAgICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0aW9uIHsKQEAgLTEwMSw2ICsx
MDEsMzQgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5yZWxlYXNlU2NyYXRjaChyZWcp
OwogICAgIH0KIAorICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAg
ICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb3RFcXVhbDsKKyAgICAgICAgY2Fz
ZSBOb3RFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiBFcXVhbDsKKyAgICAgICAgY2FzZSBBYm92
ZToKKyAgICAgICAgICAgIHJldHVybiBCZWxvd09yRXF1YWw7CisgICAgICAgIGNhc2UgQWJvdmVP
ckVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIEJlbG93OworICAgICAgICBjYXNlIEJlbG93Ogor
ICAgICAgICAgICAgcmV0dXJuIEFib3ZlT3JFcXVhbDsKKyAgICAgICAgY2FzZSBCZWxvd09yRXF1
YWw6CisgICAgICAgICAgICByZXR1cm4gQWJvdmU7CisgICAgICAgIGNhc2UgR3JlYXRlclRoYW46
CisgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW5PckVxdWFsOworICAgICAgICBjYXNlIEdyZWF0
ZXJUaGFuT3JFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKyAgICAgICAgY2Fz
ZSBMZXNzVGhhbjoKKyAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbk9yRXF1YWw7CisgICAg
ICAgIGNhc2UgTGVzc1RoYW5PckVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFu
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVy
YXRpb25zCiAKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CkBAIC0xMDgsNiArMTM2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJl
Z1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChz
cmMxID09IGRlc3QpCisgICAgICAgICAgICBhZGQzMihzcmMyLCBkZXN0KTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAgICAgICAgYWRkMzIoc3Jj
MSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUp
CkBAIC0xMjYsOCArMTY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
aWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ1JlZyhzcmMs
IGRlc3QpOworICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CiAgICAgICAgIGFkZDMyKGltbSwgZGVz
dCk7CiAgICAgfQogCkBAIC0xNjQsOCArMjAxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kbFJlZ1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVn
aXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGlmIChzcmMxID09IGRlc3QpCisgICAgICAgICAgICBhbmQzMihzcmMyLCBkZXN0KTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAgICAg
ICAgYW5kMzIoc3JjMSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZDMy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBSZWdpc3RlcklE
IHNjciA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICBsb2FkMzIoc3JjLCBzY3IpOworICAgICAg
ICBhbmQzMihzY3IsIGRlc3QpOworICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOworICAgIH0K
KwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92SW1tOCgwLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGlmICgoaW1tLm1fdmFsdWUgPD0gMjU1KSAmJiAoaW1tLm1fdmFsdWUgPj0gMCkgJiYgKGRl
c3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxJ
bW04cihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTcsNiAr
MjU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2hpZnRUbXApOwogICAg
IH0KIAorICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRB
bW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsK
KyAgICAgICAgbHNoaWZ0MzIoc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaW50IGltbU1hc2tlZCA9IGltbS5tX3ZhbHVlICYgMHgxZjsKQEAgLTIxNiwyNiArMjgyLDMy
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBzaGlmdGFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNy
YyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotCisgICAgICAgIG1vdmUo
c3JjLCBkZXN0KTsKICAgICAgICAgbHNoaWZ0MzIoc2hpZnRhbW91bnQsIGRlc3QpOwogICAgIH0K
IAogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmltdWxsUmVnUmVnKHNyYywgZGVzdCk7CisgICAgICAgIG11
bDMyKHNyYywgZGVzdCwgZGVzdCk7ICAgIAorICAgIH0KKworICAgIHZvaWQgbXVsMzIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxsUmVnUmVnKHNyYzEsIHNyYzIpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHNtYWNsKGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIFJl
Z2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUoaW1tLCBzY3IpOwot
ICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0g
ICAgICAgIG11bDMyKHNjciwgZGVzdCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Cisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdCkgeworICAgICAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwg
PSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBpbW12YWwpOworICAgICAg
ICAgICAgbXVsMzIoaW1tdmFsLCBzcmMsIGRlc3QpOworICAgICAgICAgICAgcmVsZWFzZVNjcmF0
Y2goaW1tdmFsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBkZXN0
KTsKKyAgICAgICAgICAgIG11bDMyKHNyYywgZGVzdCwgZGVzdCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI3
OSw2ICszNTEsMTggQEAgcHVibGljOgogICAgICAgICBvcjMyKGltbSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRlc3RwdHIpOworICAgICAg
ICBSZWdpc3RlcklEIGRlc3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92bE1lbVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3Js
UmVnUmVnKHNyYywgZGVzdHZhbCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oZGVz
dHZhbCwgZGVzdHB0cik7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGRlc3R2YWwpOworICAgICAg
ICByZWxlYXNlU2NyYXRjaChkZXN0cHRyKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoc3JjICE9IGRlc3QpIHsKQEAgLTMwMCw2ICszODQsMTIgQEAgcHVibGljOgogICAg
ICAgICByZWxlYXNlU2NyYXRjaChzaGlmdFRtcCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICByc2hpZnQzMihzaGlm
dEFtb3VudCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpbnQgaW1tTWFza2VkID0gaW1t
Lm1fdmFsdWUgJiAweDFmOwpAQCAtMzE5LDggKzQwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwogICAgICAgICByc2hpZnQzMihpbW0s
IGRlc3QpOwogICAgIH0KIApAQCAtMzM3LDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVn
aXN0ZXJJRCByZXN1bHQgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3Jh
dGNoUmVnID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0
YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnLCByZXN1bHQpOwog
CiAgICAgICAgIGlmIChtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZSgtaW1tLm1fdmFsdWUpKQpAQCAt
MzUyLDYgKzQ0MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcmF0Y2hS
ZWcpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1pbW0ubV92YWx1ZSks
IGFkZHJlc3MpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQpA
QCAtMzYwLDcgKzQ1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCByZXN1bHQgPSBj
bGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gY2xhaW1TY3Jh
dGNoKCk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnLCByZXN1bHQpOwogCiAgICAgICAgIGlmIChtX2Fz
c2VtYmxlci5pc0ltbWVkaWF0ZShpbW0ubV92YWx1ZSkpCkBAIC0zODEsMjMgKzQ3NSwyMSBAQCBw
dWJsaWM6CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyMiA9IGNsYWltU2NyYXRjaCgpOwogCiAgICAg
ICAgIC8vIEFkZCAzMi1iaXQgTFNCIGZpcnN0LgotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29u
c3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcy5tX3B0ciksIHNjcjEpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcjEsIHNjcjEpOyAvLyBzY3IxID0gMzIt
Yml0IExTQiBvZiBpbnQ2NCBAIGFkZHJlc3MKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFk
ZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnMyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1S
ZWcoc2NyYXRjaFJlZzMsIHNjcjEpOyAvLyBzY3IxID0gMzItYml0IExTQiBvZiBpbnQ2NCBAIGFk
ZHJlc3MKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3Iy
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuY2xydCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hZGRj
bFJlZ1JlZyhzY3IxLCBzY3IyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3IxKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3IyLCBzY3IxKTsgLy8gVXBkYXRlIGFkZHJlc3Mgd2l0
aCAzMi1iaXQgTFNCIHJlc3VsdC4KKyAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3Iy
LCBzY3JhdGNoUmVnMyk7IC8vIFVwZGF0ZSBhZGRyZXNzIHdpdGggMzItYml0IExTQiByZXN1bHQu
CiAKICAgICAgICAgLy8gVGhlbiBhZGQgMzItYml0IE1TQi4KLSAgICAgICAgbV9hc3NlbWJsZXIu
YWRkbEltbThyKDQsIHNjcjEpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcjEs
IHNjcjEpOyAvLyBzY3IxID0gMzItYml0IE1TQiBvZiBpbnQ2NCBAIGFkZHJlc3MKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkbEltbThyKDQsIHNjcmF0Y2hSZWczKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnMywgc2NyMSk7IC8vIHNjcjEgPSAzMi1iaXQgTVNCIG9m
IGludDY0IEAgYWRkcmVzcwogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z0KHNjcjIpOwogICAgICAg
ICBpZiAoaW1tLm1fdmFsdWUgPCAwKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThy
KC0xLCBzY3IyKTsgLy8gU2lnbiBleHRlbmQgaW1tIHZhbHVlIGlmIG5lZWRlZC4KICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkdmxSZWdSZWcoc2NyMiwgc2NyMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmxvYWRDb25zdGFudChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihhZGRyZXNzLm1fcHRyKSAr
IDQsIHNjcjIpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKHNjcjEsIHNjcjIpOyAv
LyBVcGRhdGUgKGFkZHJlc3MgKyA0KSB3aXRoIDMyLWJpdCBNU0IgcmVzdWx0LgorICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsUmVnTWVtKHNjcjEsIHNjcmF0Y2hSZWczKTsgLy8gVXBkYXRlIChhZGRy
ZXNzICsgNCkgd2l0aCAzMi1iaXQgTVNCIHJlc3VsdC4KIAogICAgICAgICByZWxlYXNlU2NyYXRj
aChzY3IyKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMSk7CkBAIC00MzIsNiArNTI0LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybFJlZ1JlZyhzcmMsIGRlc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMxID09IGRlc3QpCisgICAg
ICAgICAgICB4b3IzMihzcmMyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBt
b3ZlKHNyYzIsIGRlc3QpOworICAgICAgICAgICAgeG9yMzIoc3JjMSwgZGVzdCk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjRGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAtNDU3
LDYgKzU1OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAoKChjb25kID09IEVxdWFsKSB8fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFp
bW0pIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsUmVnUmVnKGRzdCwgZHN0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0g
Y2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0sIHNj
cik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyLCBkc3QsIFNINENvbmRpdGlv
bihjb25kKSk7CkBAIC00OTAsMjAgKzU5NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0SW1t
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIFJl
Z2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9
IGNsYWltU2NyYXRjaCgpOworICAgICAgICBsb2FkMzIoYmFzZSwgb2Zmc2V0LCBzY3IpOwogCi0g
ICAgICAgIGlmICgob2Zmc2V0IDwgMCkgfHwgKG9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChvZmZzZXQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsUmVnUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZsTWVtUmVnKHNjciwgc2NyKTsKLSAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQpCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKG9mZnNldCA+PiAyLCBiYXNlLCBzY3IpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIHNjcik7
Ci0gICAgICAgIGlmIChtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZShpbW0pKQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92SW1tOChpbW0sIHNjcjEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoaW1tLCBzY3IxKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSks
IHNjcjEpOwogCiAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsUmVnUmVnKHNjciwgc2NyMSk7CiAg
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC01NTEsNDEgKzY0OCwzNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNvbXBhcmUzMihpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIGlmICghb2Zmc2V0
KSB7Ci0gICAgICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAg
ICAgICAgUmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5s
b2FkQ29uc3RhbnQoaW1tLCBzY3IxKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcoc2NyMSwgc2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAgICAgICAgcmVsZWFzZVNj
cmF0Y2goc2NyMSk7Ci0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChvZmZzZXQgPCAwKSB8fCAob2Zm
c2V0ID49IDY0KSkgewotICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KG9mZnNldCwgc2NyKTsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoYmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmxNZW1SZWcoc2NyLCBzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENv
bnN0YW50KGltbSwgc2NyMSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNj
cjEsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcjEpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNo
KCk7CisgICAgICAgIGxvYWQzMihiYXNlLCBvZmZzZXQsIHNjcik7CisKICAgICAgICAgUmVnaXN0
ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1S
ZWcob2Zmc2V0ID4+IDIsIGJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25z
dGFudChpbW0sIHNjcjEpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBzY3IxKTsK
KwogICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9u
KGNvbmQpKTsKKwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKICAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goc2NyKTsKICAgICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbgog
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QsIGludCBleHRyYW9mZnNldCA9IDApCisgICAgeworICAg
ICAgICBpZiAoZGVzdCA9PSBhZGRyZXNzLmJhc2UpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQg
c2NhbGVkSW5kZXggPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgICAgIG1vdmUoYWRkcmVzcy5p
bmRleCwgc2NhbGVkSW5kZXgpOworICAgICAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFk
ZHJlc3Muc2NhbGUpLCBzY2FsZWRJbmRleCk7CisgICAgICAgICAgICBhZGQzMihzY2FsZWRJbmRl
eCwgZGVzdCk7CisgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY2FsZWRJbmRleCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGRlc3QpOworICAg
ICAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBkZXN0KTsKKyAg
ICAgICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIH0KKworICAgICAg
ICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQgKyBleHRyYW9mZnNldCksIGRlc3Qp
OworICAgIH0KKwogICAgIHZvaWQgbG9hZDMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkMzIoYWRkcmVzcy5iYXNlLCBhZGRyZXNz
Lm9mZnNldCwgZGVzdCk7CkBAIC02MzQsNyArNzI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBs
b2FkMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpKSwgZGVzdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzKSwgZGVzdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoZGVz
dCwgZGVzdCk7CiAgICAgfQogCkBAIC03MzMsMTUgKzgyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2FkMTZVbmFsaWduZWQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJl
Z2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIG1vdmUoYWRkcmVzcy5p
bmRleCwgc2NyKTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUp
LCBzY3IpOwogCi0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMy
KFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3Rp
dmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7CiAKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBz
Y3IpOworICAgICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAg
bG9hZDhQb3N0SW5jKHNjciwgc2NyMSk7CiAgICAgICAgIGxvYWQ4KHNjciwgZGVzdCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnNobGxJbW04cig4LCBkZXN0KTsKQEAgLTc4MCw5ICs4NjgsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwogICAgICAgICBsc2hp
ZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0KLSAgICAgICAgaWYgKGFk
ZHJlc3Mub2Zmc2V0KQotICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zm
c2V0KSwgc2NyKTsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
c2NyKTsKIAogICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09IFNINFJlZ2lzdGVyczo6cjApCiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3UjBtcihzY3IsIGRlc3QpOwpAQCAtODE0LDEwICs5
MDAsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9p
ZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc3JjdmFsID0gY2xhaW1TY3Jh
dGNoKCk7CisgICAgICAgIEFTU0VSVCgoaW1tLm1fdmFsdWUgPj0gLTEyOCkgJiYgKGltbS5tX3Zh
bHVlIDw9IDEyNykpOwogICAgICAgICBSZWdpc3RlcklEIGRzdHB0ciA9IGNsYWltU2NyYXRjaCgp
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGRzdHB0cik7CisgICAgICAg
IFJlZ2lzdGVySUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1vdmUoaW1tLCBz
cmN2YWwpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQocmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4oYWRkcmVzcyksIGRzdHB0cik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJS
ZWdNZW0oc3JjdmFsLCBkc3RwdHIpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChkc3RwdHIpOwog
ICAgICAgICByZWxlYXNlU2NyYXRjaChzcmN2YWwpOwpAQCAtODk0LDcgKzk4MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVn
aXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRD
b25zdGFudChpbW0ubV92YWx1ZSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0
YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MpLCBzY3IxKTsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3IxKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92bFJlZ01lbShzY3IsIHNjcjEpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAg
ICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKQEAgLTkwMywxMSArOTkwLDI0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2FkQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcyksIHNj
cik7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubW92bFJlZ01lbShzcmMsIHNjcik7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcik7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBkZXN0cHRyID0gY2xhaW1T
Y3JhdGNoKCk7CisKKyAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgZGVzdHB0
cik7CisKKyAgICAgICAgUmVnaXN0ZXJJRCBzcmN2YWwgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAg
ICAgbW92ZShpbW0sIHNyY3ZhbCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oc3Jj
dmFsLCBkZXN0cHRyKTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2goc3JjdmFsKTsKKyAgICAgICAg
cmVsZWFzZVNjcmF0Y2goZGVzdHB0cik7CisgICAgfQorCiAgICAgRGF0YUxhYmVsMzIgbG9hZDMy
V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CkBAIC05MzMs
OCArMTAzMyw3IEBAIHB1YmxpYzoKICAgICBEYXRhTGFiZWxDb21wYWN0IGxvYWQzMldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgRGF0YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAg
IEFTU0VSVChhZGRyZXNzLm9mZnNldCA8PSBNYXhpbXVtQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNz
T2Zmc2V0KTsKLSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDApOworICAgICAgICBB
U1NFUlQoaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQoYWRkcmVzcy5vZmZzZXQpKTsK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZ0NvbXBhY3QoYWRkcmVzcy5vZmZzZXQgPj4g
MiwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKICAgICB9
CkBAIC05NjcsOSArMTA2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1
bFJlZyhkZXN0Mik7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklE
IHNjcmF0Y2gpCisgICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEKQogICAgIHsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHNybWZw
dWwoc3JjMSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZzdHNmcHVsKChGUFJlZ2lzdGVySUQpKGRl
c3QgKyAxKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkc3JtZnB1bChzcmMyKTsKQEAgLTk4NCwx
NSArMTA4MiwyMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN3YXBE
b3VibGUoRlBSZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZyMikKKyAgICB7CisgICAgICAg
IGlmIChmcjEgIT0gZnIyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mbGRzZnB1bCgoRlBS
ZWdpc3RlcklEKShmcjEgKyAxKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlZ1Jl
ZygoRlBSZWdpc3RlcklEKShmcjIgKyAxKSwgKEZQUmVnaXN0ZXJJRCkoZnIxICsgMSkpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuZnN0c2ZwdWwoKEZQUmVnaXN0ZXJJRCkoZnIyICsgMSkpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZmxkc2ZwdWwoZnIxKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmZtb3ZzUmVnUmVnKGZyMiwgZnIxKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZz
dHNmcHVsKGZyMik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGxvYWRGbG9hdChCYXNl
SW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBSZWdpc3Rl
cklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwg
c2NyKTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3Ip
OwotICAgICAgICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIGlmIChhZGRyZXNz
Lm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7CiAKICAg
ICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWFkcm0oc2NyLCBkZXN0KTsKICAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goc2NyKTsKQEAgLTEwMDIsMTEgKzExMDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1vdmUoYWRk
cmVzcy5pbmRleCwgc2NyKTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
c2NhbGUpLCBzY3IpOwotICAgICAgICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAg
IGlmIChhZGRyZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRy
ZXNzLm9mZnNldCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3Ms
IHNjcik7CiAKICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWFkcm1pbmMoc2NyLCAoRlBSZWdp
c3RlcklEKShkZXN0ICsgMSkpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3Is
IGRlc3QpOwpAQCAtMTAzNSw3ICsxMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERvdWJs
ZShjb25zdCB2b2lkKiBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxv
YWRDb25zdGFudChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihhZGRyZXNzKSwgc2NyKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3IpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5mbW92c1JlYWRybWluYyhzY3IsIChGUFJlZ2lzdGVySUQpKGRlc3QgKyAxKSk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmZtb3ZzUmVhZHJtKHNjciwgZGVzdCk7CiAgICAgICAgIHJlbGVhc2VT
Y3JhdGNoKHNjcik7CkBAIC0xMDQ0LDE1ICsxMTQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3Rv
cmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShhZGRy
ZXNzLmluZGV4LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5z
Y2FsZSksIHNjcik7Ci0gICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAg
aWYgKGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJl
c3Mub2Zmc2V0KSwgc2NyKTsKLQorICAgICAgICBsb2FkRWZmZWN0aXZlQWRkcmVzcyhhZGRyZXNz
LCBzY3IpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm0oc3JjLCBzY3IpOwotCiAg
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAgICAgfQogCkBAIC0xMDcwLDEwICsxMTY1LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKIAotICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMy
KFRydXN0ZWRJbW0zMihhZGRyZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVz
cy5iYXNlLCBzY3IpOwotICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQg
KyA4KSwgc2NyKTsKKyAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgc2NyLCA4
KTsKIAogICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm5kZWMoc3JjLCBzY3IpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm5kZWMoKEZQUmVnaXN0ZXJJRCkoc3JjICsgMSks
IHNjcik7CkBAIC0xMDkxLDYgKzExODMsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
CisgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpKSArIDgsIHNjcik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmZtb3ZzV3JpdGVybmRlYyhzcmMsIHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtb3Zz
V3JpdGVybmRlYygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwgc2NyKTsKKyAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goc2NyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRhZGRS
ZWdSZWcoc3JjLCBkZXN0KTsKQEAgLTExMTMsNiArMTIxNCwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmRzdWJSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1
YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgbW92
ZURvdWJsZShvcDEsIGZzY3JhdGNoKTsKKyAgICAgICAgICAgIHN1YkRvdWJsZShvcDIsIGZzY3Jh
dGNoKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoZnNjcmF0Y2gsIGRlc3QpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOworICAgICAgICAgICAg
c3ViRG91YmxlKG9wMiwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIHN1YkRv
dWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bG9hZERvdWJsZShhZGRyZXNzLCBmc2NyYXRjaCk7CkBAIC0xMTI0LDYgKzEyMzcsMTYgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5kbXVsUmVnUmVnKHNyYywgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAob3AxID09IGRlc3QpCisgICAg
ICAgICAgICBtdWxEb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKG9wMiwgZGVzdCk7CisgICAgICAgICAgICBtdWxEb3VibGUob3AxLCBkZXN0
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbXVsRG91YmxlKEFkZHJlc3MgYWRkcmVz
cywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3Ms
IGZzY3JhdGNoKTsKQEAgLTExMzUsNiArMTI1OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmRkaXZSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJs
ZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgbW92ZURvdWJs
ZShvcDEsIGZzY3JhdGNoKTsKKyAgICAgICAgICAgIGRpdkRvdWJsZShvcDIsIGZzY3JhdGNoKTsK
KyAgICAgICAgICAgIG1vdmVEb3VibGUoZnNjcmF0Y2gsIGRlc3QpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOworICAgICAgICAgICAgZGl2RG91
YmxlKG9wMiwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1v
dmVEb3VibGUoc3JjLCBkZXN0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZG5lZyhkZXN0KTsKKyAg
ICB9CisKICAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mbGRzZnB1bChzcmMp
OwpAQCAtMTE3OSwxMiArMTMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGRlc3QgIT0gU0g0
UmVnaXN0ZXJzOjpyMCkKICAgICAgICAgICAgIG1vdmUoU0g0UmVnaXN0ZXJzOjpyMCwgc2NyMSk7
CiAKLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihU
cnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAgICAgIGFkZDMyKGFkZHJlc3Mu
YmFzZSwgc2NyKTsKLQotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBh
ZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBzY3IpOworICAgICAgICBsb2FkRWZm
ZWN0aXZlQWRkcmVzcyhhZGRyZXNzLCBzY3IpOwogCiAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3Vy
ZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDU4LCBzaXplb2YodWludDMy
X3QpKTsKICAgICAgICAgbW92ZShzY3IsIFNINFJlZ2lzdGVyczo6cjApOwpAQCAtMTQzMCw4ICsx
NTY2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2lnbkV4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkK
LSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwor
ICAgIH0KKworICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKQEAgLTE0NTQsMTUgKzE1OTQsNzQgQEAgcHVibGljOgogICAgIGVu
dW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZU
cnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKICAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQz
MihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBi
cmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKICAgICB7CisgICAgICAgIEp1bXAg
cmVzdWx0OworICAgICAgICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCBpbnRzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9hZENvbnN0YW50KDB4N2ZmZmZmZmYsIGludHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVy
LmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsg
MTIsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BD
T0RFLCAyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigxLCBpbnRzY3IpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3IsIFNINENvbmRp
dGlvbihFcXVhbCkpOworICAgICAgICAgICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgSnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCks
IFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbElt
bThyKDEsIGludHNjcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKGRlc3Qs
IGludHNjciwgU0g0Q29uZGl0aW9uKEVxdWFsKSk7CisgICAgICAgICAgICByZXN1bHQgPSBicmFu
Y2hGYWxzZSgpOworICAgICAgICAgICAgb3V0LmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVsZWFzZVNjcmF0Y2goaW50c2NyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5j
aElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBKdW1wIHJlc3VsdDsKKyAgICAgICAg
UmVnaXN0ZXJJRCBpbnRzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9hZENvbnN0YW50KDB4ODAwMDAwMDAsIGludHNjcik7CisgICAgICAgIGNvbnZlcnRJbnQzMlRv
RG91YmxlKGludHNjciwgZnNjcmF0Y2gpOworICAgICAgICBhZGREb3VibGUoc3JjLCBmc2NyYXRj
aCk7CisgICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihmc2NyYXRjaCwgZGVzdCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1
YWwpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5z
dHJ1Y3Rpb25TaXplICsgMTYsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNo
VHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5icmFuY2goQlRfT1BDT0RFLCA0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04
cigtMSwgaW50c2NyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwg
aW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGxJbW04cigxLCBpbnRzY3IpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VibFJlZ1JlZyhp
bnRzY3IsIGRlc3QpOworICAgICAgICAgICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgSnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCks
IFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbElt
bThyKC0xLCBpbnRzY3IpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0
LCBpbnRzY3IsIFNINENvbmRpdGlvbihFcXVhbCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkbEltbThyKDEsIGludHNjcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVn
KGludHNjciwgZGVzdCk7CisgICAgICAgICAgICByZXN1bHQgPSBicmFuY2hGYWxzZSgpOworICAg
ICAgICAgICAgb3V0LmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFzZVNjcmF0
Y2goaW50c2NyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIHRy
dW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1bChzcmMpOwogICAgICAgICBtX2Fz
c2VtYmxlci5zdHNmcHVsUmVnKGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3Rh
bnQoMHg3ZmZmZmZmZiwgc2NyYXRjaFJlZzMpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVn
UmVnKGRlc3QsIHNjcmF0Y2hSZWczLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgMTQs
IHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RF
LCAyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIHNjcmF0Y2hSZWczKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBzY3JhdGNoUmVnMywgU0g0Q29uZGl0
aW9uKEVxdWFsKSk7Ci0gICAgICAgIHJldHVybiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkKSA/IGJyYW5jaFRydWUoKSA6IGJyYW5jaEZhbHNlKCk7CisgICAgfQorCisgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgaW50c2NyID0gY2xhaW1TY3JhdGNoKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudCgweDgwMDAwMDAwLCBpbnRzY3IpOwor
ICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShpbnRzY3IsIGZzY3JhdGNoKTsKKyAgICAgICAg
YWRkRG91YmxlKHNyYywgZnNjcmF0Y2gpOworICAgICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1
bChmc2NyYXRjaCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoaW50c2NyLCBkZXN0KTsKKyAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goaW50c2NyKTsKICAgICB9CiAKICAgICAvLyBTdGFjayBtYW5pcHVsYXRpb24gb3Bl
cmF0aW9ucwpAQCAtMTUxMSw2ICsxNzEwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIubG9hZENvbnN0YW50KGltbS5hc0ludHB0cigpLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCisgICAgeworICAgICAgICBp
ZiAocmVnMSAhPSByZWcyKSB7CisgICAgICAgICAgICB4b3IzMihyZWcxLCByZWcyKTsKKyAgICAg
ICAgICAgIHhvcjMyKHJlZzIsIHJlZzEpOworICAgICAgICAgICAgeG9yMzIocmVnMSwgcmVnMik7
CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhyaWdodCwgbGVmdCwg
U0g0Q29uZGl0aW9uKGNvbmQpKTsKQEAgLTE2MzMsNyArMTg0MSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgp
OwogCi0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJldF9jYXN0PHVp
bnQzMl90PihsZWZ0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIGNvbXBhcmUzMihyaWdodC5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBjb25kKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CkBAIC0xNjQ2LDIxICsxODU0LDE4IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDgoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCEocmlnaHQubV92YWx1ZSAmIDB4RkZGRkZGMDApKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCBsZWZ0dG1wID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgbW92ZShsZWZ0LmluZGV4
LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIobGVmdC5zY2FsZSksIHNjcik7
CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGxlZnQsIGxlZnR0bXApOwogCi0gICAgICAg
IGlmIChsZWZ0Lm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihsZWZ0Lm9m
ZnNldCksIHNjcik7Ci0gICAgICAgIGFkZDMyKGxlZnQuYmFzZSwgc2NyKTsKLSAgICAgICAgbG9h
ZDgoc2NyLCBzY3IpOwotICAgICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0Lm1fdmFsdWUsIHNjcjEpOwot
ICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3Ix
KTsKKyAgICAgICAgbG9hZDgobGVmdHRtcCwgbGVmdHRtcCk7CisgICAgICAgIFJlZ2lzdGVySUQg
cmlnaHR0bXAgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0
YW50KHJpZ2h0Lm1fdmFsdWUsIHJpZ2h0dG1wKTsKIAotICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgc2NyLCBzY3IxKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBs
ZWZ0dG1wLCByaWdodHRtcCk7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGxlZnR0bXApOworICAg
ICAgICByZWxlYXNlU2NyYXRjaChyaWdodHRtcCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCkBAIC0xNzA0LDYgKzE5MDksOCBAQCBwdWJsaWM6
CiAKICAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisKICAg
ICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKIAogICAgICAgICBtb3ZlKGFk
ZHJlc3MuaW5kZXgsIHNjcik7CkBAIC0xNzM2LDE1ICsxOTQzLDE3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGp1bXAoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3Ig
PSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcik7CisgICAgICAg
IG1fYXNzZW1ibGVyLmptcFJlZyhzY3IpOworICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwor
ICAgIH0KKworICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgaWYgKChh
ZGRyZXNzLm9mZnNldCA8IDApIHx8IChhZGRyZXNzLm9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChhZGRyZXNzLm9mZnNldCwgc2NyKTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoYWRkcmVzcy5iYXNlLCBzY3IpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGFk
ZHJlc3Mub2Zmc2V0ID4+IDIsIGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhhZGRyZXNzLmJhc2UsIHNjcik7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcFJl
ZyhzY3IpOwogCiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC0xNzUyLDYgKzE5NjEs
MjQgQEAgcHVibGljOgogCiAgICAgLy8gQXJpdGhtZXRpYyBjb250cm9sIGZsb3cgb3BlcmF0aW9u
cwogCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAo
Y29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsK
KworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hNdWwzMihjb25kLCBUcnVzdGVkSW1tMzIoLTEpLCBzcmNEZXN0LCBzcmNEZXN0KTsKKworICAg
ICAgICBuZWczMihzcmNEZXN0KTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEZhbHNlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgc3JjRGVz
dCwgRXF1YWwpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxz
ZSgpIDogYnJhbmNoVHJ1ZSgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKQEAgLTE3NjEsNDEgKzE5ODgsNTggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaFRydWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb25kID09IFNpZ25l
ZCkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzcmMsIGRlc3QpOwotICAg
ICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZQorICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRsUmVnUmVnKHNyYywgZGVzdCk7CisKKyAgICAgICAgaWYgKChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXBweihkZXN0KTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOworICAgICAgICAg
ICAgcmV0dXJuIChjb25kID09IFNpZ25lZCkgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgRXF1
YWwpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDog
YnJhbmNoVHJ1ZSgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09
IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKKworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewor
ICAgICAgICAgICAgaWYgKHNyYzEgPT0gZGVzdCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGR2bFJlZ1JlZyhzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIG1vdmUoc3JjMiwgZGVzdCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
dmxSZWdSZWcoc3JjMSwgZGVzdCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoVHJ1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1Jl
ZyhzcmMsIGRlc3QpOwotICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgRXF1YWwpOworICAgICAg
ICBhZGQzMihzcmMxLCBzcmMyLCBkZXN0KTsKIAotICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJv
KSAvLyBOb3RFcXVhbAotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAg
IHJldHVybiBicmFuY2hUcnVlKCk7CisgICAgICAgIGlmICgoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFBvc2l0aXZlT3JaZXJvKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHoo
ZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gKGNvbmQgPT0gU2lnbmVkKSA/IGJyYW5jaEZhbHNl
KCkgOiBicmFuY2hUcnVlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgZGVz
dCwgRXF1YWwpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxz
ZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8
fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOwogCi0gICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgIHJl
dHVybiBicmFuY2hBZGQzMihjb25kLCBzY3JhdGNoUmVnMywgZGVzdCk7CisgICAgICAgIFJlZ2lz
dGVySUQgaW1tdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoaW1tLCBpbW12YWwp
OworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaEFkZDMyKGNvbmQsIGltbXZhbCwgZGVzdCk7
CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGltbXZhbCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOwogCi0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwogCiAgICAgICAgIGlmIChjb25kID09
IE92ZXJmbG93KSB7CiAgICAgICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZzMpOwpAQCAtMTgw
NSwyMSArMjA0OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKIAot
ICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgeworICAgICAgICBpZiAoKGNv
bmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUo
KTsKKyAgICAgICAgICAgIHJldHVybiAoY29uZCA9PSBTaWduZWQpID8gYnJhbmNoRmFsc2UoKSA6
IGJyYW5jaFRydWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBF
cXVhbCk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwKLSAgICAg
ICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgp
OworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJh
bmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQpAQCAtMTgzMCwy
MyArMjA2NiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7CiAg
ICAgICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOwogICAgICAgICBSZWdp
c3RlcklEIGRlc3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGRlc3QubV9wdHIpLCBkZXN0cHRy
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBkZXN0cHRyKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKICAgICAgICAg
aWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVn
UmVnKHNjcmF0Y2hSZWczLCBkZXN0dmFsKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKHNjcmF0
Y2hSZWczLCBkZXN0dmFsKTsKLSAgICAgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewotICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3R2YWwpOwotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjb25kID09IFBvc2l0aXZl
T3JaZXJvKSB7CisgICAgICAgICAgICBpZiAoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQ
b3NpdGl2ZU9yWmVybykpIHsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0
dmFsKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IChjb25kID09IFBvc2l0aXZlT3JaZXJvKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7Ci0gICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdHZhbCwg
U0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCA9PSBa
ZXJvKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhkZXN0dmFsLCBk
ZXN0dmFsKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCAhPSBOb25aZXJvKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKGRl
c3R2YWwsIGRlc3RwdHIpOwpAQCAtMTg3NCwzMCArMjEwNiw1OCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fYXNzZW1i
bGVyLmltdWxsUmVnUmVnKHNyYywgZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c21hY2wo
ZGVzdCk7CisgICAgICAgIG11bDMyKHNyYywgZGVzdCk7CisKICAgICAgICAgaWYgKGNvbmQgPT0g
U2lnbmVkKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlCiAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKICAgICAgICAgICAgIHJldHVybiBicmFu
Y2hGYWxzZSgpOwogICAgICAgICB9CiAKICAgICAgICAgY29tcGFyZTMyKDAsIGRlc3QsIHN0YXRp
Y19jYXN0PFJlbGF0aW9uYWxDb25kaXRpb24+KGNvbmQpKTsKKyAgICAgICAgcmV0dXJuIChjb25k
ID09IE5vblplcm8pID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKKyAgICB9CiAKLSAg
ICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwKKyAgICBKdW1wIGJyYW5jaE11
bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAg
UmVnaXN0ZXJJRCBzY3JzaWduID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgICAgICBSZWdpc3Rl
cklEIG1zYnJlcyA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZG11
bHNsUmVnUmVnKHNyYzEsIHNyYzIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzbWFjbChk
ZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92dChzY3JzaWduKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJ
bW04cigtMSwgc2Nyc2lnbik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHNtYWNoKG1zYnJl
cyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKG1zYnJlcywgc2Nyc2lnbiwg
U0g0Q29uZGl0aW9uKEVxdWFsKSk7CisgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChtc2JyZXMp
OworICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Nyc2lnbik7CiAgICAgICAgICAgICByZXR1
cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworCisgICAgICAgIGlmIChjb25k
ID09IFNpZ25lZCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBh
cmUzMigwLCBkZXN0LCBFcXVhbCk7CisgICAgICAgIHJldHVybiAoY29uZCA9PSBOb25aZXJvKSA/
IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hN
dWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBO
b25aZXJvKSk7CiAKLSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgaWYg
KHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICBpZiAo
c3JjID09IGRlc3QpIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3QpOworICAg
ICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNjcmF0Y2hSZWczLCBk
ZXN0KTsKKyAgICAgICAgbW92ZShpbW0sIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVs
MzIoY29uZCwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTkw
OSw3OCArMjE2OSw5MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKKwogICAgICAgICBpZiAo
Y29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRp
dmUKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICAg
ICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBMZXNzVGhhbik7Ci0gICAgICAgICAgICByZXR1cm4g
YnJhbmNoVHJ1ZSgpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN1YjMy
KHNyYywgZGVzdCk7CiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxh
dGlvbmFsQ29uZGl0aW9uPihjb25kKSk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykg
Ly8gTm90RXF1YWwKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICBy
ZXR1cm4gYnJhbmNoVHJ1ZSgpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBi
cmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoU3Vi
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAKLSAgICAg
ICAgbW92ZShpbW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNv
bmQsIHNjcmF0Y2hSZWczLCBkZXN0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwgPSBjbGFp
bVNjcmF0Y2goKTsKKyAgICAgICAgbW92ZShpbW0sIGltbXZhbCk7CisgICAgICAgIEp1bXAgcmVz
dWx0ID0gYnJhbmNoU3ViMzIoY29uZCwgaW1tdmFsLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNj
cmF0Y2goaW1tdmFsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBKdW1w
IGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIHNj
cmF0Y2hSZWczKTsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShz
cmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc2NyYXRjaFJlZzMs
IGRlc3QpOworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworCisgICAgICAg
IG1vdmUoc3JjLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGltbSwg
ZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIGlmIChzcmMxICE9IGRlc3QpCisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBP
dmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9
PSBOb25aZXJvKSk7CisKKyAgICAgICAgaWYgKHNyYzIgIT0gZGVzdCkgewogICAgICAgICAgICAg
bW92ZShzcmMxLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYzIs
IGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYzIsIGRlc3Qp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAg
ICAgIFJlZ2lzdGVySUQgdG1wdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgICAgICBtb3Zl
KHNyYzEsIHRtcHZhbCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ2bFJlZ1JlZyhzcmMy
LCB0bXB2YWwpOworICAgICAgICAgICAgbW92ZSh0bXB2YWwsIGRlc3QpOworICAgICAgICAgICAg
cmVsZWFzZVNjcmF0Y2godG1wdmFsKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7
CisgICAgICAgIH0KKworICAgICAgICBSZWdpc3RlcklEIHRtcHZhbCA9IGNsYWltU2NyYXRjaCgp
OworICAgICAgICBtb3ZlKHNyYzEsIHRtcHZhbCk7CisgICAgICAgIHN1YjMyKHNyYzIsIHRtcHZh
bCk7CisgICAgICAgIG1vdmUodG1wdmFsLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2go
dG1wdmFsKTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7
CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVs
YXRpb25hbENvbmRpdGlvbj4oY29uZCkpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVy
bykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJh
bmNoT3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKIAorICAgICAgICBvcjMyKHNyYywgZGVzdCk7
CisKICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7Ci0gICAgICAgICAgICBvcjMyKHNyYywg
ZGVzdCk7Ci0gICAgICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRp
b25hbENvbmRpdGlvbj4oTGVzc1RoYW4pKTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVl
KCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2hGYWxzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgb3IzMihzcmMsIGRlc3Qp
OwogICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRp
dGlvbj4oY29uZCkpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vblplcm8pIC8vIE5vdEVxdWFs
Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aFRydWUoKTsKKyAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNoRmFsc2Uo
KSA6IGJyYW5jaFRydWUoKTsKICAgICB9CiAKLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQor
ICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wg
bmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZ0cmNkcm1m
cHVsKHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CisgICAgICAg
IHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwogICAgICAgICBjb252ZXJ0SW50MzJU
b0RvdWJsZShkZXN0LCBmc2NyYXRjaCk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJh
bmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZzY3JhdGNoLCBzcmMpKTsKIAot
ICAgICAgICBpZiAobmVnWmVyb0NoZWNrKSB7Ci0gICAgICAgICAgICBpZiAoZGVzdCA9PSBTSDRS
ZWdpc3RlcnM6OnIwKQotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMCwg
ZGVzdCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZJbW04KDAsIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBs
UmVnUmVnKHNjcmF0Y2hSZWczLCBkZXN0LCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVHJ1ZSgpKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNh
c2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAg
fQogCiAgICAgdm9pZCBuZWczMihSZWdpc3RlcklEIGRzdCkKQEAgLTE5OTgsNiArMjI3MiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNoaWZ0VG1wKTsKICAgICB9CiAKKyAg
ICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAg
ICB1cnNoaWZ0MzIoc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgdXJzaGlm
dDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlu
dCBpbW1NYXNrZWQgPSBpbW0ubV92YWx1ZSAmIDB4MWY7CkBAIC0yMDE3LDkgKzIyOTcsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IHNoaWZ0YW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoc3JjICE9
IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0KKyAgICAgICAgbW92ZShzcmMs
IGRlc3QpOwogICAgICAgICB1cnNoaWZ0MzIoc2hpZnRhbW91bnQsIGRlc3QpOwogICAgIH0KIApA
QCAtMjE1MSw3ICsyNDI5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKLSAgICAg
ICAgU0g0QXNzZW1ibGVyOjpyZXZlcnRKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9u
KCksIGluaXRpYWxWYWx1ZSk7CisgICAgICAgIFNINEFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvTW92
ZShpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCByZWludGVycHJldF9jYXN0PGludD4o
aW5pdGlhbFZhbHVlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0
YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NI
NEFzc2VtYmxlci5oCShyZXZpc2lvbiAxNTM4ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsOCArMzM3LDEw
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgU0g0QXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2Ns
YWltc2NyYXRjaFJlZygweDApCisgICAgICAgICwgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5U
X01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQog
ICAgIHsKLSAgICAgICAgbV9jbGFpbXNjcmF0Y2hSZWcgPSAweDA7CiAgICAgfQogCiAgICAgLy8g
U0g0IGNvbmRpdGlvbiBjb2RlcwpAQCAtMTE4OSwxNCArMTE5MSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwogICAgIH0KIAotICAgIHZvaWQgbW92bEltbThyKGludCBpbW04
LCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoaW1tOCA8PSAxMjcpICYm
IChpbW04ID49IC0xMjgpKTsKLQotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91
cDMoTU9WSU1NX09QQ09ERSwgZHN0LCBpbW04KTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwot
ICAgIH0KLQogICAgIHZvaWQgbG9hZENvbnN0YW50KHVpbnQzMl90IGNvbnN0YW50LCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmICgoKGludCljb25zdGFudCA8PSAweDdmKSAmJiAo
KGludCljb25zdGFudCA+PSAtMHg4MCkpIHsKQEAgLTEzMDgsMTAgKzEzMDIsMjYgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICB9CiAKLSAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCgpCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkK
ICAgICB7CiAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24oKTsK
LSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVs
IHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAg
ICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJl
c3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSBy
ZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQorICAgIHsKKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7
CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNl
dCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAgICAgIG5vcCgp
OworICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQpA
QCAtMTMzMSwxMiArMTM0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjaGFuZ2VQ
Q3JlbGF0aXZlQWRkcmVzcyhpbnQgb2Zmc2V0LCB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIsIHVp
bnQzMl90IG5ld0FkZHJlc3MpCiAgICAgeworICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRy
WzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKICAgICAgICAgdWludDMy
X3QgYWRkcmVzcyA9IChvZmZzZXQgPDwgMikgKyAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KGluc3RydWN0aW9uUHRyKSArIDQpICYofjB4MykpOwogICAgICAgICAqcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdCo+KGFkZHJlc3MpID0gbmV3QWRkcmVzczsKICAgICB9CiAKICAgICBzdGF0aWMg
dWludDMyX3QgcmVhZFBDcmVsYXRpdmVBZGRyZXNzKGludCBvZmZzZXQsIHVpbnQxNl90KiBpbnN0
cnVjdGlvblB0cikKICAgICB7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAw
eGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICB1aW50MzJfdCBhZGRy
ZXNzID0gKG9mZnNldCA8PCAyKSArICgocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oaW5zdHJ1
Y3Rpb25QdHIpICsgNCkgJih+MHgzKSk7CiAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdCo+KGFkZHJlc3MpOwogICAgIH0KQEAgLTEzNzQsMTcgKzEzODYsOSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBicmFmIEByZWcgICAgICAgIGJyYWYgQHJlZwogICAgICAgICAgICAg
bm9wICAgICAgICAgICAgICBub3AKICAgICAgICAgICovCi0gICAgICAgIEFTU0VSVCgoKihpbnN0
cnVjdGlvblB0ciArIDEpICYgQlJBRl9PUENPREUpID09IEJSQUZfT1BDT0RFKTsKLQotICAgICAg
ICBvZmZzZXRCaXRzIC09IDQ7Ci0gICAgICAgIGlmIChvZmZzZXRCaXRzID49IC00MDk2ICYmIG9m
ZnNldEJpdHMgPD0gNDA5NCkgewotICAgICAgICAgICAgKmluc3RydWN0aW9uUHRyID0gZ2V0T3Bj
b2RlR3JvdXA2KEJSQV9PUENPREUsIG9mZnNldEJpdHMgPj4gMSk7Ci0gICAgICAgICAgICAqKCsr
aW5zdHJ1Y3Rpb25QdHIpID0gTk9QX09QQ09ERTsKLSAgICAgICAgICAgIHByaW50QmxvY2tJbnN0
cihpbnN0cnVjdGlvblB0ciAtIDEsIGZyb20ubV9vZmZzZXQsIDIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0
cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAtIDIpOworICAg
ICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZG
UENfT1BDT0RFKTsKKyAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlvblB0clsxXSAmIDB4ZjBmZikg
PT0gQlJBRl9PUENPREUpOworICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3Ry
dWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzIC0gNik7CiAgICAg
ICAgIHByaW50SW5zdHIoKmluc3RydWN0aW9uUHRyLCBmcm9tLm1fb2Zmc2V0ICsgMik7CiAgICAg
fQogCkBAIC0xMzkyLDEyICsxMzk2LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90KiBpbnN0cnVjdGlvblB0ciA9IGdldEluc3RydWN0aW9uUHRyKGNvZGUsIGZyb20ubV9vZmZz
ZXQpOwogICAgICAgICBpbnN0cnVjdGlvblB0ciAtPSAzOworICAgICAgICBBU1NFUlQoKGluc3Ry
dWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKICAgICAg
ICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0
cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4odG8pKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCB3aGVy
ZSwgdm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIg
PSBnZXRJbnN0cnVjdGlvblB0cihjb2RlLCB3aGVyZS5tX29mZnNldCk7CisgICAgICAgIEFTU0VS
VCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUp
OwogICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhm
ZiksIGluc3RydWN0aW9uUHRyLCByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwog
ICAgIH0KIApAQCAtMTQ0MSw3ICsxNDQ3LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKCgo
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oY29uc3RQb29sQWRkcikgLSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Pihsb2FkQWRkcikpICsgaW5kZXggKiA0KSkgPCAxMDI0KTsKIAogICAgICAg
ICBpbnQgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oY29uc3RQb29sQWRkcikg
KyAoaW5kZXggKiA0KSAtICgocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb25Q
dHIpICYgfjB4MDMpICsgNCk7Ci0gICAgICAgIGluc3RydWN0aW9uICY9MHhmMDA7CisgICAgICAg
IGluc3RydWN0aW9uICY9IDB4MGYwMDsKICAgICAgICAgaW5zdHJ1Y3Rpb24gfD0gMHhkMDAwOwog
ICAgICAgICBvZmZzZXQgJj0gMHgwM2ZmOwogICAgICAgICBpbnN0cnVjdGlvbiB8PSAob2Zmc2V0
ID4+IDIpOwpAQCAtMTQ2Miw2ICsxNDY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJl
cGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwgaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVp
bnQxNl90KiBpbnN0cnVjdGlvblB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPih3aGVy
ZSk7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxf
UkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmlu
c3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCB2YWx1ZSk7CiAgICAgfQogCkBA
IC0xNDc3LDYgKzE0ODQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1aW50MTZfdCogaW5z
dHJ1Y3Rpb25QdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSk7CiAgICAgICAg
IGluc3RydWN0aW9uUHRyIC09IDM7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0g
JiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICBjaGFuZ2VQQ3Jl
bGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih0bykpOwogICAgIH0KIApAQCAtMTQ4OSwyMyArMTQ5
NywxNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYwMCkg
PT0gQlRfT1BDT0RFKSB8fCAoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYwMCkgPT0gQkZfT1BDT0RF
KSkgewogICAgICAgICAgICAgb2Zmc2V0Qml0cyAtPSA4OwogICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25QdHIrKzsKKyAgICAgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDAp
ID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICAgICAgY2hhbmdlUENyZWxhdGl2
ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0
Qml0cyk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbiA9IChCUkFGX09QQ09ERSB8ICgqaW5zdHJ1
Y3Rpb25QdHIrKyAmIDB4ZjAwKSk7CiAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb25QdHIgPSBpbnN0
cnVjdGlvbjsKICAgICAgICAgICAgIHByaW50QmxvY2tJbnN0cihpbnN0cnVjdGlvblB0ciwgcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdD4oZnJvbSkgKyAxLCAzKTsKKyAgICAgICAgICAgIGNhY2hl
Rmx1c2goaW5zdHJ1Y3Rpb25QdHIsIHNpemVvZihTSDRXb3JkKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQoKCooaW5zdHJ1Y3Rpb25QdHIgKyAxKSAm
IEJSQUZfT1BDT0RFKSA9PSBCUkFGX09QQ09ERSk7Ci0gICAgICAgIG9mZnNldEJpdHMgLT0gNDsK
LSAgICAgICAgaWYgKG9mZnNldEJpdHMgPj0gLTQwOTYgJiYgb2Zmc2V0Qml0cyA8PSA0MDk0KSB7
Ci0gICAgICAgICAgICAqaW5zdHJ1Y3Rpb25QdHIgPSBnZXRPcGNvZGVHcm91cDYoQlJBX09QQ09E
RSwgb2Zmc2V0Qml0cyA+PiAxKTsKLSAgICAgICAgICAgICooKytpbnN0cnVjdGlvblB0cikgPSBO
T1BfT1BDT0RFOwotICAgICAgICAgICAgcHJpbnRCbG9ja0luc3RyKGluc3RydWN0aW9uUHRyIC0g
MiwgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oZnJvbSksIDIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0
cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAtIDIpOworICAg
ICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzFdICYgMHhmMGZmKSA9PSBCUkFGX09QQ09ERSk7
CisgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKCgqaW5zdHJ1Y3Rpb25QdHIgJiAweGZm
KSwgaW5zdHJ1Y3Rpb25QdHIsIG9mZnNldEJpdHMgLSA2KTsKICAgICAgICAgcHJpbnRJbnN0cigq
aW5zdHJ1Y3Rpb25QdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGZyb20pKTsKICAgICB9
CiAKQEAgLTE1MjAsMzIgKzE1MjIsMzcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU0g0V29y
ZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PFNINFdvcmQqPihpbnN0cnVjdGlvblN0
YXJ0KTsKICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgKyAy
ICogc2l6ZW9mKFNINFdvcmQpKTsKLSAgICAgICAgaW50IG5iaW5zdCA9IDA7CiAKLSAgICAgICAg
aWYgKChkaWZmZXJlbmNlID49IC00MDk2KSAmJiAoZGlmZmVyZW5jZSA8PSA0MDk0KSkgewotICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBnZXRPcGNvZGVHcm91cDYoQlJBX09QQ09ERSwgZGlm
ZmVyZW5jZSA+PiAxKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uWzFdID0gTk9QX09QQ09ERTsK
LSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihTSDRXb3JkKSAqIDIp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoKGluc3RydWN0aW9uWzBdICYgMHhm
MDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKSB7CisgICAgICAgICAgICBpbnN0cnVjdGlv
blsxXSA9IChCUkFGX09QQ09ERSB8IChpbnN0cnVjdGlvblswXSAmIDB4MGYwMCkpOworICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSBOT1BfT1BDT0RFOworICAgICAgICAgICAgY2FjaGVGbHVz
aCgmaW5zdHJ1Y3Rpb25bMV0sIDIgKiBzaXplb2YoU0g0V29yZCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBnZXRPcGNvZGVHcm91cDMoTU9WTF9SRUFE
X09GRlBDX09QQ09ERSwgU0g0UmVnaXN0ZXJzOjpyMTMsIDEpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25bMV0gPSBnZXRPcGNvZGVHcm91cDIoQlJBRl9PUENPREUsIFNINFJlZ2lzdGVyczo6cjEz
KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uWzJdID0gTk9QX09QQ09ERTsKKyAgICAgICAgICAg
IGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIDMgKiBzaXplb2YoU0g0V29yZCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0KytdID0gZ2V0T3Bjb2RlR3JvdXAzKE1PVkxf
UkVBRF9PRkZQQ19PUENPREUsIHNjcmF0Y2hSZWcyLCAxKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25b
bmJpbnN0KytdID0gZ2V0T3Bjb2RlR3JvdXAyKEpNUF9PUENPREUsIHNjcmF0Y2hSZWcyKTsKLSAg
ICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0KytdID0gTk9QX09QQ09ERTsKLQotICAgICAgICBpZiAo
IShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpbnN0cnVjdGlvbikgJiAzKSkKLSAgICAgICAg
ICAgIGluc3RydWN0aW9uW25iaW5zdCsrXSA9IE5PUF9PUENPREU7Ci0KLSAgICAgICAgaW5zdHJ1
Y3Rpb25bbmJpbnN0KytdID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4odG8pICYgMHhmZmZm
OwotICAgICAgICBpbnN0cnVjdGlvbltuYmluc3QrK10gPSByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkPih0bykgPj4gMTY7Ci0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihT
SDRXb3JkKSAqIG5iaW5zdCk7CisgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKGluc3Ry
dWN0aW9uWzBdICYgMHgwMGZmLCBpbnN0cnVjdGlvbiwgZGlmZmVyZW5jZSAtIDIpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9p
ZCAqaW1tcHRyKQorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgaW50IGltbSkKICAgICB7CiAgICAgICAgIFNINFdvcmQgKmluc24gPSByZWlu
dGVycHJldF9jYXN0PFNINFdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICAgQVNTRVJU
KChpbnNuWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKLSAgICAgICAg
Y2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoaW5zblswXSAmIDB4MDBmZiwgaW5zbiwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4oaW1tcHRyKSk7CisKKyAgICAgICAgaWYgKChpbnNuWzJdICYgMHhm
MDAwKSA9PSBCUkFfT1BDT0RFKQorICAgICAgICAgICAgaW5zblsxXSA9IGdldE9wY29kZUdyb3Vw
NihCUkFfT1BDT0RFLCAoaW5zblsyXSAmIDB4MGZmZikgKyAxKTsKKyAgICAgICAgZWxzZSBpZiAo
KGluc25bMF0gJiAweDAwZmYpID09IDEpCisgICAgICAgICAgICBpbnNuWzFdID0gZ2V0T3Bjb2Rl
R3JvdXA2KEJSQV9PUENPREUsIDMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnNuWzFd
ID0gTk9QX09QQ09ERTsKKworICAgICAgICBpbnNuWzJdID0gTk9QX09QQ09ERTsKKyAgICAgICAg
Y2FjaGVGbHVzaCgmaW5zblsxXSwgMiAqIHNpemVvZihTSDRXb3JkKSk7CisKKyAgICAgICAgY2hh
bmdlUENyZWxhdGl2ZUFkZHJlc3MoaW5zblswXSAmIDB4MDBmZiwgaW5zbiwgaW1tKTsKICAgICB9
CiAKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFzc2VtYmxlckxhYmVs
IHRvLCBKdW1wVHlwZSB0eXBlID0gSnVtcEZhcikKQEAgLTE1NTgsOCArMTU2NSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgaW50IG9mZnNldEJpdHM7CiAKICAgICAgICAgaWYgKHR5cGUgPT0gSnVtcE5l
YXIpIHsKLSAgICAgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb24gPT0gIEJUX09QQ09ERSkgfHwg
KGluc3RydWN0aW9uID09IEJGX09QQ09ERSkgfHwgKGluc3RydWN0aW9uID09IEJSQV9PUENPREUp
KTsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoY29kZVNpemUoKSAtIGZyb20ubV9vZmZzZXQp
IC0gNDsKKyAgICAgICAgICAgIEFTU0VSVCgoKChpbnN0cnVjdGlvbiA9PSBCVF9PUENPREUpIHx8
IChpbnN0cnVjdGlvbiA9PSBCRl9PUENPREUpKSAmJiAob2Zmc2V0ID49IC0yNTYpICYmIChvZmZz
ZXQgPD0gMjU0KSkKKyAgICAgICAgICAgICAgICB8fCAoKGluc3RydWN0aW9uID09IEJSQV9PUENP
REUpICYmIChvZmZzZXQgPj0gLTQwOTYpICYmIChvZmZzZXQgPD0gNDA5NCkpKTsKICAgICAgICAg
ICAgICppbnN0cnVjdGlvblB0cisrID0gaW5zdHJ1Y3Rpb24gfCAob2Zmc2V0ID4+IDEpOwogICAg
ICAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIsIGZyb20ubV9vZmZzZXQgKyAyKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NzQsNyArMTU4Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG9mZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0KSAtIDg7CiAg
ICAgICAgICAgICBpbnN0cnVjdGlvbiBePSAweDAyMDI7CiAgICAgICAgICAgICAqaW5zdHJ1Y3Rp
b25QdHIrKyA9IGluc3RydWN0aW9uOwotICAgICAgICAgICAgaWYgKCgqaW5zdHJ1Y3Rpb25QdHIg
JiAweGYwMDApID09IDB4ZTAwMCkgeworICAgICAgICAgICAgaWYgKCgqaW5zdHJ1Y3Rpb25QdHIg
JiAweGYwMDApID09IE1PVklNTV9PUENPREUpIHsKICAgICAgICAgICAgICAgICB1aW50MzJfdCog
YWRkciA9IGdldExkckltbUFkZHJlc3NPblBvb2woaW5zdHJ1Y3Rpb25QdHIsIG1fYnVmZmVyLnBv
b2xBZGRyZXNzKCkpOwogICAgICAgICAgICAgICAgICphZGRyID0gb2Zmc2V0Qml0czsKICAgICAg
ICAgICAgIH0gZWxzZQpAQCAtMTU5MCwyMyArMTU5OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
IG5vcCAgICAgICAgICAgICAgIG5vcAogICAgICAgICAqLwogICAgICAgICBBU1NFUlQoKCooaW5z
dHJ1Y3Rpb25QdHIgKyAxKSAmIEJSQUZfT1BDT0RFKSA9PSBCUkFGX09QQ09ERSk7Ci0gICAgICAg
IG9mZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0KSAtIDQ7Ci0gICAgICAg
IGlmIChvZmZzZXRCaXRzID49IC00MDk2ICYmIG9mZnNldEJpdHMgPD0gNDA5NCkgewotICAgICAg
ICAgICAgKmluc3RydWN0aW9uUHRyID0gZ2V0T3Bjb2RlR3JvdXA2KEJSQV9PUENPREUsIG9mZnNl
dEJpdHMgPj4gMSk7Ci0gICAgICAgICAgICAqKCsraW5zdHJ1Y3Rpb25QdHIpID0gTk9QX09QQ09E
RTsKLSAgICAgICAgICAgIHByaW50QmxvY2tJbnN0cihpbnN0cnVjdGlvblB0ciAtIDEsIGZyb20u
bV9vZmZzZXQsIDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIG9m
ZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0KSAtIDY7CiAKICAgICAgICAg
aW5zdHJ1Y3Rpb24gPSAqaW5zdHJ1Y3Rpb25QdHI7Ci0gICAgICAgIGlmICgoaW5zdHJ1Y3Rpb24g
JiAweGYwMDApID09IDB4ZTAwMCkgeworICAgICAgICBpZiAoKGluc3RydWN0aW9uICYgMHhmMDAw
KSA9PSBNT1ZJTU1fT1BDT0RFKSB7CiAgICAgICAgICAgICB1aW50MzJfdCogYWRkciA9IGdldExk
ckltbUFkZHJlc3NPblBvb2woaW5zdHJ1Y3Rpb25QdHIsIG1fYnVmZmVyLnBvb2xBZGRyZXNzKCkp
OwotICAgICAgICAgICAgKmFkZHIgPSBvZmZzZXRCaXRzIC0gMjsKKyAgICAgICAgICAgICphZGRy
ID0gb2Zmc2V0Qml0czsKICAgICAgICAgICAgIHByaW50SW5zdHIoKmluc3RydWN0aW9uUHRyLCBm
cm9tLm1fb2Zmc2V0ICsgMik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGlu
c3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzIC0gMik7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rp
b25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOworICAgICAgICBj
aGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0
aW9uUHRyLCBvZmZzZXRCaXRzKTsKICAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIs
IGZyb20ubV9vZmZzZXQgKyAyKTsKICAgICB9CiAKQEAgLTE2OTksNiArMTcwMiw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29kZVNpemUoKTsg
fQogCisgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09m
ZnNldCgpOyB9CisKICNpZmRlZiBTSDRfQVNTRU1CTEVSX1RSQUNJTkcKICAgICBzdGF0aWMgdm9p
ZCBwcmludEluc3RyKHVpbnQxNl90IG9wYywgdW5zaWduZWQgc2l6ZSwgYm9vbCBpc2RvdWJsZUlu
c3QgPSB0cnVlKQogICAgIHsKQEAgLTIyMzIsNiArMjIzNyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU0g0QnVmZmVyIG1fYnVmZmVyOwogICAgIGludCBtX2NsYWltc2NyYXRjaFJlZzsKKyAg
ICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1Mzg4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsMjMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgog
CisjaWYgQ1BVKFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3RzcHIocmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZHNwcihyZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBsb2FkUHRyTGlua1JlZyhhZGRyZXNzKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpA
QCAtMjExLDExICsyMjgsMTEgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
ICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7
CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKKyNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkKICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIEdQUlJlZyBzY3Jh
dGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICNlbGlmIENQVShYODYpCiAgICAg
ICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwogICAgICAgICBwb2tlKFRy
dXN0ZWRJbW1QdHIoYXJndW1lbnQpLCAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTUzODgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjA5LDYg
KzYwOSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHBva2UoYXJnMywgNCk7CiAgICAg
fQorI2VsaWYgQ1BVKFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9
IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6
YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFy
Z3VtZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZv
Ojphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAg
eworICAgICAgICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAjZWxz
ZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5k
aWYKQEAgLTg3NCw2ICs5MDUsMTMgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFy
ZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgJKHJldmlzaW9uIDE1Mzg4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsNiArMjM4LDY5IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCisjaWYgQ1BVKFNINCkKKworY2xh
c3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9
IFNINFJlZ2lzdGVyczo6ZHIwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IFNI
NFJlZ2lzdGVyczo6ZHIyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IFNINFJl
Z2lzdGVyczo6ZHI0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IFNINFJlZ2lz
dGVyczo6ZHI2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IFNINFJlZ2lzdGVy
czo6ZHI4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFNINFJlZ2lzdGVyczo6
ZHIxMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBTSDRSZWdp
c3RlcnM6OmRyMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gU0g0
UmVnaXN0ZXJzOjpkcjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBT
SDRSZWdpc3RlcnM6OmRyNjsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJ
bmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1Qx
LCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJU
KGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJ
bmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAg
ICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRl
eEZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgMSwgSW52
YWxpZEluZGV4LAorICAgICAgICAgICAgMiwgSW52YWxpZEluZGV4LCAzLCBJbnZhbGlkSW5kZXgs
CisgICAgICAgICAgICA0LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRleCwKKyAgICAgICAg
ICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVy
W3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1l
KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcp
OworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciog
bmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJkcjAiLCAiZnIxIiwgImRyMiIs
ICJmcjMiLAorICAgICAgICAgICAgImRyNCIsICJmcjUiLCAiZHI2IiwgImZyNyIsCisgICAgICAg
ICAgICAiZHI4IiwgImZyOSIsICJkcjEwIiwgImZyMTEiLAorICAgICAgICAgICAgImRyMTIiLCAi
ZnIxMyIsICJkcjE0IiwgImZyMTUiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9y
UmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBS
ZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZv
LmgJKHJldmlzaW9uIDE1Mzg4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTYsNiArNTU2LDc1IEBAIHByaXZhdGU6CiAKICNl
bmRpZgogCisjaWYgQ1BVKFNINCkKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lz
dGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAx
MDsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMCA9IFNINFJlZ2lzdGVyczo6cjA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MSA9IFNINFJlZ2lzdGVyczo6cjE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFNI
NFJlZ2lzdGVyczo6cjI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IFNINFJlZ2lz
dGVyczo6cjEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBTSDRSZWdpc3RlcnM6
OnI0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBTSDRSZWdpc3RlcnM6OnI1Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDYgPSBTSDRSZWdpc3RlcnM6OnI2OworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBTSDRSZWdpc3RlcnM6OnI3OworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDggPSBTSDRSZWdpc3RlcnM6OnI4OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDkgPSBTSDRSZWdpc3RlcnM6OnI5OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBt
YXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVz
dWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3Vs
dFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBTSDRSZWdpc3RlcnM6OmZwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRl
IHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1
ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSByZWdU
NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IHJlZ1Q1OworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gcmVnVDY7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjMgPSByZWdUNzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjAgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBy
ZWdUODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdUOTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOworCisgICAgc3RhdGljIEdQUlJl
ZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4
IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lz
dGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCBy
ZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4LCByZWdUOSB9OworICAgICAg
ICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVu
c2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNCk7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE0XSA9IHsgMCwgMSwgMiwgSW52YWxp
ZEluZGV4LCA0LCA1LCA2LCA3LCA4LCA5LCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4IH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0
ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInIwIiwgInIxIiwgInIyIiwg
InIzIiwgInI0IiwgInI1IiwgInI2IiwgInI3IiwKKyAgICAgICAgICAgICJyOCIsICJyOSIsICJy
MTAiLCAicjExIiwgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKKyAgICAgICAgfTsKKyAgICAg
ICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNl
bmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJh
dG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1Mzg4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2Miw2ICsyNjIsNTMgQEAKICAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24p
ICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCiAgICAgKTsKIAorI2VsaWYgQ09NUElMRVIoR0ND
KSAmJiBDUFUoU0g0KQorCisjZGVmaW5lIFNINF9TQ1JBVENIX1JFR0lTVEVSICJyMTEiCisKKyNk
ZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwK
KyAgICBhc20oIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikgIlxuIiBcCisg
ICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAorICAgICAgICAic3RzIHByLCBy
NSIgIlxuIiBcCisgICAgICAgICJicmEgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRo
UmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgICAgICJub3AiICJcbiIgXAorICAgICk7CisKKyNk
ZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShmdW5jdGlvbikg
XAorICAgIGFzbSggXAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZnVuY3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwK
KyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAgICJzdHMgcHIs
IHI3IiAiXG4iIFwKKyAgICAgICAgIm1vdi5sIDJmLCAiIFNINF9TQ1JBVENIX1JFR0lTVEVSICJc
biIgXAorICAgICAgICAiYnJhZiAiIFNINF9TQ1JBVENIX1JFR0lTVEVSICJcbiIgXAorICAgICAg
ICAibm9wIiAiXG4iIFwKKyAgICAgICAgIjE6IC5iYWxpZ24gNCIgIlxuIiBcCisgICAgICAgICIy
OiAubG9uZyAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhSZXR1cm5BZGRyZXNzLTFi
IiAiXG4iIFwKKyAgICApOworCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5f
QUREUkVTUyhmdW5jdGlvbiwgb2Zmc2V0LCBzY3JhdGNoKSBcCisgICAgYXNtKCBcCisgICAgIi50
ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIlxuIiBc
CisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVu
Y3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAgInN0cyBwciwgIiBzY3JhdGNoICJcbiIgXAorICAg
ICAgICAibW92LmwgIiBzY3JhdGNoICIsIEAoIiBTVFJJTkdJWkUob2Zmc2V0KSAiLCByMTUpIiAi
XG4iIFwKKyAgICAgICAgIm1vdi5sIDJmLCAiIHNjcmF0Y2ggIlxuIiBcCisgICAgICAgICJicmFm
ICIgc2NyYXRjaCAiXG4iIFwKKyAgICAgICAgIm5vcCIgIlxuIiBcCisgICAgICAgICIxOiAuYmFs
aWduIDQiICJcbiIgXAorICAgICAgICAiMjogLmxvbmcgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rp
b24pICJXaXRoUmV0dXJuQWRkcmVzcy0xYiIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5D
VElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1bmN0aW9uKSAgRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCAwLCBTSDRfU0NSQVRDSF9SRUdJ
U1RFUikKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0ko
ZnVuY3Rpb24pIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwg
NCwgU0g0X1NDUkFUQ0hfUkVHSVNURVIpCisKICNlbmRpZgogCiAjZGVmaW5lIFBfRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwKQEAgLTE4NTksOCArMTkw
NiwxMSBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6CiAgICAgImFk
ZCAjLTQwLCByMTQiICJcbiIKICAgICAibW92LmwgQHIxNCwgcjE0IiAiXG4iCiAgICAgIm1vdiBy
MTQsIHI0IiAiXG4iCi0gICAgImJyYSAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorICAgICJtb3YubCAyZiwgIiBTSDRfU0NSQVRDSF9S
RUdJU1RFUiAiXG4iCisgICAgImJyYWYgIiBTSDRfU0NSQVRDSF9SRUdJU1RFUiAiXG4iCiAgICAg
Im5vcCIgIlxuIgorICAgICIxOiAuYmFsaWduIDQiICJcbiIKKyAgICAiMjogLmxvbmcgIiBMT0NB
TF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICItMWJcbiIK
ICk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTUzODgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUxLDYgKzEzNTEs
MTQgQEAgcHVibGljOgogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRwogI2VuZGlmCiAKKy8v
IEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHRoYXQgY2Fubm90IGJlIHB1dCBoYWxm
IGluIGFuIGFyZ3VtZW50IHJlZ2lzdGVyIGFuZCBoYWxmIG9uIHN0YWNrIHdoZW4gdXNpbmcgU0g0
IGFyY2hpdGVjdHVyZS4KKy8vIFRvIGF2b2lkIHRoaXMsIGxldCdzIG9jY3VweSB0aGUgNHRoIGFy
Z3VtZW50IHJlZ2lzdGVyIChyNykgd2l0aCBhIGR1bW15IGFyZ3VtZW50IHdoZW4gbmVjZXNzYXJ5
LgorI2lmIENQVShTSDQpCisjZGVmaW5lIFNINF8zMkJJVF9EVU1NWV9BUkcgICAgICBUcnVzdGVk
SW1tMzIoMCksCisjZWxzZQorI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlfQVJHCisjZW5kaWYKKwog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9ERkdPcGVyYXRpb25fRCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgcHJlcGFy
ZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTUwNSwyMiArMTUxMywyMiBAQCBwdWJsaWM6CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcg
YXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRh
ZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0pCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMlRhZywg
R1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgaW1tLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIApA
QCAtMTU1OCwxOCArMTU2NiwxOCBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9B
UkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FT1pKIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVn
IGFyZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmcz
VGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
REZHT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMy
QklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCkBAIC0xNTgwLDYg
KzE1ODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjdW5kZWYgRUFCSV8zMkJJVF9EVU1NWV9BUkcK
KyN1bmRlZiBTSDRfMzJCSVRfRFVNTVlfQVJHCiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCkBAIC0x
NjI5LDcgKzE2MzgsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBT
KQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykgJiYgIUNQ
VShTSDQpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAg
IC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1bmN0aW9u
LiBUaGUgaGVscGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAko
cmV2aXNpb24gMTUzODgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOCBAQCB2b2lkIHBlcmZvcm1QbGF0Zm9y
bVNwZWNpZmljSklUQXNzZXJ0aW9uCiAgICAgcGVyZm9ybUFSTUpJVEFzc2VydGlvbnMoKTsKICNl
bGlmIENQVShNSVBTKQogICAgIHBlcmZvcm1NSVBTSklUQXNzZXJ0aW9ucygpOworI2VsaWYgQ1BV
KFNINCkKKyAgICBwZXJmb3JtU0g0SklUQXNzZXJ0aW9ucygpOwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1Mzg4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2
LDE1ICsyNjYsMjEgQEAgc3RydWN0IEpJVFN0YWNrRnJhbWUgewogICAgIEpJVFN0dWJBcmcgYXJn
c1s2XTsKIAogICAgIFJldHVybkFkZHJlc3NQdHIgdGh1bmtSZXR1cm5BZGRyZXNzOworCisgICAg
dm9pZCogc2F2ZWRSODsKKyAgICB2b2lkKiBzYXZlZFI5OwogICAgIHZvaWQqIHNhdmVkUjEwOwog
ICAgIHZvaWQqIHNhdmVkUjExOwogICAgIHZvaWQqIHNhdmVkUjEzOwogICAgIHZvaWQqIHNhdmVk
UlBSOwogICAgIHZvaWQqIHNhdmVkUjE0OwogCisgICAgLy8gVGhlc2UgYXJndW1lbnRzIGFyZSBw
YXNzZWQgaW4gcjUsIHI2IGFuZCByNy4KICAgICBKU1N0YWNrKiBzdGFjazsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZTsKICAgICBKU1ZhbHVlKiBleGNlcHRpb247CisKKyAgICAvLyBUaGVzZSBh
cmd1bWVudHMgYXJlIHBhc3NlZCBvbiB0aGUgc3RhY2suCiAgICAgdm9pZCogdW51c2VkMTsKICAg
ICBWTSogdm07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNTSDQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0LmgJ
KHJldmlzaW9uIDE1Mzg4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNT
SDQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorI2RlZmluZSBUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQgNTYKKyNkZWZpbmUgU0FWRURf
UjhfT0ZGU0VUIDYwCisKICNkZWZpbmUgU1lNQk9MX1NUUklORyhuYW1lKSAjbmFtZQogLyogY29k
ZSAocjQpLCBKU1N0YWNrKiAocjUpLCBDYWxsRnJhbWUqIChyNiksIHZvaWQqIHVudXNlZDEgKHI3
KSwgdm9pZCogdW51c2VkMihzcCksIFZNIChzcCkqLwogCkBAIC01NywxMSArNjAsMTUgQEAgU1lN
Qk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJtb3YubCByMTMsIEAtcjE1
IiAiXG4iCiAgICAgIm1vdi5sIHIxMSwgQC1yMTUiICJcbiIKICAgICAibW92LmwgcjEwLCBALXIx
NSIgIlxuIgotICAgICJhZGQgIy02MCwgcjE1IiAiXG4iCisgICAgIm1vdi5sIHI5LCBALXIxNSIg
IlxuIgorICAgICJtb3YubCByOCwgQC1yMTUiICJcbiIKKyAgICAiYWRkICMtIiBTVFJJTkdJWkVf
VkFMVUVfT0YoU0FWRURfUjhfT0ZGU0VUKSAiLCByMTUiICJcbiIKICAgICAibW92IHI2LCByMTQi
ICJcbiIKICAgICAianNyIEByNCIgIlxuIgogICAgICJub3AiICJcbiIKLSAgICAiYWRkICM2MCwg
cjE1IiAiXG4iCisgICAgImFkZCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUjhfT0ZGU0VU
KSAiLCByMTUiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjgiICJcbiIKKyAgICAibW92LmwgQHIx
NSsscjkiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEwIiAiXG4iCiAgICAgIm1vdi5sIEByMTUr
LHIxMSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTMiICJcbiIKQEAgLTg0LDcgKzkxLDkgQEAg
U1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAogICAgICJtb3YubCBAKHIw
LHIxMikscjExIiAiXG4iCiAgICAgImpzciBAcjExIiAiXG4iCiAgICAgIm5vcCIgIlxuIgotICAg
ICJhZGQgIzYwLCByMTUiICJcbiIKKyAgICAiYWRkICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZF
RF9SOF9PRkZTRVQpICIsIHIxNSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyOCIgIlxuIgorICAg
ICJtb3YubCBAcjE1KyxyOSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTAiICJcbiIKICAgICAi
bW92LmwgQHIxNSsscjExIiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxuIgpAQCAtMTE4
LDcgKzEyNyw5IEBAIGFzbSB2b2xhdGlsZSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlP
cFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAi
XG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCi0gICAgImFk
ZCAjNjAsIHIxNSIgIlxuIgorICAgICJhZGQgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1I4
X09GRlNFVCkgIiwgcjE1IiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHI4IiAiXG4iCisgICAgIm1v
di5sIEByMTUrLHI5IiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMCIgIlxuIgogICAgICJtb3Yu
bCBAcjE1KyxyMTEiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEzIiAiXG4iCkBAIC0xMzksMTIg
KzE1MCwxMiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAgICAg
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAogICAgIFNZTUJPTF9TVFJJ
TkcoY3RpXyMjb3ApICI6IiAiXG4iIFwKICAgICAic3RzIHByLCByMTEiICJcbiIgXAotICAgICJt
b3YubCByMTEsIEAoMHgzOCwgcjE1KSIgIlxuIiBcCisgICAgIm1vdi5sIHIxMSwgQCgiIFNUUklO
R0laRV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICIsIHIxNSkiICJcbiIg
XAogICAgICJtb3YubCAuTDIiU1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSIscjAi
ICJcbiIgXAogICAgICJtb3YubCBAKHIwLHIxMikscjExIiAiXG4iIFwKICAgICAianNyIEByMTEi
ICJcbiIgXAogICAgICJub3AiICJcbiIgXAotICAgICJtb3YubCBAKDB4MzgsIHIxNSksIHIxMSAi
ICJcbiIgXAorICAgICJtb3YubCBAKCIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9B
RERSRVNTX09GRlNFVCkgIiwgcjE1KSwgcjExICIgIlxuIiBcCiAgICAgImxkcyByMTEsIHByICIg
IlxuIiBcCiAgICAgInJ0cyIgIlxuIiBcCiAgICAgIm5vcCIgIlxuIiBcCkBAIC0xNTMsNiArMTY0
LDEyIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIKICAgICApOyBc
CiAgICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pCiAK
K3N0YXRpYyB2b2lkIHBlcmZvcm1TSDRKSVRBc3NlcnRpb25zKCkKK3sKKyAgICBBU1NFUlQoT0JK
RUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB0aHVua1JldHVybkFkZHJlc3MpID09
IFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRP
RihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgc2F2ZWRSOCkgPT0gU0FWRURfUjhfT0ZGU0VUKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKSVRTdHVic1NINF9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTM4
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2NCwxNCArMTY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJz
OjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVy
SUQgZnBSZWdUMCAgPSBTSDRSZWdpc3RlcnM6OmZyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmcFJlZ1QxICA9IFNINFJlZ2lzdGVyczo6ZnIyOwotICAgICAgICBzdGF0aWMg
Y29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgID0gU0g0UmVnaXN0ZXJzOjpmcjQ7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyAgPSBTSDRSZWdpc3RlcnM6OmZyNjsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ICA9IFNINFJlZ2lzdGVy
czo6ZnI4OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDUgID0gU0g0
UmVnaXN0ZXJzOjpmcjEwOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVn
VDYgID0gU0g0UmVnaXN0ZXJzOjpmcjEyOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3Rl
cklEIGZwUmVnVDcgID0gU0g0UmVnaXN0ZXJzOjpmcjE0OworICAgICAgICBzdGF0aWMgY29uc3Qg
RlBSZWdpc3RlcklEIGZwUmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpkcjI7CisgICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFNINFJlZ2lzdGVyczo6ZHI0Owor
ICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBTSDRSZWdpc3RlcnM6
OmRyNjsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ID0gU0g0UmVn
aXN0ZXJzOjpkcjg7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUNSA9
IFNINFJlZ2lzdGVyczo6ZHIxMDsKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9u
IHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9zaDQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vc2g0LnJiCShyZXZpc2lvbiAxNTM4ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zaDQucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw4ICsyMTIsOCBAQCBlbmQK
ICMKICMgd2lsbCBiZWNvbWU6CiAjCi0jIGFkZGkgZm9vLCBiYXIsIHRtcAotIyBicyB0bXAsIGJh
egorIyBhZGRpIGZvbywgYmFyCisjIGJzIGJhciwgYmF6CiAjCiAKIGRlZiBzaDRMb3dlclNpbXBs
ZUJyYW5jaE9wcyhsaXN0KQpAQCAtNDA1LDcgKzQwNSw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAg
ICAgICAgICB8IG5vZGUsIGFkZHJlc3MgfAogICAgICAgICAgICAgaWYgYWRkcmVzcy5pc19hPyBB
ZGRyZXNzCiAgICAgICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgICAg
IHdoZW4gImJ0YnoiLCAiYnRibnoiLCAiY2JlcSIsICJiYmVxIiwgImJibmVxIiwgImJiYiIsICJs
b2FkYiIKKyAgICAgICAgICAgICAgICB3aGVuICJidGJ6IiwgImJ0Ym56IiwgImNiZXEiLCAiYmJl
cSIsICJiYm5lcSIsICJiYmIiLCAibG9hZGIiLCAic3RvcmViIgogICAgICAgICAgICAgICAgICAg
ICAoMC4uMTUpLmluY2x1ZGU/IGFkZHJlc3Mub2Zmc2V0LnZhbHVlIGFuZAogICAgICAgICAgICAg
ICAgICAgICAgICAgKChub2RlLm9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5vZGUu
b3BlcmFuZHNbMF0uc2g0T3BlcmFuZCA9PSAicjAiKSBvcgogICAgICAgICAgICAgICAgICAgICAg
ICAgIChub2RlLm9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5vZGUub3BlcmFuZHNb
MV0uc2g0T3BlcmFuZCA9PSAicjAiKSkKQEAgLTQ0MSwyNiArNDQxLDE1IEBAIGRlZiBzaDRPcGVy
YW5kcyhvcGVyYW5kcykKICAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuc2g0T3BlcmFuZH0uam9pbigi
LCAiKQogZW5kCiAKLWRlZiBlbWl0U0g0TG9hZDMyKGNvbnN0YW50LCBkZXN0KQotICAgIG91dGxh
YmVsID0gTG9jYWxMYWJlbC51bmlxdWUoImxvYWQzMm91dCIpCi0gICAgY29uc3RsYWJlbCA9IExv
Y2FsTGFiZWwudW5pcXVlKCJsb2FkMzJjb25zdCIpCi0gICAgJGFzbS5wdXRzICJtb3YubCAje0xv
Y2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGNvbnN0bGFiZWwpLmFzbUxhYmVsfSwg
I3tkZXN0LnNoNE9wZXJhbmR9IgotICAgICRhc20ucHV0cyAiYnJhICN7TG9jYWxMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgb3V0bGFiZWwpLmFzbUxhYmVsfSIKLSAgICAkYXNtLnB1dHMg
Im5vcCIKLSAgICAkYXNtLnB1dHMgIi5iYWxpZ24gNCIKLSAgICBjb25zdGxhYmVsLmxvd2VyKCJT
SDQiKQotICAgICRhc20ucHV0cyAiLmxvbmcgI3tjb25zdGFudH0iCi0gICAgb3V0bGFiZWwubG93
ZXIoIlNINCIpCi1lbmQKLQogZGVmIGVtaXRTSDRMb2FkMzJBbmRKdW1wKGNvbnN0YW50LCBzY3Jh
dGNoKQogICAgIGNvbnN0bGFiZWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgibG9hZDMyY29uc3QiKQog
ICAgICRhc20ucHV0cyAibW92LmwgI3tMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBjb25zdGxhYmVsKS5hc21MYWJlbH0sICN7c2NyYXRjaC5zaDRPcGVyYW5kfSIKLSAgICAkYXNt
LnB1dHMgImptcCBAI3tzY3JhdGNoLnNoNE9wZXJhbmR9IgorICAgICRhc20ucHV0cyAiYnJhZiAj
e3NjcmF0Y2guc2g0T3BlcmFuZH0iCiAgICAgJGFzbS5wdXRzICJub3AiCisgICAgJGFzbS5wdXRz
ICIxOiIKICAgICAkYXNtLnB1dHMgIi5iYWxpZ24gNCIKICAgICBjb25zdGxhYmVsLmxvd2VyKCJT
SDQiKQotICAgICRhc20ucHV0cyAiLmxvbmcgI3tjb25zdGFudH0iCisgICAgJGFzbS5wdXRzICIu
bG9uZyAje2NvbnN0YW50fS0xYiIKIGVuZAogCiBkZWYgZW1pdFNINExvYWRJbW0ob3BlcmFuZHMp
CkBAIC00ODAsNyArNDY5LDE1IEBAIGRlZiBlbWl0U0g0TG9hZEltbShvcGVyYW5kcykKICAgICAg
ICAgJGFzbS5wdXRzICIud29yZCAje29wZXJhbmRzWzBdLnZhbHVlfSIKICAgICAgICAgY29uc3Rs
YWJlbC5sb3dlcigiU0g0IikKICAgICBlbHNlCi0gICAgICAgIGVtaXRTSDRMb2FkMzIob3BlcmFu
ZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgICBvdXRsYWJlbCA9IExvY2FsTGFiZWwu
dW5pcXVlKCJsb2FkMzJvdXQiKQorICAgICAgICBjb25zdGxhYmVsID0gTG9jYWxMYWJlbC51bmlx
dWUoImxvYWQzMmNvbnN0IikKKyAgICAgICAgJGFzbS5wdXRzICJtb3YubCAje0xvY2FsTGFiZWxS
ZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGNvbnN0bGFiZWwpLmFzbUxhYmVsfSwgI3tvcGVyYW5k
c1sxXS5zaDRPcGVyYW5kfSIKKyAgICAgICAgJGFzbS5wdXRzICJicmEgI3tMb2NhbExhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvdXRsYWJlbCkuYXNtTGFiZWx9IgorICAgICAgICAkYXNt
LnB1dHMgIm5vcCIKKyAgICAgICAgJGFzbS5wdXRzICIuYmFsaWduIDQiCisgICAgICAgIGNvbnN0
bGFiZWwubG93ZXIoIlNINCIpCisgICAgICAgICRhc20ucHV0cyAiLmxvbmcgI3tvcGVyYW5kc1sw
XS52YWx1ZX0iCisgICAgICAgIG91dGxhYmVsLmxvd2VyKCJTSDQiKQogICAgIGVuZAogZW5kCiAK
QEAgLTY1NiwxMCArNjUzLDEwIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICByYWlz
ZSAiSW52YWxpZCBvcGVyYW5kcyBudW1iZXIgKCN7b3BlcmFuZHMuc2l6ZX0pIiB1bmxlc3Mgb3Bl
cmFuZHMuc2l6ZSA9PSA1CiAgICAgICAgICAgICAkYXNtLnB1dHMgImRtdWxzLmwgI3tzaDRPcGVy
YW5kcyhbb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdXSl9IgogICAgICAgICAgICAgJGFzbS5wdXRz
ICJzdHMgbWFjbCwgI3tvcGVyYW5kc1szXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRhc20u
cHV0cyAic3RzIG1hY2gsICN7b3BlcmFuZHNbMF0uc2g0T3BlcmFuZH0iCiAgICAgICAgICAgICAk
YXNtLnB1dHMgImNtcC9weiAje29wZXJhbmRzWzNdLnNoNE9wZXJhbmR9IgogICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3Z0ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAgICAgICAgICAk
YXNtLnB1dHMgImR0ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCisgICAgICAgICAgICAkYXNt
LnB1dHMgImFkZCAjLTEsICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCisgICAgICAgICAgICAk
YXNtLnB1dHMgInN0cyBtYWNoLCAje29wZXJhbmRzWzBdLnNoNE9wZXJhbmR9IgogICAgICAgICAg
ICAgJGFzbS5wdXRzICJjbXAvZXEgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJhbmRz
WzFdXSl9IgogICAgICAgICAgICAgJGFzbS5wdXRzICJiZiAje29wZXJhbmRzWzRdLmFzbUxhYmVs
fSIKICAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiLCAiYnRpbnoiLCAiYnRwbnoi
LCAiYnRibnoiCkBAIC03MTUsOSArNzEyLDkgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92YSBAKDE0LCBQQyksIHIwIgogICAgICAgICAgICAgJGFzbS5wdXRz
ICJsZHMgcjAsIHByIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YubCBAKDYsIFBDKSwgI3tv
cGVyYW5kc1sxXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRhc20ucHV0cyAiam1wIEAje29w
ZXJhbmRzWzFdLnNoNE9wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJicmFmICN7b3Bl
cmFuZHNbMV0uc2g0T3BlcmFuZH0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29wZXJh
bmRzWzBdLnNoNE9wZXJhbmR9LCByMCIKLSAgICAgICAgICAgICRhc20ucHV0cyAiLmxvbmcgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIi5sb25nICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9LS4iCiAgICAgICAgIHdoZW4gImptcCIKICAgICAgICAgICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IExvY2FsTGFiZWxSZWZlcmVuY2UKICAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgImJyYSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKQEAgLTczNSwxNSArNzMyLDE1
IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIHdoZW4gImxvYWRiIgogICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3YuYiAje3NoNE9wZXJhbmRzKG9wZXJhbmRzKX0iCiAgICAgICAgICAgICAk
YXNtLnB1dHMgImV4dHUuYiAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMV1d
KX0iCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92LmIg
I3tzaDRPcGVyYW5kcyhvcGVyYW5kcyl9IgogICAgICAgICB3aGVuICJsb2FkaCIKICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92LncgI3tzaDRPcGVyYW5kcyhvcGVyYW5kcyl9IgogICAgICAgICAg
ICAgJGFzbS5wdXRzICJleHR1LncgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9wZXJhbmRz
WzFdXSl9IgogICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAibG9hZHAiLCAic3RvcmVp
IiwgInN0b3JlcCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92LmwgI3tzaDRPcGVyYW5kcyhv
cGVyYW5kcyl9IgogICAgICAgICB3aGVuICJtb3ZlIgotICAgICAgICAgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gTGFiZWxSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBlbWl0U0g0TG9hZDMyKG9w
ZXJhbmRzWzBdLmFzbUxhYmVsLCBvcGVyYW5kc1sxXSkKLSAgICAgICAgICAgIGVsc2lmIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlCiAgICAgICAgICAgICAgICAgZW1pdFNINExvYWRJbW0ob3BlcmFuZHMpCiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tzaDRPcGVyYW5k
cyhvcGVyYW5kcyl9IgpAQCAtNzUxLDE1ICs3NDgsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAg
ICAgICAgd2hlbiAibGVhcCIKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEJhc2VJ
bmRleAogICAgICAgICAgICAgICAgIGJpb3AgPSBvcGVyYW5kc1swXQotICAgICAgICAgICAgICAg
IGlmIGJpb3Auc2NhbGUgPiAwCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7
c2g0T3BlcmFuZHMoW2Jpb3AuaW5kZXgsIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgICAg
ICAgICBpZiBiaW9wLnNjYWxlU2hpZnQgPiAwCi0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0
U0g0U2hpZnRJbW0oYmlvcC5zY2FsZVNoaWZ0LCBvcGVyYW5kc1sxXSwgImwiKQotICAgICAgICAg
ICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQgI3tzaDRP
cGVyYW5kcyhbYmlvcC5iYXNlLCBvcGVyYW5kc1sxXV0pfSIKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7c2g0T3BlcmFuZHMoW2Jpb3Au
YmFzZSwgb3BlcmFuZHNbMV1dKX0iCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tz
aDRPcGVyYW5kcyhbYmlvcC5pbmRleCwgb3BlcmFuZHNbMV1dKX0iCisgICAgICAgICAgICAgICAg
aWYgYmlvcC5zY2FsZVNoaWZ0ID4gMAorICAgICAgICAgICAgICAgICAgICBlbWl0U0g0U2hpZnRJ
bW0oYmlvcC5zY2FsZVNoaWZ0LCBvcGVyYW5kc1sxXSwgImwiKQogICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkICN7c2g0T3BlcmFuZHMoW2Jpb3AuYmFz
ZSwgb3BlcmFuZHNbMV1dKX0iCiAgICAgICAgICAgICAgICAgaWYgYmlvcC5vZmZzZXQudmFsdWUg
IT0gMAogICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje3NoNE9wZXJhbmRzKFti
aW9wLm9mZnNldCwgb3BlcmFuZHNbMV1dKX0iCiAgICAgICAgICAgICAgICAgZW5kCkluZGV4OiBT
b3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
cmV2aXNpb24gMTUzOTk3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOC0xMyAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNl
YXVAbmRzLmNvbT4KKworICAgICAgICBERkdfSklUIGltcGxlbWVudGF0aW9uIGZvciBzaDQgYXJj
aGl0ZWN0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE5NzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0wOC0xMiAgUmFnbmVyIE1hZ2FsaGFlcyAgPHJh
bmdlci5uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEJyb2tlbiBidWlsZCB3aXRoIGJ1aWxkLXdl
YmtpdCAtLW5vLXdlYmdsCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE1Mzg4MikKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1OSwxMiArNzU5LDgg
QEAKICNpZiBDUFUoQVJNX1RIVU1CMikgJiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oQkxB
Q0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpKQogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5k
aWYKLS8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk0uICovCi0jaWYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKLSNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQotI2VuZGlmCi0vKiBFbmFibGUgdGhlIERG
RyBKSVQgb24gTUlQUy4gKi8KLSNpZiBDUFUoTUlQUykKKy8qIEVuYWJsZSB0aGUgREZHIEpJVCBv
biBBUk0sIE1JUFMgYW5kIFNINC4gKi8KKyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUo
TUlQUykgfHwgQ1BVKFNINCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCiAjZW5k
aWYK
</data>
<flag name="commit-queue"
          id="230536"
          type_id="3"
          status="-"
          setter="jbriance"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208642</attachid>
            <date>2013-08-13 09:39:58 -0700</date>
            <delta_ts>2013-08-13 09:59:11 -0700</delta_ts>
            <desc>DFG_JIT implementation for sh4 architecture</desc>
            <filename>sh4-dfg_119737_2.patch</filename>
            <type>text/plain</type>
            <size>89724</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MDA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wOC0xMyAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlYXVAbmRzLmNvbT4KKwor
ICAgICAgICBERkdfSklUIGltcGxlbWVudGF0aW9uIGZvciBzaDQgYXJjaGl0ZWN0dXJlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NzM3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IucHJvOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6aXNDb21wYWN0UHRyQWxpZ25lZEFk
ZHJlc3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6aW52ZXJ0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmFkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJTSDQ6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJT
SDQ6OmxzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om11bDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om9yMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclNINDo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YWRkNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6eG9yMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclNINDo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OnRlc3RJbW0pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZEVm
ZmVjdGl2ZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmxvYWQxNlVuYWxpZ25lZCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpsb2FkMTZTaWduZWQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9h
ZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6bW92ZUludHNUb0RvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyU0g0Ojpzd2FwRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Omxv
YWRGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpsb2FkRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnN0b3JlRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclNINDo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJT
SDQ6Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpkaXZEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bmVnYXRlRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29y
ZHMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c2lnbkV4dGVuZDMyVG9QdHIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6emVyb0V4dGVuZDMyVG9QdHIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0lu
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaFRydW5jYXRlRG91
YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6dHJ1bmNhdGVE
b3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnRydW5jYXRl
RG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3dhcCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2gzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0
OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE5lZzMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaEFkZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OmJyYW5jaE9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJh
bmNoQ29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNI
NDo6dXJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyZWFrcG9p
bnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpTSDRBc3NlbWJsZXIpOgorICAgICAg
ICAoSlNDOjpTSDRBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OlNINEFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OmNoYW5n
ZVBDcmVsYXRpdmVBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpyZWFkUENy
ZWxhdGl2ZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OmxpbmtKdW1wKToK
KyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpsaW5rQ2FsbCk6CisgICAgICAgIChKU0M6OlNI
NEFzc2VtYmxlcjo6bGlua1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OnBh
dGNoQ29uc3RhbnRQb29sTG9hZCk6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6cmVwYXRj
aEludDMyKToKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpyZWxpbmtDYWxsKToKKyAgICAg
ICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpyZWxpbmtKdW1wKToKKyAgICAgICAgKEpTQzo6U0g0QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OnJl
dmVydEp1bXBUb01vdmUpOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OmRlYnVnT2Zmc2V0
KToKKyAgICAgICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QXNzZW1ibHlIZWxwZXJzOjpwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4pOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxs
KToKKyAgICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxI
ZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdG
UFJJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6RlBS
SW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgorICAgICAgICAo
SlNDOjpERkc6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUklu
Zm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0
aW9uKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3Jt
UGxhdGZvcm1TcGVjaWZpY0pJVEFzc2VydGlvbnMpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5o
OgorICAgICAgICAqIGppdC9KSVRTdHVic1NINC5oOgorICAgICAgICAoSlNDOjpwZXJmb3JtU0g0
SklUQXNzZXJ0aW9ucyk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
ICogb2ZmbGluZWFzbS9zaDQucmI6CisKIDIwMTMtMDgtMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggQysrMTEgYnVp
bGQgd2l0aCBnY2MgNC40IGFuZCA0LjUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9MTElu
dE9mZnNldHNFeHRyYWN0b3IucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9MTEludE9mZnNldHNFeHRyYWN0b3IucHJvCShyZXZpc2lvbiAxNTM5OTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvTExJbnRPZmZzZXRzRXh0cmFjdG9yLnBybwkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsNyBAQCBMTElOVF9ERVBFTkRFTkNZID0gXAogICAgICQkUFdEL29mZmxpbmVh
c20vcmVnaXN0ZXJzLnJiIFwKICAgICAkJFBXRC9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYiBcCiAg
ICAgJCRQV0Qvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYiBcCisgICAgJCRQV0Qvb2ZmbGluZWFzbS9z
aDQucmIgXAogICAgICQkUFdEL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiIFwKICAgICAkJFBXRC9v
ZmZsaW5lYXNtL3g4Ni5yYgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAxNTM5OTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgU0g0QXNzZW1ibGVy
OjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwogCiAgICAgc3RhdGljIGNvbnN0IFNjYWxlIFNj
YWxlUHRyID0gVGltZXNGb3VyOwotICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnNjcmF0
Y2ggPSBTSDRSZWdpc3RlcnM6OmZyMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
c2NyYXRjaCA9IFNINFJlZ2lzdGVyczo6ZHIxMDsKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6c3A7CiAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgbGlua1JlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpwcjsKICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnMyA9IFNINFJlZ2lzdGVyczo6cjEzOwpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0NvbXBhY3RQdHJBbGln
bmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4g
KHZhbHVlID49IDApICYmICh2YWx1ZSA8PSBNYXhpbXVtQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNz
T2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA+PSAwKSAmJiAodmFsdWUgPD0gTWF4aW11
bUNvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldCkgJiYgKCEodmFsdWUgJiAzKSk7CiAgICAg
fQogCiAgICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0aW9uIHsKQEAgLTEwMSw2ICsxMDEsMzQgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5yZWxlYXNlU2NyYXRjaChyZWcpOwogICAgIH0K
IAorICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBF
cXVhbDoKKyAgICAgICAgICAgIHJldHVybiBOb3RFcXVhbDsKKyAgICAgICAgY2FzZSBOb3RFcXVh
bDoKKyAgICAgICAgICAgIHJldHVybiBFcXVhbDsKKyAgICAgICAgY2FzZSBBYm92ZToKKyAgICAg
ICAgICAgIHJldHVybiBCZWxvd09yRXF1YWw7CisgICAgICAgIGNhc2UgQWJvdmVPckVxdWFsOgor
ICAgICAgICAgICAgcmV0dXJuIEJlbG93OworICAgICAgICBjYXNlIEJlbG93OgorICAgICAgICAg
ICAgcmV0dXJuIEFib3ZlT3JFcXVhbDsKKyAgICAgICAgY2FzZSBCZWxvd09yRXF1YWw6CisgICAg
ICAgICAgICByZXR1cm4gQWJvdmU7CisgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CisgICAgICAg
ICAgICByZXR1cm4gTGVzc1RoYW5PckVxdWFsOworICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuT3JF
cXVhbDoKKyAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKKyAgICAgICAgY2FzZSBMZXNzVGhh
bjoKKyAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbk9yRXF1YWw7CisgICAgICAgIGNhc2Ug
TGVzc1RoYW5PckVxdWFsOgorICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zCiAK
ICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMDgs
NiArMTM2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzcmMs
IGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3Rl
cklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMxID09IGRl
c3QpCisgICAgICAgICAgICBhZGQzMihzcmMyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAgICAgICAgYWRkMzIoc3JjMSwgZGVzdCk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUpCkBAIC0xMjYs
OCArMTY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNyYyAh
PSBkZXN0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ1JlZyhzcmMsIGRlc3QpOwor
ICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CiAgICAgICAgIGFkZDMyKGltbSwgZGVzdCk7CiAgICAg
fQogCkBAIC0xNjQsOCArMjAxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
bFJlZ1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChzcmMxID09IGRlc3QpCisgICAgICAgICAgICBhbmQzMihzcmMyLCBkZXN0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAgICAgICAgYW5kMzIo
c3JjMSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZDMyKEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNs
YWltU2NyYXRjaCgpOworICAgICAgICBsb2FkMzIoc3JjLCBzY3IpOworICAgICAgICBhbmQzMihz
Y3IsIGRlc3QpOworICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOworICAgIH0KKwogICAgIHZv
aWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgw
LCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICgo
aW1tLm1fdmFsdWUgPD0gMjU1KSAmJiAoaW1tLm1fdmFsdWUgPj0gMCkgJiYgKGRlc3QgPT0gU0g0
UmVnaXN0ZXJzOjpyMCkpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxJbW04cihpbW0u
bV92YWx1ZSwgZGVzdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTcsNiArMjU3LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2hpZnRUbXApOwogICAgIH0KIAorICAg
IHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICAgICAg
bHNoaWZ0MzIoc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbHNoaWZ0MzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaW50IGlt
bU1hc2tlZCA9IGltbS5tX3ZhbHVlICYgMHgxZjsKQEAgLTIxNiwyNiArMjgyLDMyIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBzaGlm
dGFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0
KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotCisgICAgICAgIG1vdmUoc3JjLCBkZXN0
KTsKICAgICAgICAgbHNoaWZ0MzIoc2hpZnRhbW91bnQsIGRlc3QpOwogICAgIH0KIAogICAgIHZv
aWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmltdWxsUmVnUmVnKHNyYywgZGVzdCk7CisgICAgICAgIG11bDMyKHNyYywg
ZGVzdCwgZGVzdCk7ICAgIAorICAgIH0KKworICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmltdWxsUmVnUmVnKHNyYzEsIHNyYzIpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHNt
YWNsKGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQg
c2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUoaW1tLCBzY3IpOwotICAgICAgICBp
ZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIG11
bDMyKHNjciwgZGVzdCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CisgICAgICAgIGlm
IChzcmMgPT0gZGVzdCkgeworICAgICAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwgPSBjbGFpbVNj
cmF0Y2goKTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBpbW12YWwpOworICAgICAgICAgICAgbXVs
MzIoaW1tdmFsLCBzcmMsIGRlc3QpOworICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW1tdmFs
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBkZXN0KTsKKyAgICAg
ICAgICAgIG11bDMyKHNyYywgZGVzdCwgZGVzdCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2
b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI3OSw2ICszNTEs
MTggQEAgcHVibGljOgogICAgICAgICBvcjMyKGltbSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRlc3RwdHIpOworICAgICAgICBSZWdpc3Rl
cklEIGRlc3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bE1l
bVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsUmVnUmVnKHNy
YywgZGVzdHZhbCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oZGVzdHZhbCwgZGVz
dHB0cik7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGRlc3R2YWwpOworICAgICAgICByZWxlYXNl
U2NyYXRjaChkZXN0cHRyKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAo
c3JjICE9IGRlc3QpIHsKQEAgLTMwMCw2ICszODQsMTIgQEAgcHVibGljOgogICAgICAgICByZWxl
YXNlU2NyYXRjaChzaGlmdFRtcCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICByc2hpZnQzMihzaGlmdEFtb3VudCwg
ZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpbnQgaW1tTWFza2VkID0gaW1tLm1fdmFsdWUg
JiAweDFmOwpAQCAtMzE5LDggKzQwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcnNoaWZ0MzIo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsK
KyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwogICAgICAgICByc2hpZnQzMihpbW0sIGRlc3QpOwog
ICAgIH0KIApAQCAtMzM3LDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCBy
ZXN1bHQgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0g
Y2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnLCByZXN1bHQpOwogCiAgICAgICAg
IGlmIChtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZSgtaW1tLm1fdmFsdWUpKQpAQCAtMzUyLDYgKzQ0
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcmF0Y2hSZWcpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1pbW0ubV92YWx1ZSksIGFkZHJlc3Mp
OworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQpAQCAtMzYwLDcg
KzQ1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCByZXN1bHQgPSBjbGFpbVNjcmF0
Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gY2xhaW1TY3JhdGNoKCk7CiAK
LSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3Q+KGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92
bE1lbVJlZyhzY3JhdGNoUmVnLCByZXN1bHQpOwogCiAgICAgICAgIGlmIChtX2Fzc2VtYmxlci5p
c0ltbWVkaWF0ZShpbW0ubV92YWx1ZSkpCkBAIC0zODEsMjMgKzQ3NSwyMSBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlZ2lzdGVySUQgc2NyMiA9IGNsYWltU2NyYXRjaCgpOwogCiAgICAgICAgIC8vIEFk
ZCAzMi1iaXQgTFNCIGZpcnN0LgotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQocmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcy5tX3B0ciksIHNjcjEpOwotICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcjEsIHNjcjEpOyAvLyBzY3IxID0gMzItYml0IExTQiBv
ZiBpbnQ2NCBAIGFkZHJlc3MKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnMyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyYXRj
aFJlZzMsIHNjcjEpOyAvLyBzY3IxID0gMzItYml0IExTQiBvZiBpbnQ2NCBAIGFkZHJlc3MKICAg
ICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3IyKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIuY2xydCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hZGRjbFJlZ1JlZyhz
Y3IxLCBzY3IyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3IxKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubW92bFJlZ01lbShzY3IyLCBzY3IxKTsgLy8gVXBkYXRlIGFkZHJlc3Mgd2l0aCAzMi1iaXQg
TFNCIHJlc3VsdC4KKyAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3IyLCBzY3JhdGNo
UmVnMyk7IC8vIFVwZGF0ZSBhZGRyZXNzIHdpdGggMzItYml0IExTQiByZXN1bHQuCiAKICAgICAg
ICAgLy8gVGhlbiBhZGQgMzItYml0IE1TQi4KLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThy
KDQsIHNjcjEpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcjEsIHNjcjEpOyAv
LyBzY3IxID0gMzItYml0IE1TQiBvZiBpbnQ2NCBAIGFkZHJlc3MKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkbEltbThyKDQsIHNjcmF0Y2hSZWczKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bE1l
bVJlZyhzY3JhdGNoUmVnMywgc2NyMSk7IC8vIHNjcjEgPSAzMi1iaXQgTVNCIG9mIGludDY0IEAg
YWRkcmVzcwogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z0KHNjcjIpOwogICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPCAwKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKC0xLCBzY3Iy
KTsgLy8gU2lnbiBleHRlbmQgaW1tIHZhbHVlIGlmIG5lZWRlZC4KICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkdmxSZWdSZWcoc2NyMiwgc2NyMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25z
dGFudChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihhZGRyZXNzLm1fcHRyKSArIDQsIHNjcjIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKHNjcjEsIHNjcjIpOyAvLyBVcGRhdGUg
KGFkZHJlc3MgKyA0KSB3aXRoIDMyLWJpdCBNU0IgcmVzdWx0LgorICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZsUmVnTWVtKHNjcjEsIHNjcmF0Y2hSZWczKTsgLy8gVXBkYXRlIChhZGRyZXNzICsgNCkg
d2l0aCAzMi1iaXQgTVNCIHJlc3VsdC4KIAogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IyKTsK
ICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMSk7CkBAIC00MzIsNiArNTI0LDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybFJlZ1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMxID09IGRlc3QpCisgICAgICAgICAgICB4
b3IzMihzcmMyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHNyYzIs
IGRlc3QpOworICAgICAgICAgICAgeG9yMzIoc3JjMSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkK
ICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAtNDU3LDYgKzU1OSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoKChjb25kID09IEVxdWFsKSB8fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFpbW0pIHsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsUmVnUmVnKGRzdCwgZHN0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3Jh
dGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0sIHNjcik7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyLCBkc3QsIFNINENvbmRpdGlvbihjb25kKSk7
CkBAIC00OTAsMjAgKzU5NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0SW1tKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQg
c2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2Ny
YXRjaCgpOworICAgICAgICBsb2FkMzIoYmFzZSwgb2Zmc2V0LCBzY3IpOwogCi0gICAgICAgIGlm
ICgob2Zmc2V0IDwgMCkgfHwgKG9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxvYWRDb25zdGFudChvZmZzZXQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRsUmVnUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVn
KHNjciwgc2NyKTsKLSAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQpCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsTWVtUmVnKG9mZnNldCA+PiAyLCBiYXNlLCBzY3IpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIHNjcik7Ci0gICAgICAg
IGlmIChtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZShpbW0pKQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92SW1tOChpbW0sIHNjcjEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2FkQ29uc3RhbnQoaW1tLCBzY3IxKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0g
Y2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIHNjcjEpOwog
CiAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsUmVnUmVnKHNjciwgc2NyMSk7CiAgICAgICAgIHJl
bGVhc2VTY3JhdGNoKHNjcik7CkBAIC01NTEsNDEgKzY0OCwzNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNvbXBhcmUzMihpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIGlmICghb2Zmc2V0KSB7Ci0gICAg
ICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgUmVn
aXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZsTWVtUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3Rh
bnQoaW1tLCBzY3IxKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyMSwg
c2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Ny
MSk7Ci0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChvZmZzZXQgPCAwKSB8fCAob2Zmc2V0ID49IDY0
KSkgewotICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAg
ICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIubG9hZENvbnN0YW50KG9mZnNldCwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZGxSZWdSZWcoYmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxN
ZW1SZWcoc2NyLCBzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGlt
bSwgc2NyMSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwg
U0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcjEpOwot
ICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CisgICAg
ICAgIGxvYWQzMihiYXNlLCBvZmZzZXQsIHNjcik7CisKICAgICAgICAgUmVnaXN0ZXJJRCBzY3Ix
ID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcob2Zmc2V0
ID4+IDIsIGJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0s
IHNjcjEpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBzY3IxKTsKKwogICAgICAg
ICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsK
KwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKICAgICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbgogCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGxvYWRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QsIGludCBleHRyYW9mZnNldCA9IDApCisgICAgeworICAgICAgICBpZiAo
ZGVzdCA9PSBhZGRyZXNzLmJhc2UpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NhbGVkSW5k
ZXggPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2Nh
bGVkSW5kZXgpOworICAgICAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2Nh
bGUpLCBzY2FsZWRJbmRleCk7CisgICAgICAgICAgICBhZGQzMihzY2FsZWRJbmRleCwgZGVzdCk7
CisgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY2FsZWRJbmRleCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGRlc3QpOworICAgICAgICAgICAg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBkZXN0KTsKKyAgICAgICAgICAg
IGFkZDMyKGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBhZGQzMihU
cnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQgKyBleHRyYW9mZnNldCksIGRlc3QpOworICAgIH0K
KwogICAgIHZvaWQgbG9hZDMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBsb2FkMzIoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCwg
ZGVzdCk7CkBAIC02MzQsNyArNzI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkMzIoY29u
c3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGFkZHJlc3MpKSwgZGVzdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzKSwgZGVzdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoZGVzdCwgZGVzdCk7
CiAgICAgfQogCkBAIC03MzMsMTUgKzgyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMTZV
bmFsaWduZWQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQg
c2NyMSA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2Ny
KTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3IpOwog
Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMihhZGRyZXNzLm9mZnNldCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNz
KGFkZHJlc3MsIHNjcik7CiAKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOworICAg
ICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbG9hZDhQb3N0
SW5jKHNjciwgc2NyMSk7CiAgICAgICAgIGxvYWQ4KHNjciwgZGVzdCk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnNobGxJbW04cig4LCBkZXN0KTsKQEAgLTc4MCw5ICs4NjgsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwogICAgICAgICBsc2hpZnQzMihUcnVz
dGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0KLSAgICAgICAgaWYgKGFkZHJlc3Mub2Zm
c2V0KQotICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2Ny
KTsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2NyKTsKIAog
ICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09IFNINFJlZ2lzdGVyczo6cjApCiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tb3Z3UjBtcihzY3IsIGRlc3QpOwpAQCAtODE0LDEwICs5MDAsMTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVz
cykKICAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7Cisg
ICAgICAgIEFTU0VSVCgoaW1tLm1fdmFsdWUgPj0gLTEyOCkgJiYgKGltbS5tX3ZhbHVlIDw9IDEy
NykpOwogICAgICAgICBSZWdpc3RlcklEIGRzdHB0ciA9IGNsYWltU2NyYXRjaCgpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGRzdHB0cik7CisgICAgICAgIFJlZ2lzdGVy
SUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1vdmUoaW1tLCBzcmN2YWwpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dD4oYWRkcmVzcyksIGRzdHB0cik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJSZWdNZW0oc3Jj
dmFsLCBkc3RwdHIpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChkc3RwdHIpOwogICAgICAgICBy
ZWxlYXNlU2NyYXRjaChzcmN2YWwpOwpAQCAtODk0LDcgKzk4MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IxID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChp
bW0ubV92YWx1ZSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MpLCBzY3IxKTsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MpLCBzY3IxKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01l
bShzY3IsIHNjcjEpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgICAgICByZWxl
YXNlU2NyYXRjaChzY3IxKTsKQEAgLTkwMywxMSArOTkwLDI0IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBS
ZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2Fk
Q29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcyksIHNjcik7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92bFJlZ01lbShzcmMsIHNjcik7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBkZXN0cHRyID0gY2xhaW1TY3JhdGNoKCk7
CisKKyAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgZGVzdHB0cik7CisKKyAg
ICAgICAgUmVnaXN0ZXJJRCBzcmN2YWwgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbW92ZShp
bW0sIHNyY3ZhbCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oc3JjdmFsLCBkZXN0
cHRyKTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2goc3JjdmFsKTsKKyAgICAgICAgcmVsZWFzZVNj
cmF0Y2goZGVzdHB0cik7CisgICAgfQorCiAgICAgRGF0YUxhYmVsMzIgbG9hZDMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CkBAIC05MzMsOCArMTAzMyw3
IEBAIHB1YmxpYzoKICAgICBEYXRhTGFiZWxDb21wYWN0IGxvYWQzMldpdGhDb21wYWN0QWRkcmVz
c09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIEFTU0VSVChh
ZGRyZXNzLm9mZnNldCA8PSBNYXhpbXVtQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KTsK
LSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDApOworICAgICAgICBBU1NFUlQoaXND
b21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQoYWRkcmVzcy5vZmZzZXQpKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubW92bE1lbVJlZ0NvbXBhY3QoYWRkcmVzcy5vZmZzZXQgPj4gMiwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsKICAgICB9CkBAIC05Njcs
OSArMTA2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhkZXN0
Mik7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEIHNjcmF0Y2gp
CisgICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEKQogICAgIHsKLSAgICAgICAgVU5V
U0VEX1BBUkFNKHNjcmF0Y2gpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHNybWZwdWwoc3JjMSk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmZzdHNmcHVsKChGUFJlZ2lzdGVySUQpKGRlc3QgKyAxKSk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkc3JtZnB1bChzcmMyKTsKQEAgLTk4NCwxNSArMTA4Miwy
MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN3YXBEb3VibGUoRlBS
ZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZyMikKKyAgICB7CisgICAgICAgIGlmIChmcjEg
IT0gZnIyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mbGRzZnB1bCgoRlBSZWdpc3RlcklE
KShmcjEgKyAxKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlZ1JlZygoRlBSZWdp
c3RlcklEKShmcjIgKyAxKSwgKEZQUmVnaXN0ZXJJRCkoZnIxICsgMSkpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuZnN0c2ZwdWwoKEZQUmVnaXN0ZXJJRCkoZnIyICsgMSkpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZmxkc2ZwdWwoZnIxKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZt
b3ZzUmVnUmVnKGZyMiwgZnIxKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZzdHNmcHVsKGZy
Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRk
cmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHNjciA9
IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NyKTsKLSAg
ICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3IpOwotICAgICAg
ICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCkK
LSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIHNjcik7Cisg
ICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7CiAKICAgICAgICAgbV9h
c3NlbWJsZXIuZm1vdnNSZWFkcm0oc2NyLCBkZXN0KTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKQEAgLTEwMDIsMTEgKzExMDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBSZWdp
c3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRl
eCwgc2NyKTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBz
Y3IpOwotICAgICAgICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIGlmIChhZGRy
ZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNl
dCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7CiAK
ICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWFkcm1pbmMoc2NyLCAoRlBSZWdpc3RlcklEKShk
ZXN0ICsgMSkpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3IsIGRlc3QpOwpA
QCAtMTAzNSw3ICsxMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2
b2lkKiBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVy
SUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFu
dChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihhZGRyZXNzKSwgc2NyKTsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3IpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92
c1JlYWRybWluYyhzY3IsIChGUFJlZ2lzdGVySUQpKGRlc3QgKyAxKSk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmZtb3ZzUmVhZHJtKHNjciwgZGVzdCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNj
cik7CkBAIC0xMDQ0LDE1ICsxMTQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVGbG9hdChG
UFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIFJlZ2lz
dGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4
LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNj
cik7Ci0gICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgaWYgKGFkZHJl
c3Mub2Zmc2V0KQotICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0
KSwgc2NyKTsKLQorICAgICAgICBsb2FkRWZmZWN0aXZlQWRkcmVzcyhhZGRyZXNzLCBzY3IpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm0oc3JjLCBzY3IpOwotCiAgICAgICAgIHJl
bGVhc2VTY3JhdGNoKHNjcik7CiAgICAgfQogCkBAIC0xMDcwLDEwICsxMTY1LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKIAotICAg
ICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJ
bW0zMihhZGRyZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBz
Y3IpOwotICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQgKyA4KSwgc2Ny
KTsKKyAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgc2NyLCA4KTsKIAogICAg
ICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm5kZWMoc3JjLCBzY3IpOwogICAgICAgICBtX2Fz
c2VtYmxlci5mbW92c1dyaXRlcm5kZWMoKEZQUmVnaXN0ZXJJRCkoc3JjICsgMSksIHNjcik7CkBA
IC0xMDkxLDYgKzExODMsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGFkZHJlc3MpKSArIDgsIHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtb3Zz
V3JpdGVybmRlYyhzcmMsIHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRl
YygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwgc2NyKTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRhZGRSZWdSZWcoc3Jj
LCBkZXN0KTsKQEAgLTExMTMsNiArMTIxNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmRzdWJSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShv
cDEsIGZzY3JhdGNoKTsKKyAgICAgICAgICAgIHN1YkRvdWJsZShvcDIsIGZzY3JhdGNoKTsKKyAg
ICAgICAgICAgIG1vdmVEb3VibGUoZnNjcmF0Y2gsIGRlc3QpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOworICAgICAgICAgICAgc3ViRG91Ymxl
KG9wMiwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShBZGRy
ZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJs
ZShhZGRyZXNzLCBmc2NyYXRjaCk7CkBAIC0xMTI0LDYgKzEyMzcsMTYgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5kbXVsUmVnUmVnKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAob3AxID09IGRlc3QpCisgICAgICAgICAgICBt
dWxEb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlRG91
YmxlKG9wMiwgZGVzdCk7CisgICAgICAgICAgICBtdWxEb3VibGUob3AxLCBkZXN0KTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIHZvaWQgbXVsRG91YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91YmxlKGFkZHJlc3MsIGZzY3JhdGNo
KTsKQEAgLTExMzUsNiArMTI1OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmRk
aXZSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lz
dGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShvcDEsIGZz
Y3JhdGNoKTsKKyAgICAgICAgICAgIGRpdkRvdWJsZShvcDIsIGZzY3JhdGNoKTsKKyAgICAgICAg
ICAgIG1vdmVEb3VibGUoZnNjcmF0Y2gsIGRlc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOworICAgICAgICAgICAgZGl2RG91YmxlKG9wMiwg
ZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUo
c3JjLCBkZXN0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZG5lZyhkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mbGRzZnB1bChzcmMpOwpAQCAtMTE3
OSwxMiArMTMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGRlc3QgIT0gU0g0UmVnaXN0ZXJz
OjpyMCkKICAgICAgICAgICAgIG1vdmUoU0g0UmVnaXN0ZXJzOjpyMCwgc2NyMSk7CiAKLSAgICAg
ICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1t
MzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgc2Ny
KTsKLQotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBhZGQzMihUcnVz
dGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBzY3IpOworICAgICAgICBsb2FkRWZmZWN0aXZlQWRk
cmVzcyhhZGRyZXNzLCBzY3IpOwogCiAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1f
YXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDU4LCBzaXplb2YodWludDMyX3QpKTsKICAg
ICAgICAgbW92ZShzY3IsIFNINFJlZ2lzdGVyczo6cjApOwpAQCAtMTQzMCw4ICsxNTY2LDEyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2lnbkV4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAg
ICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgIH0KKwor
ICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCkKQEAgLTE0NTQsMTUgKzE1OTQsNzQgQEAgcHVibGljOgogICAgIGVudW0gQnJhbmNo
VHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1
Y2Nlc3NmdWwgfTsKICAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBl
ID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKICAgICB7CisgICAgICAgIEp1bXAgcmVzdWx0Owor
ICAgICAgICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKKyAgICAgICAgUmVnaXN0
ZXJJRCBpbnRzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZENv
bnN0YW50KDB4N2ZmZmZmZmYsIGludHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgMTIsIHNpemVv
Zih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCAyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigxLCBpbnRzY3IpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3IsIFNINENvbmRpdGlvbihFcXVh
bCkpOworICAgICAgICAgICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgSnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCksIFNINEFzc2Vt
Ymxlcjo6SnVtcE5lYXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIGlu
dHNjcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKGRlc3QsIGludHNjciwg
U0g0Q29uZGl0aW9uKEVxdWFsKSk7CisgICAgICAgICAgICByZXN1bHQgPSBicmFuY2hGYWxzZSgp
OworICAgICAgICAgICAgb3V0LmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goaW50c2NyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQpCisgICAgeworICAgICAgICBKdW1wIHJlc3VsdDsKKyAgICAgICAgUmVnaXN0ZXJJ
RCBpbnRzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0
YW50KDB4ODAwMDAwMDAsIGludHNjcik7CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGlu
dHNjciwgZnNjcmF0Y2gpOworICAgICAgICBhZGREb3VibGUoc3JjLCBmc2NyYXRjaCk7CisgICAg
ICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihmc2NyYXRjaCwgZGVzdCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25T
aXplICsgMTYsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBC
cmFuY2hJZlRydW5jYXRlRmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2go
QlRfT1BDT0RFLCA0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigtMSwgaW50
c2NyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBT
SDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigx
LCBpbnRzY3IpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VibFJlZ1JlZyhpbnRzY3IsIGRl
c3QpOworICAgICAgICAgICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgSnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCksIFNINEFzc2Vt
Ymxlcjo6SnVtcE5lYXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKC0xLCBp
bnRzY3IpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3Is
IFNINENvbmRpdGlvbihFcXVhbCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThy
KDEsIGludHNjcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVnKGludHNjciwg
ZGVzdCk7CisgICAgICAgICAgICByZXN1bHQgPSBicmFuY2hGYWxzZSgpOworICAgICAgICAgICAg
b3V0LmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW50c2Ny
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRG91
YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1bChzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci5z
dHNmcHVsUmVnKGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmZm
ZmZmZiwgc2NyYXRjaFJlZzMpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKGRlc3Qs
IHNjcmF0Y2hSZWczLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgMTQsIHNpemVvZih1
aW50MzJfdCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCAyKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBzY3JhdGNoUmVnMywgU0g0Q29uZGl0aW9uKEVxdWFs
KSk7Ci0gICAgICAgIHJldHVybiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVk
KSA/IGJyYW5jaFRydWUoKSA6IGJyYW5jaEZhbHNlKCk7CisgICAgfQorCisgICAgdm9pZCB0cnVu
Y2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIFJlZ2lzdGVySUQgaW50c2NyID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudCgweDgwMDAwMDAwLCBpbnRzY3IpOworICAgICAgICBj
b252ZXJ0SW50MzJUb0RvdWJsZShpbnRzY3IsIGZzY3JhdGNoKTsKKyAgICAgICAgYWRkRG91Ymxl
KHNyYywgZnNjcmF0Y2gpOworICAgICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1bChmc2NyYXRj
aCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxSZWdSZWcoaW50c2NyLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2go
aW50c2NyKTsKICAgICB9CiAKICAgICAvLyBTdGFjayBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucwpA
QCAtMTUxMSw2ICsxNzEwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENv
bnN0YW50KGltbS5hc0ludHB0cigpLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN3YXAoUmVn
aXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCisgICAgeworICAgICAgICBpZiAocmVnMSAh
PSByZWcyKSB7CisgICAgICAgICAgICB4b3IzMihyZWcxLCByZWcyKTsKKyAgICAgICAgICAgIHhv
cjMyKHJlZzIsIHJlZzEpOworICAgICAgICAgICAgeG9yMzIocmVnMSwgcmVnMik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhyaWdodCwgbGVmdCwgU0g0Q29uZGl0
aW9uKGNvbmQpKTsKQEAgLTE2MzMsNyArMTg0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAg
ICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihs
ZWZ0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihsZWZ0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmxNZW1SZWcoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CiAgICAgICAgIGNvbXBhcmUzMihyaWdodC5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBj
b25kKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC0x
NjQ2LDIxICsxODU0LDE4IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCEocmlnaHQubV92YWx1ZSAmIDB4RkZGRkZGMDApKTsKLSAgICAgICAg
UmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBsZWZ0
dG1wID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgbW92ZShsZWZ0LmluZGV4LCBzY3IpOwot
ICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIobGVmdC5zY2FsZSksIHNjcik7CisgICAgICAg
IGxvYWRFZmZlY3RpdmVBZGRyZXNzKGxlZnQsIGxlZnR0bXApOwogCi0gICAgICAgIGlmIChsZWZ0
Lm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihsZWZ0Lm9mZnNldCksIHNj
cik7Ci0gICAgICAgIGFkZDMyKGxlZnQuYmFzZSwgc2NyKTsKLSAgICAgICAgbG9hZDgoc2NyLCBz
Y3IpOwotICAgICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0Lm1fdmFsdWUsIHNjcjEpOwotICAgICAgICBy
ZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKKyAgICAg
ICAgbG9hZDgobGVmdHRtcCwgbGVmdHRtcCk7CisgICAgICAgIFJlZ2lzdGVySUQgcmlnaHR0bXAg
PSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0
Lm1fdmFsdWUsIHJpZ2h0dG1wKTsKIAotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgc2Ny
LCBzY3IxKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0dG1wLCBy
aWdodHRtcCk7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGxlZnR0bXApOworICAgICAgICByZWxl
YXNlU2NyYXRjaChyaWdodHRtcCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBSZWdpc3RlcklEIG1hc2spCkBAIC0xNzA0LDYgKzE5MDksOCBAQCBwdWJsaWM6CiAKICAgICBK
dW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CisgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisKICAgICAgICAgUmVn
aXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKIAogICAgICAgICBtb3ZlKGFkZHJlc3MuaW5k
ZXgsIHNjcik7CkBAIC0xNzM2LDE1ICsxOTQzLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGp1bXAo
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNj
cmF0Y2goKTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmptcFJlZyhzY3IpOworICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOworICAgIH0KKwor
ICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIFJl
Z2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAgICAgICAgaWYgKChhZGRyZXNzLm9m
ZnNldCA8IDApIHx8IChhZGRyZXNzLm9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRDb25zdGFudChhZGRyZXNzLm9mZnNldCwgc2NyKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZGxSZWdSZWcoYWRkcmVzcy5iYXNlLCBzY3IpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7Ci0gICAgICAgIH0gZWxzZSBpZiAoYWRkcmVz
cy5vZmZzZXQpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGFkZHJlc3Mub2Zm
c2V0ID4+IDIsIGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92bE1lbVJlZyhhZGRyZXNzLmJhc2UsIHNjcik7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bW92bE1lbVJlZyhzY3IsIHNjcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcFJlZyhzY3IpOwog
CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC0xNzUyLDYgKzE5NjEsMjQgQEAgcHVi
bGljOgogCiAgICAgLy8gQXJpdGhtZXRpYyBjb250cm9sIGZsb3cgb3BlcmF0aW9ucwogCisgICAg
SnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBT
aWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKworICAgICAg
ICBpZiAoY29uZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihj
b25kLCBUcnVzdGVkSW1tMzIoLTEpLCBzcmNEZXN0LCBzcmNEZXN0KTsKKworICAgICAgICBuZWcz
MihzcmNEZXN0KTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtcHB6KHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZh
bHNlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgc3JjRGVzdCwgRXF1YWwp
OworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJh
bmNoVHJ1ZSgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
UG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsK
QEAgLTE3NjEsNDEgKzE5ODgsNTggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aFRydWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzcmMsIGRlc3QpOwotICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZQorICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVn
UmVnKHNyYywgZGVzdCk7CisKKyAgICAgICAgaWYgKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQg
PT0gUG9zaXRpdmVPclplcm8pKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0
KTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOworICAgICAgICAgICAgcmV0dXJu
IChjb25kID09IFNpZ25lZCkgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmNtcHB6KGRlc3QpOworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgRXF1YWwpOworICAg
ICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1
ZSgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09
IE5vblplcm8pKTsKKworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAg
ICAgaWYgKHNyYzEgPT0gZGVzdCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR2bFJl
Z1JlZyhzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1v
dmUoc3JjMiwgZGVzdCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdmxSZWdSZWco
c3JjMSwgZGVzdCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1
ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzcmMsIGRl
c3QpOwotICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgRXF1YWwpOworICAgICAgICBhZGQzMihz
cmMxLCBzcmMyLCBkZXN0KTsKIAotICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSAvLyBOb3RF
cXVhbAotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIHJldHVybiBi
cmFuY2hUcnVlKCk7CisgICAgICAgIGlmICgoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFBv
c2l0aXZlT3JaZXJvKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7Cisg
ICAgICAgICAgICByZXR1cm4gKGNvbmQgPT0gU2lnbmVkKSA/IGJyYW5jaEZhbHNlKCkgOiBicmFu
Y2hUcnVlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgRXF1YWwp
OworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJh
bmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OwogCi0gICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgIHJldHVybiBicmFu
Y2hBZGQzMihjb25kLCBzY3JhdGNoUmVnMywgZGVzdCk7CisgICAgICAgIFJlZ2lzdGVySUQgaW1t
dmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoaW1tLCBpbW12YWwpOworICAgICAg
ICBKdW1wIHJlc3VsdCA9IGJyYW5jaEFkZDMyKGNvbmQsIGltbXZhbCwgZGVzdCk7CisgICAgICAg
IHJlbGVhc2VTY3JhdGNoKGltbXZhbCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQ
b3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwog
Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsK
KyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwogCiAgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93
KSB7CiAgICAgICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZzMpOwpAQCAtMTgwNSwyMSArMjA0
OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKIAotICAgICAgICBp
ZiAoY29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3Qp
OwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgeworICAgICAgICBpZiAoKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAoY29uZCA9PSBTaWduZWQpID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRy
dWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBFcXVhbCk7Ci0K
LSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwKLSAgICAgICAgICAgIHJl
dHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOworICAgICAg
ICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQpAQCAtMTgzMCwyMyArMjA2Niwx
OSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7CiAgICAgICAgIFJl
Z2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOwogICAgICAgICBSZWdpc3RlcklEIGRl
c3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGRlc3QubV9wdHIpLCBkZXN0cHRyKTsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBkZXN0cHRyKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubW92bE1lbVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKICAgICAgICAgaWYgKGNvbmQg
PT0gT3ZlcmZsb3cpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVnUmVnKHNjcmF0
Y2hSZWczLCBkZXN0dmFsKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKHNjcmF0Y2hSZWczLCBk
ZXN0dmFsKTsKLSAgICAgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAg
aWYgKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7CiAgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdHZhbCk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmQgPT0gUG9zaXRpdmVP
clplcm8pIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0dmFsKTsKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IChj
b25kID09IFBvc2l0aXZlT3JaZXJvKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdHZhbCwgU0g0Q29uZGl0
aW9uKGNvbmQpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCA9PSBaZXJvKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhkZXN0dmFsLCBkZXN0dmFsKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCAhPSBOb25aZXJvKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKGRlc3R2YWwsIGRl
c3RwdHIpOwpAQCAtMTg3NCwzMCArMjEwNiw1OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fYXNzZW1ibGVyLmltdWxs
UmVnUmVnKHNyYywgZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c21hY2woZGVzdCk7Cisg
ICAgICAgIG11bDMyKHNyYywgZGVzdCk7CisKICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7
Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlCiAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXBweihkZXN0KTsKICAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgY29tcGFyZTMyKDAsIGRlc3QsIHN0YXRpY19jYXN0PFJl
bGF0aW9uYWxDb25kaXRpb24+KGNvbmQpKTsKKyAgICAgICAgcmV0dXJuIChjb25kID09IE5vblpl
cm8pID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKKyAgICB9CiAKLSAgICAgICAgaWYg
KGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAo
Y29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsK
KworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgUmVnaXN0ZXJJ
RCBzY3JzaWduID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgICAgICBSZWdpc3RlcklEIG1zYnJl
cyA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZG11bHNsUmVnUmVn
KHNyYzEsIHNyYzIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzbWFjbChkZXN0KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92dChzY3JzaWduKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigtMSwg
c2Nyc2lnbik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHNtYWNoKG1zYnJlcyk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKG1zYnJlcywgc2Nyc2lnbiwgU0g0Q29uZGl0
aW9uKEVxdWFsKSk7CisgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChtc2JyZXMpOworICAgICAg
ICAgICAgcmVsZWFzZVNjcmF0Y2goc2Nyc2lnbik7CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNo
RmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworCisgICAgICAgIGlmIChjb25kID09IFNpZ25l
ZCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoRmFsc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBhcmUzMigwLCBk
ZXN0LCBFcXVhbCk7CisgICAgICAgIHJldHVybiAoY29uZCA9PSBOb25aZXJvKSA/IGJyYW5jaEZh
bHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwg
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
CiAKLSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgaWYgKHNyYyAhPSBk
ZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICBpZiAoc3JjID09IGRl
c3QpIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3QpOworICAgICAgICB9CiAK
LSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNjcmF0Y2hSZWczLCBkZXN0KTsKKyAg
ICAgICAgbW92ZShpbW0sIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwg
c3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTkwOSw3OCArMjE2
OSw5MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwogICAgICAg
ICB9CiAKKyAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKKwogICAgICAgICBpZiAoY29uZCA9PSBT
aWduZWQpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGNv
bXBhcmUzMigwLCBkZXN0LCBMZXNzVGhhbik7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1
ZSgpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN1YjMyKHNyYywgZGVz
dCk7CiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29u
ZGl0aW9uPihjb25kKSk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1
YWwKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJh
bmNoVHJ1ZSgpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxz
ZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8
fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAKLSAgICAgICAgbW92ZShp
bW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNjcmF0
Y2hSZWczLCBkZXN0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwgPSBjbGFpbVNjcmF0Y2go
KTsKKyAgICAgICAgbW92ZShpbW0sIGltbXZhbCk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJh
bmNoU3ViMzIoY29uZCwgaW1tdmFsLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW1t
dmFsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1
YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWcz
KTsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3Qp
OwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3QpOwor
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworCisgICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGltbSwgZGVzdCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIGlmIChzcmMxICE9IGRlc3QpCisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykg
fHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSk7CisKKyAgICAgICAgaWYgKHNyYzIgIT0gZGVzdCkgewogICAgICAgICAgICAgbW92ZShzcmMx
LCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYzIsIGRlc3QpOwor
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYzIsIGRlc3QpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVySUQgdG1wdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgICAgICBtb3ZlKHNyYzEsIHRt
cHZhbCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ2bFJlZ1JlZyhzcmMyLCB0bXB2YWwp
OworICAgICAgICAgICAgbW92ZSh0bXB2YWwsIGRlc3QpOworICAgICAgICAgICAgcmVsZWFzZVNj
cmF0Y2godG1wdmFsKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CisgICAgICAg
IH0KKworICAgICAgICBSZWdpc3RlcklEIHRtcHZhbCA9IGNsYWltU2NyYXRjaCgpOworICAgICAg
ICBtb3ZlKHNyYzEsIHRtcHZhbCk7CisgICAgICAgIHN1YjMyKHNyYzIsIHRtcHZhbCk7CisgICAg
ICAgIG1vdmUodG1wdmFsLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNjcmF0Y2godG1wdmFsKTsK
KworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcHB6KGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7CisgICAgICAg
IH0KKworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENv
bmRpdGlvbj4oY29uZCkpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFu
Y2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoT3IzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKIAorICAgICAgICBvcjMyKHNyYywgZGVzdCk7CisKICAgICAg
ICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7Ci0gICAgICAgICAgICBvcjMyKHNyYywgZGVzdCk7Ci0g
ICAgICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRp
dGlvbj4oTGVzc1RoYW4pKTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hGYWxzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgb3IzMihzcmMsIGRlc3QpOwogICAgICAg
ICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29u
ZCkpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vblplcm8pIC8vIE5vdEVxdWFsCi0gICAgICAg
ICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsK
KyAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5j
aFRydWUoKTsKICAgICB9CiAKLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
RlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVlKQorICAgIHZvaWQg
YnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0No
ZWNrID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZ0cmNkcm1mcHVsKHNyYyk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7CisgICAgICAgIHRydW5jYXRl
RG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShk
ZXN0LCBmc2NyYXRjaCk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91Ymxl
KERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZzY3JhdGNoLCBzcmMpKTsKIAotICAgICAgICBp
ZiAobmVnWmVyb0NoZWNrKSB7Ci0gICAgICAgICAgICBpZiAoZGVzdCA9PSBTSDRSZWdpc3RlcnM6
OnIwKQotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMCwgZGVzdCk7Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJbW04KDAs
IHNjcmF0Y2hSZWczKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNj
cmF0Y2hSZWczLCBkZXN0LCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVHJ1ZSgpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgfQogCiAgICAg
dm9pZCBuZWczMihSZWdpc3RlcklEIGRzdCkKQEAgLTE5OTgsNiArMjI3MiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNoaWZ0VG1wKTsKICAgICB9CiAKKyAgICB2b2lkIHVy
c2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICB1cnNoaWZ0
MzIoc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGludCBpbW1NYXNr
ZWQgPSBpbW0ubV92YWx1ZSAmIDB4MWY7CkBAIC0yMDE3LDkgKzIyOTcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIHNoaWZ0YW1v
dW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0g
ICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0KKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwog
ICAgICAgICB1cnNoaWZ0MzIoc2hpZnRhbW91bnQsIGRlc3QpOwogICAgIH0KIApAQCAtMjA0OCw2
ICsyMzI2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBicmVha3BvaW50KCkKICAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6
ZSArIDIpOwogICAgICAgICBtX2Fzc2VtYmxlci5ia3B0KCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vcCgpOwogICAgIH0KQEAgLTIxNDksOSArMjQyOCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmV2
ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQorICAgIHN0
YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmQsIHZvaWQqIGluaXRp
YWxWYWx1ZSkKICAgICB7Ci0gICAgICAgIFNINEFzc2VtYmxlcjo6cmV2ZXJ0SnVtcChpbnN0cnVj
dGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBpbml0aWFsVmFsdWUpOworICAgICAgICBTSDRBc3Nl
bWJsZXI6OnJldmVydEp1bXBUb01vdmUoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwg
cmQsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pihpbml0aWFsVmFsdWUpKTsKICAgICB9CiAKICAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1Mzk5OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzNyw4ICszMzcsMTAgQEAgcHVibGljOgogICAgIH07CiAKICAgICBTSDRB
c3NlbWJsZXIoKQorICAgICAgICA6IG1fY2xhaW1zY3JhdGNoUmVnKDB4MCkKKyAgICAgICAgLCBt
X2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxP
Zkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewotICAgICAgICBtX2NsYWltc2NyYXRjaFJl
ZyA9IDB4MDsKICAgICB9CiAKICAgICAvLyBTSDQgY29uZGl0aW9uIGNvZGVzCkBAIC0xMTg5LDE0
ICsxMTkxLDYgQEAgcHVibGljOgogICAgICAgICBvbmVTaG9ydE9wKG9wYyk7CiAgICAgfQogCi0g
ICAgdm9pZCBtb3ZsSW1tOHIoaW50IGltbTgsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKChpbW04IDw9IDEyNykgJiYgKGltbTggPj0gLTEyOCkpOwotCi0gICAgICAgIHVp
bnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMyhNT1ZJTU1fT1BDT0RFLCBkc3QsIGltbTgpOwot
ICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCiAgICAgdm9pZCBsb2FkQ29uc3RhbnQo
dWludDMyX3QgY29uc3RhbnQsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKCgo
aW50KWNvbnN0YW50IDw9IDB4N2YpICYmICgoaW50KWNvbnN0YW50ID49IC0weDgwKSkgewpAQCAt
MTMwOCwxMCArMTMwMiwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJl
bCgpOwogICAgIH0KIAotICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKKyAgICBBc3NlbWJsZXJM
YWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQogICAgIHsKICAgICAgICAgbV9idWZmZXIuZW5zdXJl
U3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwo
KTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4
T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNl
bWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBs
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRp
Y19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZUZvckFueUluc3RydWN0aW9uKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5s
YWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAg
aW50IHNpemVPZkNvbnN0YW50UG9vbCgpCkBAIC0xMzMxLDEyICsxMzQxLDE0IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKGludCBvZmZzZXQsIHVp
bnQxNl90KiBpbnN0cnVjdGlvblB0ciwgdWludDMyX3QgbmV3QWRkcmVzcykKICAgICB7CisgICAg
ICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQ
Q19PUENPREUpOwogICAgICAgICB1aW50MzJfdCBhZGRyZXNzID0gKG9mZnNldCA8PCAyKSArICgo
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb25QdHIpICsgNCkgJih+MHgzKSk7
CiAgICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oYWRkcmVzcykgPSBuZXdBZGRy
ZXNzOwogICAgIH0KIAogICAgIHN0YXRpYyB1aW50MzJfdCByZWFkUENyZWxhdGl2ZUFkZHJlc3Mo
aW50IG9mZnNldCwgdWludDE2X3QqIGluc3RydWN0aW9uUHRyKQogICAgIHsKKyAgICAgICAgQVNT
RVJUKChpbnN0cnVjdGlvblB0clswXSAmIDB4ZjAwMCkgPT0gTU9WTF9SRUFEX09GRlBDX09QQ09E
RSk7CiAgICAgICAgIHVpbnQzMl90IGFkZHJlc3MgPSAob2Zmc2V0IDw8IDIpICsgKChyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvblB0cikgKyA0KSAmKH4weDMpKTsKICAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oYWRkcmVzcyk7CiAgICAgfQpA
QCAtMTM3NCwxNyArMTM4Niw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyYWYgQHJlZyAgICAg
ICAgYnJhZiBAcmVnCiAgICAgICAgICAgICBub3AgICAgICAgICAgICAgIG5vcAogICAgICAgICAg
Ki8KLSAgICAgICAgQVNTRVJUKCgqKGluc3RydWN0aW9uUHRyICsgMSkgJiBCUkFGX09QQ09ERSkg
PT0gQlJBRl9PUENPREUpOwotCi0gICAgICAgIG9mZnNldEJpdHMgLT0gNDsKLSAgICAgICAgaWYg
KG9mZnNldEJpdHMgPj0gLTQwOTYgJiYgb2Zmc2V0Qml0cyA8PSA0MDk0KSB7Ci0gICAgICAgICAg
ICAqaW5zdHJ1Y3Rpb25QdHIgPSBnZXRPcGNvZGVHcm91cDYoQlJBX09QQ09ERSwgb2Zmc2V0Qml0
cyA+PiAxKTsKLSAgICAgICAgICAgICooKytpbnN0cnVjdGlvblB0cikgPSBOT1BfT1BDT0RFOwot
ICAgICAgICAgICAgcHJpbnRCbG9ja0luc3RyKGluc3RydWN0aW9uUHRyIC0gMSwgZnJvbS5tX29m
ZnNldCwgMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjaGFu
Z2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9u
UHRyLCBvZmZzZXRCaXRzIC0gMik7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0g
JiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOworICAgICAgICBBU1NFUlQoKGlu
c3RydWN0aW9uUHRyWzFdICYgMHhmMGZmKSA9PSBCUkFGX09QQ09ERSk7CisgICAgICAgIGNoYW5n
ZVBDcmVsYXRpdmVBZGRyZXNzKCgqaW5zdHJ1Y3Rpb25QdHIgJiAweGZmKSwgaW5zdHJ1Y3Rpb25Q
dHIsIG9mZnNldEJpdHMgLSA2KTsKICAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIs
IGZyb20ubV9vZmZzZXQgKyAyKTsKICAgICB9CiAKQEAgLTEzOTIsMTIgKzEzOTYsMTQgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gZ2V0SW5zdHJ1
Y3Rpb25QdHIoY29kZSwgZnJvbS5tX29mZnNldCk7CiAgICAgICAgIGluc3RydWN0aW9uUHRyIC09
IDM7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxf
UkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmlu
c3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCByZWludGVycHJldF9jYXN0PHVp
bnQzMl90Pih0bykpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQq
IGNvZGUsIEFzc2VtYmxlckxhYmVsIHdoZXJlLCB2b2lkKiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciA9IGdldEluc3RydWN0aW9uUHRyKGNvZGUsIHdoZXJl
Lm1fb2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlvblB0clswXSAmIDB4ZjAwMCkg
PT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSk7CiAgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRy
ZXNzKCgqaW5zdHJ1Y3Rpb25QdHIgJiAweGZmKSwgaW5zdHJ1Y3Rpb25QdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7CiAgICAgfQogCkBAIC0xNDQxLDcgKzE0NDcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVCgoKChyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihjb25z
dFBvb2xBZGRyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGxvYWRBZGRyKSkgKyBpbmRl
eCAqIDQpKSA8IDEwMjQpOwogCiAgICAgICAgIGludCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Pihjb25zdFBvb2xBZGRyKSArIChpbmRleCAqIDQpIC0gKChyZWludGVycHJldF9j
YXN0PHVpbnQzMl90PihpbnN0cnVjdGlvblB0cikgJiB+MHgwMykgKyA0KTsKLSAgICAgICAgaW5z
dHJ1Y3Rpb24gJj0weGYwMDsKKyAgICAgICAgaW5zdHJ1Y3Rpb24gJj0gMHgwZjAwOwogICAgICAg
ICBpbnN0cnVjdGlvbiB8PSAweGQwMDA7CiAgICAgICAgIG9mZnNldCAmPSAweDAzZmY7CiAgICAg
ICAgIGluc3RydWN0aW9uIHw9IChvZmZzZXQgPj4gMik7CkBAIC0xNDYyLDYgKzE0NjgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBpbnQzMl90
IHZhbHVlKQogICAgIHsKICAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KHdoZXJlKTsKKyAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlv
blB0clswXSAmIDB4ZjAwMCkgPT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSk7CiAgICAgICAgIGNo
YW5nZVBDcmVsYXRpdmVBZGRyZXNzKCgqaW5zdHJ1Y3Rpb25QdHIgJiAweGZmKSwgaW5zdHJ1Y3Rp
b25QdHIsIHZhbHVlKTsKICAgICB9CiAKQEAgLTE0NzcsNiArMTQ4NCw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDE2X3QqPihmcm9tKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25QdHIgLT0gMzsKKyAgICAgICAg
QVNTRVJUKChpbnN0cnVjdGlvblB0clswXSAmIDB4ZjAwMCkgPT0gTU9WTF9SRUFEX09GRlBDX09Q
Q09ERSk7CiAgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKCgqaW5zdHJ1Y3Rpb25QdHIg
JiAweGZmKSwgaW5zdHJ1Y3Rpb25QdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHRvKSk7
CiAgICAgfQogCkBAIC0xNDg5LDIzICsxNDk3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCgo
Kmluc3RydWN0aW9uUHRyICYgMHhmZjAwKSA9PSBCVF9PUENPREUpIHx8ICgoKmluc3RydWN0aW9u
UHRyICYgMHhmZjAwKSA9PSBCRl9PUENPREUpKSB7CiAgICAgICAgICAgICBvZmZzZXRCaXRzIC09
IDg7CiAgICAgICAgICAgICBpbnN0cnVjdGlvblB0cisrOworICAgICAgICAgICAgQVNTRVJUKChp
bnN0cnVjdGlvblB0clswXSAmIDB4ZjAwMCkgPT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSk7CiAg
ICAgICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhm
ZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
ID0gKEJSQUZfT1BDT0RFIHwgKCppbnN0cnVjdGlvblB0cisrICYgMHhmMDApKTsKICAgICAgICAg
ICAgICppbnN0cnVjdGlvblB0ciA9IGluc3RydWN0aW9uOwogICAgICAgICAgICAgcHJpbnRCbG9j
a0luc3RyKGluc3RydWN0aW9uUHRyLCByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihmcm9tKSAr
IDEsIDMpOworICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvblB0ciwgc2l6ZW9mKFNI
NFdvcmQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VS
VCgoKihpbnN0cnVjdGlvblB0ciArIDEpICYgQlJBRl9PUENPREUpID09IEJSQUZfT1BDT0RFKTsK
LSAgICAgICAgb2Zmc2V0Qml0cyAtPSA0OwotICAgICAgICBpZiAob2Zmc2V0Qml0cyA+PSAtNDA5
NiAmJiBvZmZzZXRCaXRzIDw9IDQwOTQpIHsKLSAgICAgICAgICAgICppbnN0cnVjdGlvblB0ciA9
IGdldE9wY29kZUdyb3VwNihCUkFfT1BDT0RFLCBvZmZzZXRCaXRzID4+IDEpOwotICAgICAgICAg
ICAgKigrK2luc3RydWN0aW9uUHRyKSA9IE5PUF9PUENPREU7Ci0gICAgICAgICAgICBwcmludEJs
b2NrSW5zdHIoaW5zdHJ1Y3Rpb25QdHIgLSAyLCByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihm
cm9tKSwgMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjaGFu
Z2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9u
UHRyLCBvZmZzZXRCaXRzIC0gMik7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMV0g
JiAweGYwZmYpID09IEJSQUZfT1BDT0RFKTsKKyAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJl
c3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAt
IDYpOwogICAgICAgICBwcmludEluc3RyKCppbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4oZnJvbSkpOwogICAgIH0KIApAQCAtMTUyMCwzMiArMTUyMiw0MyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBTSDRXb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8U0g0V29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwogICAgICAgICBpbnRwdHJfdCBkaWZmZXJl
bmNlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGluc3RydWN0aW9uKSArIDIgKiBzaXplb2YoU0g0V29yZCkpOwotICAgICAgICBp
bnQgbmJpbnN0ID0gMDsKIAotICAgICAgICBpZiAoKGRpZmZlcmVuY2UgPj0gLTQwOTYpICYmIChk
aWZmZXJlbmNlIDw9IDQwOTQpKSB7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IGdldE9w
Y29kZUdyb3VwNihCUkFfT1BDT0RFLCBkaWZmZXJlbmNlID4+IDEpOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25bMV0gPSBOT1BfT1BDT0RFOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVj
dGlvbiwgc2l6ZW9mKFNINFdvcmQpICogMik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICgoaW5zdHJ1Y3Rpb25bMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUp
IHsKKyAgICAgICAgICAgIGluc3RydWN0aW9uWzFdID0gKEJSQUZfT1BDT0RFIHwgKGluc3RydWN0
aW9uWzBdICYgMHgwZjAwKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvblsyXSA9IE5PUF9PUENP
REU7CisgICAgICAgICAgICBjYWNoZUZsdXNoKCZpbnN0cnVjdGlvblsxXSwgMiAqIHNpemVvZihT
SDRXb3JkKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9
IGdldE9wY29kZUdyb3VwMyhNT1ZMX1JFQURfT0ZGUENfT1BDT0RFLCBTSDRSZWdpc3RlcnM6OnIx
MywgMSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvblsxXSA9IGdldE9wY29kZUdyb3VwMihCUkFG
X09QQ09ERSwgU0g0UmVnaXN0ZXJzOjpyMTMpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMl0g
PSBOT1BfT1BDT0RFOworICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgMyAqIHNp
emVvZihTSDRXb3JkKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnN0cnVjdGlvbltuYmluc3Qr
K10gPSBnZXRPcGNvZGVHcm91cDMoTU9WTF9SRUFEX09GRlBDX09QQ09ERSwgc2NyYXRjaFJlZzIs
IDEpOwotICAgICAgICBpbnN0cnVjdGlvbltuYmluc3QrK10gPSBnZXRPcGNvZGVHcm91cDIoSk1Q
X09QQ09ERSwgc2NyYXRjaFJlZzIpOwotICAgICAgICBpbnN0cnVjdGlvbltuYmluc3QrK10gPSBO
T1BfT1BDT0RFOwotCi0gICAgICAgIGlmICghKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KGlu
c3RydWN0aW9uKSAmIDMpKQotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0KytdID0gTk9Q
X09QQ09ERTsKLQotICAgICAgICBpbnN0cnVjdGlvbltuYmluc3QrK10gPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPih0bykgJiAweGZmZmY7Ci0gICAgICAgIGluc3RydWN0aW9uW25iaW5zdCsr
XSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHRvKSA+PiAxNjsKLSAgICAgICAgY2FjaGVG
bHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKFNINFdvcmQpICogbmJpbnN0KTsKKyAgICAgICAgY2hh
bmdlUENyZWxhdGl2ZUFkZHJlc3MoaW5zdHJ1Y3Rpb25bMF0gJiAweDAwZmYsIGluc3RydWN0aW9u
LCBkaWZmZXJlbmNlIC0gMik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcCh2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkICppbW1wdHIpCisgICAgc3RhdGljIHZvaWQgcmV2
ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJkLCBpbnQg
aW1tKQogICAgIHsKICAgICAgICAgU0g0V29yZCAqaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8U0g0
V29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwogICAgICAgICBBU1NFUlQoKGluc25bMF0gJiAweGYw
MDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZl
QWRkcmVzcyhpbnNuWzBdICYgMHgwMGZmLCBpbnNuLCByZWludGVycHJldF9jYXN0PHVpbnQzMl90
PihpbW1wdHIpKTsKKworICAgICAgICBpZiAoKGluc25bMV0gJiAweGYwMDApID09IENNUEVRX09Q
Q09ERSkgeworICAgICAgICAgICAgaW5zblswXSA9IGdldE9wY29kZUdyb3VwMyhNT1ZMX1JFQURf
T0ZGUENfT1BDT0RFLCBTSDRSZWdpc3RlcnM6OnIxMywgaW5zblswXSAmIDB4MDBmZik7CisgICAg
ICAgICAgICBpbnNuWzFdID0gKGluc25bMV0gJiAweGYwMGYpIHwgKHJkIDw8IDgpIHwgKFNINFJl
Z2lzdGVyczo6cjEzIDw8IDQpOworICAgICAgICAgICAgY2FjaGVGbHVzaChpbnNuLCAyICogc2l6
ZW9mKFNINFdvcmQpKTsKKyAgICAgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKGluc25b
MF0gJiAweDAwZmYsIGluc24sIGltbSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoKGluc25bMF0gJiAweDAwZmYpID09IDEpCisgICAgICAgICAgICBpbnNu
WzFdID0gZ2V0T3Bjb2RlR3JvdXA2KEJSQV9PUENPREUsIDMpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpbnNuWzFdID0gTk9QX09QQ09ERTsKKworICAgICAgICBpbnNuWzJdID0gTk9QX09Q
Q09ERTsKKyAgICAgICAgY2FjaGVGbHVzaCgmaW5zblsxXSwgMiAqIHNpemVvZihTSDRXb3JkKSk7
CisKKyAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoaW5zblswXSAmIDB4MDBmZiwgaW5z
biwgaW1tKTsKICAgICB9CiAKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20s
IEFzc2VtYmxlckxhYmVsIHRvLCBKdW1wVHlwZSB0eXBlID0gSnVtcEZhcikKQEAgLTE1NTgsOCAr
MTU3MSw5IEBAIHB1YmxpYzoKICAgICAgICAgaW50IG9mZnNldEJpdHM7CiAKICAgICAgICAgaWYg
KHR5cGUgPT0gSnVtcE5lYXIpIHsKLSAgICAgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb24gPT0g
IEJUX09QQ09ERSkgfHwgKGluc3RydWN0aW9uID09IEJGX09QQ09ERSkgfHwgKGluc3RydWN0aW9u
ID09IEJSQV9PUENPREUpKTsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoY29kZVNpemUoKSAt
IGZyb20ubV9vZmZzZXQpIC0gNDsKKyAgICAgICAgICAgIEFTU0VSVCgoKChpbnN0cnVjdGlvbiA9
PSBCVF9PUENPREUpIHx8IChpbnN0cnVjdGlvbiA9PSBCRl9PUENPREUpKSAmJiAob2Zmc2V0ID49
IC0yNTYpICYmIChvZmZzZXQgPD0gMjU0KSkKKyAgICAgICAgICAgICAgICB8fCAoKGluc3RydWN0
aW9uID09IEJSQV9PUENPREUpICYmIChvZmZzZXQgPj0gLTQwOTYpICYmIChvZmZzZXQgPD0gNDA5
NCkpKTsKICAgICAgICAgICAgICppbnN0cnVjdGlvblB0cisrID0gaW5zdHJ1Y3Rpb24gfCAob2Zm
c2V0ID4+IDEpOwogICAgICAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIsIGZyb20u
bV9vZmZzZXQgKyAyKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NzQsNyArMTU4OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG9mZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1f
b2Zmc2V0KSAtIDg7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbiBePSAweDAyMDI7CiAgICAgICAg
ICAgICAqaW5zdHJ1Y3Rpb25QdHIrKyA9IGluc3RydWN0aW9uOwotICAgICAgICAgICAgaWYgKCgq
aW5zdHJ1Y3Rpb25QdHIgJiAweGYwMDApID09IDB4ZTAwMCkgeworICAgICAgICAgICAgaWYgKCgq
aW5zdHJ1Y3Rpb25QdHIgJiAweGYwMDApID09IE1PVklNTV9PUENPREUpIHsKICAgICAgICAgICAg
ICAgICB1aW50MzJfdCogYWRkciA9IGdldExkckltbUFkZHJlc3NPblBvb2woaW5zdHJ1Y3Rpb25Q
dHIsIG1fYnVmZmVyLnBvb2xBZGRyZXNzKCkpOwogICAgICAgICAgICAgICAgICphZGRyID0gb2Zm
c2V0Qml0czsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMTU5MCwyMyArMTYwNCwxOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgIG5vcCAgICAgICAgICAgICAgIG5vcAogICAgICAgICAqLwogICAgICAg
ICBBU1NFUlQoKCooaW5zdHJ1Y3Rpb25QdHIgKyAxKSAmIEJSQUZfT1BDT0RFKSA9PSBCUkFGX09Q
Q09ERSk7Ci0gICAgICAgIG9mZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0
KSAtIDQ7Ci0gICAgICAgIGlmIChvZmZzZXRCaXRzID49IC00MDk2ICYmIG9mZnNldEJpdHMgPD0g
NDA5NCkgewotICAgICAgICAgICAgKmluc3RydWN0aW9uUHRyID0gZ2V0T3Bjb2RlR3JvdXA2KEJS
QV9PUENPREUsIG9mZnNldEJpdHMgPj4gMSk7Ci0gICAgICAgICAgICAqKCsraW5zdHJ1Y3Rpb25Q
dHIpID0gTk9QX09QQ09ERTsKLSAgICAgICAgICAgIHByaW50QmxvY2tJbnN0cihpbnN0cnVjdGlv
blB0ciAtIDEsIGZyb20ubV9vZmZzZXQsIDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIG9mZnNldEJpdHMgPSAodG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0KSAt
IDY7CiAKICAgICAgICAgaW5zdHJ1Y3Rpb24gPSAqaW5zdHJ1Y3Rpb25QdHI7Ci0gICAgICAgIGlm
ICgoaW5zdHJ1Y3Rpb24gJiAweGYwMDApID09IDB4ZTAwMCkgeworICAgICAgICBpZiAoKGluc3Ry
dWN0aW9uICYgMHhmMDAwKSA9PSBNT1ZJTU1fT1BDT0RFKSB7CiAgICAgICAgICAgICB1aW50MzJf
dCogYWRkciA9IGdldExkckltbUFkZHJlc3NPblBvb2woaW5zdHJ1Y3Rpb25QdHIsIG1fYnVmZmVy
LnBvb2xBZGRyZXNzKCkpOwotICAgICAgICAgICAgKmFkZHIgPSBvZmZzZXRCaXRzIC0gMjsKKyAg
ICAgICAgICAgICphZGRyID0gb2Zmc2V0Qml0czsKICAgICAgICAgICAgIHByaW50SW5zdHIoKmlu
c3RydWN0aW9uUHRyLCBmcm9tLm1fb2Zmc2V0ICsgMik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9u
UHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzIC0gMik7CisgICAgICAgIEFT
U0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENP
REUpOworICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYg
MHhmZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzKTsKICAgICAgICAgcHJpbnRJbnN0cigq
aW5zdHJ1Y3Rpb25QdHIsIGZyb20ubV9vZmZzZXQgKyAyKTsKICAgICB9CiAKQEAgLTE2OTksNiAr
MTcwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuY29kZVNpemUoKTsgfQogCisgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBt
X2J1ZmZlci5kZWJ1Z09mZnNldCgpOyB9CisKICNpZmRlZiBTSDRfQVNTRU1CTEVSX1RSQUNJTkcK
ICAgICBzdGF0aWMgdm9pZCBwcmludEluc3RyKHVpbnQxNl90IG9wYywgdW5zaWduZWQgc2l6ZSwg
Ym9vbCBpc2RvdWJsZUluc3QgPSB0cnVlKQogICAgIHsKQEAgLTIyMzIsNiArMjI0Myw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU0g0QnVmZmVyIG1fYnVmZmVyOwogICAgIGludCBtX2NsYWlt
c2NyYXRjaFJlZzsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1f
aW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJ
KHJldmlzaW9uIDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsMjMgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3RzcHIocmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sZHNwcihyZWcpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBsb2FkUHRyTGlua1JlZyhhZGRyZXNzKTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgdG8pOwpAQCAtMjExLDExICsyMjgsMTEgQEAgcHVibGljOgogICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBH
UFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQ
UykKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRj
aEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICNlbGlm
IENQVShYODYpCiAgICAgICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwog
ICAgICAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCAxKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTUzOTk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjA5LDYgKzYwOSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHBva2Uo
YXJnMywgNCk7CiAgICAgfQorI2VsaWYgQ1BVKFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFy
ZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAg
ICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92
ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURv
dWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFy
ZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFy
ZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEs
IEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dh
cERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFy
ZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBw
bGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTg3NCw2ICs5MDUsMTMgQEAgcHVibGljOgogICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwg
VHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgJKHJldmlzaW9u
IDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDY5IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCisjaWYg
Q1BVKFNINCkKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcg
UmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVy
cyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBG
UFJSZWcgZnBSZWdUMCA9IFNINFJlZ2lzdGVyczo6ZHIwOworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgZnBSZWdUMSA9IFNINFJlZ2lzdGVyczo6ZHIyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUMiA9IFNINFJlZ2lzdGVyczo6ZHI0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUMyA9IFNINFJlZ2lzdGVyczo6ZHI2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
NCA9IFNINFJlZ2lzdGVyczo6ZHI4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9
IFNINFJlZ2lzdGVyczo6ZHIxMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFs
dWVGUFIgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJn
dW1lbnRGUFIwID0gU0g0UmVnaXN0ZXJzOjpkcjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBh
cmd1bWVudEZQUjEgPSBTSDRSZWdpc3RlcnM6OmRyNjsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9S
ZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBm
cFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisK
KyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1
cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVk
IHRvSW5kZXgoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxp
ZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgIDAsIEludmFs
aWRJbmRleCwgMSwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMiwgSW52YWxpZEluZGV4LCAz
LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICA0LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJ
bmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJkcjAi
LCAiZnIxIiwgImRyMiIsICJmcjMiLAorICAgICAgICAgICAgImRyNCIsICJmcjUiLCAiZHI2Iiwg
ImZyNyIsCisgICAgICAgICAgICAiZHI4IiwgImZyOSIsICJkcjEwIiwgImZyMTEiLAorICAgICAg
ICAgICAgImRyMTIiLCAiZnIxMyIsICJkcjE0IiwgImZyMTUiCisgICAgICAgIH07CisgICAgICAg
IHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5k
aWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRv
cjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTYsNiArNTU2LDc1IEBA
IHByaXZhdGU6CiAKICNlbmRpZgogCisjaWYgQ1BVKFNINCkKKyNkZWZpbmUgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVk
ZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSAxMDsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFNINFJlZ2lzdGVyczo6cjA7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMSA9IFNINFJlZ2lzdGVyczo6cjE7CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMiA9IFNINFJlZ2lzdGVyczo6cjI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMyA9IFNINFJlZ2lzdGVyczo6cjEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQg
PSBTSDRSZWdpc3RlcnM6OnI0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBTSDRS
ZWdpc3RlcnM6OnI1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDYgPSBTSDRSZWdpc3Rl
cnM6OnI2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBTSDRSZWdpc3RlcnM6OnI3
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDggPSBTSDRSZWdpc3RlcnM6OnI4OworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDkgPSBTSDRSZWdpc3RlcnM6OnI5OworICAgIC8vIFRo
ZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OmZwOworICAgIC8vIFRoZXNlIGNv
bnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVu
dCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjAgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9
IHJlZ1Q1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gcmVnVDY7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSByZWdUNzsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjEgPSByZWdUODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIg
PSByZWdUOTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOworCisg
ICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwg
cmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4LCBy
ZWdUOSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQor
CisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAg
IEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNCk7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE0XSA9IHsg
MCwgMSwgMiwgSW52YWxpZEluZGV4LCA0LCA1LCA2LCA3LCA4LCA5LCAzLCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlk
SW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInIw
IiwgInIxIiwgInIyIiwgInIzIiwgInI0IiwgInI1IiwgInI2IiwgInI3IiwKKyAgICAgICAgICAg
ICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKKyAg
ICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZm
ZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRl
cmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1
Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsNTMgQEAKICAgICAgICAgImIgIiBMT0NBTF9SRUZF
UkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCiAgICAgKTsKIAorI2Vs
aWYgQ09NUElMRVIoR0NDKSAmJiBDUFUoU0g0KQorCisjZGVmaW5lIFNINF9TQ1JBVENIX1JFR0lT
VEVSICJyMTEiCisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0UoZnVuY3Rpb24pIFwKKyAgICBhc20oIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5j
dGlvbikgIlxuIiBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAorICAg
ICAgICAic3RzIHByLCByNSIgIlxuIiBcCisgICAgICAgICJicmEgIiBMT0NBTF9SRUZFUkVOQ0Uo
ZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgICAgICJub3AiICJcbiIg
XAorICAgICk7CisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VDSShmdW5jdGlvbikgXAorICAgIGFzbSggXAorICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1
bmN0aW9uKSAiXG4iIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisg
ICAgICAgICJzdHMgcHIsIHI3IiAiXG4iIFwKKyAgICAgICAgIm1vdi5sIDJmLCAiIFNINF9TQ1JB
VENIX1JFR0lTVEVSICJcbiIgXAorICAgICAgICAiYnJhZiAiIFNINF9TQ1JBVENIX1JFR0lTVEVS
ICJcbiIgXAorICAgICAgICAibm9wIiAiXG4iIFwKKyAgICAgICAgIjE6IC5iYWxpZ24gNCIgIlxu
IiBcCisgICAgICAgICIyOiAubG9uZyAiIExPQ0FMX1JFRkVSRU5DRShmdW5jdGlvbikgIldpdGhS
ZXR1cm5BZGRyZXNzLTFiIiAiXG4iIFwKKyAgICApOworCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQ
RVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgb2Zmc2V0LCBzY3JhdGNoKSBcCisgICAg
YXNtKCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhm
dW5jdGlvbikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJcbiIgXAorICAgIFNZ
TUJPTF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAgInN0cyBwciwgIiBzY3Jh
dGNoICJcbiIgXAorICAgICAgICAibW92LmwgIiBzY3JhdGNoICIsIEAoIiBTVFJJTkdJWkUob2Zm
c2V0KSAiLCByMTUpIiAiXG4iIFwKKyAgICAgICAgIm1vdi5sIDJmLCAiIHNjcmF0Y2ggIlxuIiBc
CisgICAgICAgICJicmFmICIgc2NyYXRjaCAiXG4iIFwKKyAgICAgICAgIm5vcCIgIlxuIiBcCisg
ICAgICAgICIxOiAuYmFsaWduIDQiICJcbiIgXAorICAgICAgICAiMjogLmxvbmcgIiBMT0NBTF9S
RUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcy0xYiIgIlxuIiBcCisgICAgKTsK
KworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1bmN0
aW9uKSAgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCAwLCBT
SDRfU0NSQVRDSF9SRUdJU1RFUikKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVS
Tl9BRERSRVNTX0VKQ0koZnVuY3Rpb24pIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQURE
UkVTUyhmdW5jdGlvbiwgNCwgU0g0X1NDUkFUQ0hfUkVHSVNURVIpCisKICNlbmRpZgogCiAjZGVm
aW5lIFBfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwK
QEAgLTE4NTksOCArMTkwNiwxMSBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICI6CiAgICAgImFkZCAjLTQwLCByMTQiICJcbiIKICAgICAibW92LmwgQHIxNCwgcjE0IiAi
XG4iCiAgICAgIm1vdiByMTQsIHI0IiAiXG4iCi0gICAgImJyYSAiIExPQ0FMX1JFRkVSRU5DRShn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorICAgICJtb3YubCAyZiwg
IiBTSDRfU0NSQVRDSF9SRUdJU1RFUiAiXG4iCisgICAgImJyYWYgIiBTSDRfU0NSQVRDSF9SRUdJ
U1RFUiAiXG4iCiAgICAgIm5vcCIgIlxuIgorICAgICIxOiAuYmFsaWduIDQiICJcbiIKKyAgICAi
MjogLmxvbmcgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUpICItMWJcbiIKICk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTUzOTk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUxLDYgKzEzNTEsMTQgQEAgcHVibGljOgogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FS
RwogI2VuZGlmCiAKKy8vIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHRoYXQgY2Fu
bm90IGJlIHB1dCBoYWxmIGluIGFuIGFyZ3VtZW50IHJlZ2lzdGVyIGFuZCBoYWxmIG9uIHN0YWNr
IHdoZW4gdXNpbmcgU0g0IGFyY2hpdGVjdHVyZS4KKy8vIFRvIGF2b2lkIHRoaXMsIGxldCdzIG9j
Y3VweSB0aGUgNHRoIGFyZ3VtZW50IHJlZ2lzdGVyIChyNykgd2l0aCBhIGR1bW15IGFyZ3VtZW50
IHdoZW4gbmVjZXNzYXJ5LgorI2lmIENQVShTSDQpCisjZGVmaW5lIFNINF8zMkJJVF9EVU1NWV9B
UkcgICAgICBUcnVzdGVkSW1tMzIoMCksCisjZWxzZQorI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlf
QVJHCisjZW5kaWYKKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9ERkdP
cGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTUwNSwyMiArMTUxMywyMiBA
QCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3Bl
cmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRh
Zyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0pCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShF
QUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1Z
X0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBTSDRfMzJCSVRfRFVNTVlf
QVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KIApAQCAtMTU1OCwxOCArMTU2NiwxOCBAQCBwdWJsaWM6CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1Bh
eWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFC
SV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09w
ZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIFNINF8zMkJJVF9EVU1NWV9B
UkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9E
VU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAg
fQogCkBAIC0xNTgwLDYgKzE1ODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjdW5kZWYgRUFCSV8z
MkJJVF9EVU1NWV9BUkcKKyN1bmRlZiBTSDRfMzJCSVRfRFVNTVlfQVJHCiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oCkBAIC0xNjI5LDcgKzE2MzgsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFS
TSkgJiYgIUNQVShNSVBTKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFD
UFUoTUlQUykgJiYgIUNQVShTSDQpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkK
ICAgICB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIg
aGVscGVyIGZ1bmN0aW9uLiBUaGUgaGVscGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTUzOTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOCBAQCB2b2lk
IHBlcmZvcm1QbGF0Zm9ybVNwZWNpZmljSklUQXNzZXJ0aW9uCiAgICAgcGVyZm9ybUFSTUpJVEFz
c2VydGlvbnMoKTsKICNlbGlmIENQVShNSVBTKQogICAgIHBlcmZvcm1NSVBTSklUQXNzZXJ0aW9u
cygpOworI2VsaWYgQ1BVKFNINCkKKyAgICBwZXJmb3JtU0g0SklUQXNzZXJ0aW9ucygpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9u
IDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY2LDE1ICsyNjYsMjEgQEAgc3RydWN0IEpJVFN0YWNrRnJhbWUgewogICAg
IEpJVFN0dWJBcmcgYXJnc1s2XTsKIAogICAgIFJldHVybkFkZHJlc3NQdHIgdGh1bmtSZXR1cm5B
ZGRyZXNzOworCisgICAgdm9pZCogc2F2ZWRSODsKKyAgICB2b2lkKiBzYXZlZFI5OwogICAgIHZv
aWQqIHNhdmVkUjEwOwogICAgIHZvaWQqIHNhdmVkUjExOwogICAgIHZvaWQqIHNhdmVkUjEzOwog
ICAgIHZvaWQqIHNhdmVkUlBSOwogICAgIHZvaWQqIHNhdmVkUjE0OwogCisgICAgLy8gVGhlc2Ug
YXJndW1lbnRzIGFyZSBwYXNzZWQgaW4gcjUsIHI2IGFuZCByNy4KICAgICBKU1N0YWNrKiBzdGFj
azsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICBKU1ZhbHVlKiBleGNlcHRpb247CisK
KyAgICAvLyBUaGVzZSBhcmd1bWVudHMgYXJlIHBhc3NlZCBvbiB0aGUgc3RhY2suCiAgICAgdm9p
ZCogdW51c2VkMTsKICAgICBWTSogdm07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnNTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzU0g0LmgJKHJldmlzaW9uIDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnNTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorI2RlZmluZSBUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQgNTYK
KyNkZWZpbmUgU0FWRURfUjhfT0ZGU0VUIDYwCisKICNkZWZpbmUgU1lNQk9MX1NUUklORyhuYW1l
KSAjbmFtZQogLyogY29kZSAocjQpLCBKU1N0YWNrKiAocjUpLCBDYWxsRnJhbWUqIChyNiksIHZv
aWQqIHVudXNlZDEgKHI3KSwgdm9pZCogdW51c2VkMihzcCksIFZNIChzcCkqLwogCkBAIC01Nywx
MSArNjAsMTUgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgogICAgICJt
b3YubCByMTMsIEAtcjE1IiAiXG4iCiAgICAgIm1vdi5sIHIxMSwgQC1yMTUiICJcbiIKICAgICAi
bW92LmwgcjEwLCBALXIxNSIgIlxuIgotICAgICJhZGQgIy02MCwgcjE1IiAiXG4iCisgICAgIm1v
di5sIHI5LCBALXIxNSIgIlxuIgorICAgICJtb3YubCByOCwgQC1yMTUiICJcbiIKKyAgICAiYWRk
ICMtIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUjhfT0ZGU0VUKSAiLCByMTUiICJcbiIKICAg
ICAibW92IHI2LCByMTQiICJcbiIKICAgICAianNyIEByNCIgIlxuIgogICAgICJub3AiICJcbiIK
LSAgICAiYWRkICM2MCwgcjE1IiAiXG4iCisgICAgImFkZCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
U0FWRURfUjhfT0ZGU0VUKSAiLCByMTUiICJcbiIKKyAgICAibW92LmwgQHIxNSsscjgiICJcbiIK
KyAgICAibW92LmwgQHIxNSsscjkiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEwIiAiXG4iCiAg
ICAgIm1vdi5sIEByMTUrLHIxMSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTMiICJcbiIKQEAg
LTg0LDcgKzkxLDkgQEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAog
ICAgICJtb3YubCBAKHIwLHIxMikscjExIiAiXG4iCiAgICAgImpzciBAcjExIiAiXG4iCiAgICAg
Im5vcCIgIlxuIgotICAgICJhZGQgIzYwLCByMTUiICJcbiIKKyAgICAiYWRkICMiIFNUUklOR0la
RV9WQUxVRV9PRihTQVZFRF9SOF9PRkZTRVQpICIsIHIxNSIgIlxuIgorICAgICJtb3YubCBAcjE1
KyxyOCIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyOSIgIlxuIgogICAgICJtb3YubCBAcjE1Kyxy
MTAiICJcbiIKICAgICAibW92LmwgQHIxNSsscjExIiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIx
MyIgIlxuIgpAQCAtMTA4LDcgKzExNyw4IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1w
b2xpbmVTbG93cGEKICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCBy
MCBoYXMgY2FsbEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNzCiAgICAgIm5vcCIgIlxu
IgogICAgICJtb3YgcjAsIHIxNCIgIlxuIgotICAgICJqbXAgQHIxIiAiXG4iCisgICAgImxkcyBy
MSwgcHIiICJcbiIKKyAgICAicnRzIiAiXG4iCiAgICAgIm5vcCIgIlxuIgogICAgICIuYWxpZ24g
MiIgIlxuIgogICAgICIuTDIiU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgpIjou
bG9uZyAiIFNZTUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSJAR09UIFxuIgpAQCAt
MTE4LDcgKzEyOCw5IEBAIGFzbSB2b2xhdGlsZSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhj
dGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0
KSAiXG4iCiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCi0gICAg
ImFkZCAjNjAsIHIxNSIgIlxuIgorICAgICJhZGQgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVE
X1I4X09GRlNFVCkgIiwgcjE1IiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHI4IiAiXG4iCisgICAg
Im1vdi5sIEByMTUrLHI5IiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMCIgIlxuIgogICAgICJt
b3YubCBAcjE1KyxyMTEiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEzIiAiXG4iCkBAIC0xMzks
MTIgKzE1MSwxMiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAg
ICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAogICAgIFNZTUJPTF9T
VFJJTkcoY3RpXyMjb3ApICI6IiAiXG4iIFwKICAgICAic3RzIHByLCByMTEiICJcbiIgXAotICAg
ICJtb3YubCByMTEsIEAoMHgzOCwgcjE1KSIgIlxuIiBcCisgICAgIm1vdi5sIHIxMSwgQCgiIFNU
UklOR0laRV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICIsIHIxNSkiICJc
biIgXAogICAgICJtb3YubCAuTDIiU1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSIs
cjAiICJcbiIgXAogICAgICJtb3YubCBAKHIwLHIxMikscjExIiAiXG4iIFwKICAgICAianNyIEBy
MTEiICJcbiIgXAogICAgICJub3AiICJcbiIgXAotICAgICJtb3YubCBAKDB4MzgsIHIxNSksIHIx
MSAiICJcbiIgXAorICAgICJtb3YubCBAKCIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVS
Tl9BRERSRVNTX09GRlNFVCkgIiwgcjE1KSwgcjExICIgIlxuIiBcCiAgICAgImxkcyByMTEsIHBy
ICIgIlxuIiBcCiAgICAgInJ0cyIgIlxuIiBcCiAgICAgIm5vcCIgIlxuIiBcCkBAIC0xNTMsNiAr
MTY1LDEyIEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIKICAgICAp
OyBcCiAgICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04p
CiAKK3N0YXRpYyB2b2lkIHBlcmZvcm1TSDRKSVRBc3NlcnRpb25zKCkKK3sKKyAgICBBU1NFUlQo
T0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB0aHVua1JldHVybkFkZHJlc3Mp
ID09IFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZT
RVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgc2F2ZWRSOCkgPT0gU0FWRURfUjhfT0ZGU0VUKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKSVRTdHVic1NINF9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAx
NTM5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2NCwxNCArMTY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gU0g0UmVnaXN0
ZXJzOjpyMDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVn
aXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lz
dGVySUQgZnBSZWdUMCAgPSBTSDRSZWdpc3RlcnM6OmZyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0
IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxICA9IFNINFJlZ2lzdGVyczo6ZnIyOwotICAgICAgICBzdGF0
aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgID0gU0g0UmVnaXN0ZXJzOjpmcjQ7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyAgPSBTSDRSZWdpc3RlcnM6OmZy
NjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ICA9IFNINFJlZ2lz
dGVyczo6ZnI4OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDUgID0g
U0g0UmVnaXN0ZXJzOjpmcjEwOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZw
UmVnVDYgID0gU0g0UmVnaXN0ZXJzOjpmcjEyOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdp
c3RlcklEIGZwUmVnVDcgID0gU0g0UmVnaXN0ZXJzOjpmcjE0OworICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpkcjI7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFNINFJlZ2lzdGVyczo6ZHI0
OworICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBTSDRSZWdpc3Rl
cnM6OmRyNjsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ID0gU0g0
UmVnaXN0ZXJzOjpkcjg7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdU
NSA9IFNINFJlZ2lzdGVyczo6ZHIxMDsKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVk
IG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zaDQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2g0LnJiCShyZXZpc2lvbiAxNTM5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9zaDQucmIJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw4ICsyMTIsOCBAQCBl
bmQKICMKICMgd2lsbCBiZWNvbWU6CiAjCi0jIGFkZGkgZm9vLCBiYXIsIHRtcAotIyBicyB0bXAs
IGJhegorIyBhZGRpIGZvbywgYmFyCisjIGJzIGJhciwgYmF6CiAjCiAKIGRlZiBzaDRMb3dlclNp
bXBsZUJyYW5jaE9wcyhsaXN0KQpAQCAtNDA1LDcgKzQwNSw3IEBAIGNsYXNzIFNlcXVlbmNlCiAg
ICAgICAgICAgICB8IG5vZGUsIGFkZHJlc3MgfAogICAgICAgICAgICAgaWYgYWRkcmVzcy5pc19h
PyBBZGRyZXNzCiAgICAgICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAg
ICAgIHdoZW4gImJ0YnoiLCAiYnRibnoiLCAiY2JlcSIsICJiYmVxIiwgImJibmVxIiwgImJiYiIs
ICJsb2FkYiIKKyAgICAgICAgICAgICAgICB3aGVuICJidGJ6IiwgImJ0Ym56IiwgImNiZXEiLCAi
YmJlcSIsICJiYm5lcSIsICJiYmIiLCAibG9hZGIiLCAic3RvcmViIgogICAgICAgICAgICAgICAg
ICAgICAoMC4uMTUpLmluY2x1ZGU/IGFkZHJlc3Mub2Zmc2V0LnZhbHVlIGFuZAogICAgICAgICAg
ICAgICAgICAgICAgICAgKChub2RlLm9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5v
ZGUub3BlcmFuZHNbMF0uc2g0T3BlcmFuZCA9PSAicjAiKSBvcgogICAgICAgICAgICAgICAgICAg
ICAgICAgIChub2RlLm9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5vZGUub3BlcmFu
ZHNbMV0uc2g0T3BlcmFuZCA9PSAicjAiKSkKQEAgLTQ0MSwyNiArNDQxLDE1IEBAIGRlZiBzaDRP
cGVyYW5kcyhvcGVyYW5kcykKICAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuc2g0T3BlcmFuZH0uam9p
bigiLCAiKQogZW5kCiAKLWRlZiBlbWl0U0g0TG9hZDMyKGNvbnN0YW50LCBkZXN0KQotICAgIG91
dGxhYmVsID0gTG9jYWxMYWJlbC51bmlxdWUoImxvYWQzMm91dCIpCi0gICAgY29uc3RsYWJlbCA9
IExvY2FsTGFiZWwudW5pcXVlKCJsb2FkMzJjb25zdCIpCi0gICAgJGFzbS5wdXRzICJtb3YubCAj
e0xvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGNvbnN0bGFiZWwpLmFzbUxhYmVs
fSwgI3tkZXN0LnNoNE9wZXJhbmR9IgotICAgICRhc20ucHV0cyAiYnJhICN7TG9jYWxMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3V0bGFiZWwpLmFzbUxhYmVsfSIKLSAgICAkYXNtLnB1
dHMgIm5vcCIKLSAgICAkYXNtLnB1dHMgIi5iYWxpZ24gNCIKLSAgICBjb25zdGxhYmVsLmxvd2Vy
KCJTSDQiKQotICAgICRhc20ucHV0cyAiLmxvbmcgI3tjb25zdGFudH0iCi0gICAgb3V0bGFiZWwu
bG93ZXIoIlNINCIpCi1lbmQKLQogZGVmIGVtaXRTSDRMb2FkMzJBbmRKdW1wKGNvbnN0YW50LCBz
Y3JhdGNoKQogICAgIGNvbnN0bGFiZWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgibG9hZDMyY29uc3Qi
KQogICAgICRhc20ucHV0cyAibW92LmwgI3tMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBjb25zdGxhYmVsKS5hc21MYWJlbH0sICN7c2NyYXRjaC5zaDRPcGVyYW5kfSIKLSAgICAk
YXNtLnB1dHMgImptcCBAI3tzY3JhdGNoLnNoNE9wZXJhbmR9IgorICAgICRhc20ucHV0cyAiYnJh
ZiAje3NjcmF0Y2guc2g0T3BlcmFuZH0iCiAgICAgJGFzbS5wdXRzICJub3AiCisgICAgJGFzbS5w
dXRzICIxOiIKICAgICAkYXNtLnB1dHMgIi5iYWxpZ24gNCIKICAgICBjb25zdGxhYmVsLmxvd2Vy
KCJTSDQiKQotICAgICRhc20ucHV0cyAiLmxvbmcgI3tjb25zdGFudH0iCisgICAgJGFzbS5wdXRz
ICIubG9uZyAje2NvbnN0YW50fS0xYiIKIGVuZAogCiBkZWYgZW1pdFNINExvYWRJbW0ob3BlcmFu
ZHMpCkBAIC00ODAsNyArNDY5LDE1IEBAIGRlZiBlbWl0U0g0TG9hZEltbShvcGVyYW5kcykKICAg
ICAgICAgJGFzbS5wdXRzICIud29yZCAje29wZXJhbmRzWzBdLnZhbHVlfSIKICAgICAgICAgY29u
c3RsYWJlbC5sb3dlcigiU0g0IikKICAgICBlbHNlCi0gICAgICAgIGVtaXRTSDRMb2FkMzIob3Bl
cmFuZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgICBvdXRsYWJlbCA9IExvY2FsTGFi
ZWwudW5pcXVlKCJsb2FkMzJvdXQiKQorICAgICAgICBjb25zdGxhYmVsID0gTG9jYWxMYWJlbC51
bmlxdWUoImxvYWQzMmNvbnN0IikKKyAgICAgICAgJGFzbS5wdXRzICJtb3YubCAje0xvY2FsTGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGNvbnN0bGFiZWwpLmFzbUxhYmVsfSwgI3tvcGVy
YW5kc1sxXS5zaDRPcGVyYW5kfSIKKyAgICAgICAgJGFzbS5wdXRzICJicmEgI3tMb2NhbExhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvdXRsYWJlbCkuYXNtTGFiZWx9IgorICAgICAgICAk
YXNtLnB1dHMgIm5vcCIKKyAgICAgICAgJGFzbS5wdXRzICIuYmFsaWduIDQiCisgICAgICAgIGNv
bnN0bGFiZWwubG93ZXIoIlNINCIpCisgICAgICAgICRhc20ucHV0cyAiLmxvbmcgI3tvcGVyYW5k
c1swXS52YWx1ZX0iCisgICAgICAgIG91dGxhYmVsLmxvd2VyKCJTSDQiKQogICAgIGVuZAogZW5k
CiAKQEAgLTY1NiwxMCArNjUzLDEwIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBy
YWlzZSAiSW52YWxpZCBvcGVyYW5kcyBudW1iZXIgKCN7b3BlcmFuZHMuc2l6ZX0pIiB1bmxlc3Mg
b3BlcmFuZHMuc2l6ZSA9PSA1CiAgICAgICAgICAgICAkYXNtLnB1dHMgImRtdWxzLmwgI3tzaDRP
cGVyYW5kcyhbb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdXSl9IgogICAgICAgICAgICAgJGFzbS5w
dXRzICJzdHMgbWFjbCwgI3tvcGVyYW5kc1szXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRh
c20ucHV0cyAic3RzIG1hY2gsICN7b3BlcmFuZHNbMF0uc2g0T3BlcmFuZH0iCiAgICAgICAgICAg
ICAkYXNtLnB1dHMgImNtcC9weiAje29wZXJhbmRzWzNdLnNoNE9wZXJhbmR9IgogICAgICAgICAg
ICAgJGFzbS5wdXRzICJtb3Z0ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAgICAgICAg
ICAkYXNtLnB1dHMgImR0ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCisgICAgICAgICAgICAk
YXNtLnB1dHMgImFkZCAjLTEsICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInN0cyBtYWNoLCAje29wZXJhbmRzWzBdLnNoNE9wZXJhbmR9IgogICAgICAg
ICAgICAgJGFzbS5wdXRzICJjbXAvZXEgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJh
bmRzWzFdXSl9IgogICAgICAgICAgICAgJGFzbS5wdXRzICJiZiAje29wZXJhbmRzWzRdLmFzbUxh
YmVsfSIKICAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiLCAiYnRpbnoiLCAiYnRw
bnoiLCAiYnRibnoiCkBAIC03MTUsOSArNzEyLDkgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgICRhc20ucHV0cyAibW92YSBAKDE0LCBQQyksIHIwIgogICAgICAgICAgICAgJGFzbS5w
dXRzICJsZHMgcjAsIHByIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YubCBAKDYsIFBDKSwg
I3tvcGVyYW5kc1sxXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRhc20ucHV0cyAiam1wIEAj
e29wZXJhbmRzWzFdLnNoNE9wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJicmFmICN7
b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29w
ZXJhbmRzWzBdLnNoNE9wZXJhbmR9LCByMCIKLSAgICAgICAgICAgICRhc20ucHV0cyAiLmxvbmcg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIi5sb25nICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9LS4iCiAgICAgICAgIHdoZW4gImptcCIKICAgICAgICAgICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IExvY2FsTGFiZWxSZWZlcmVuY2UKICAgICAgICAgICAgICAg
ICAkYXNtLnB1dHMgImJyYSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKQEAgLTczNSwxNSArNzMy
LDE1IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIHdoZW4gImxvYWRiIgogICAgICAgICAg
ICAgJGFzbS5wdXRzICJtb3YuYiAje3NoNE9wZXJhbmRzKG9wZXJhbmRzKX0iCiAgICAgICAgICAg
ICAkYXNtLnB1dHMgImV4dHUuYiAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1sxXSwgb3BlcmFuZHNb
MV1dKX0iCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92
LmIgI3tzaDRPcGVyYW5kcyhvcGVyYW5kcyl9IgogICAgICAgICB3aGVuICJsb2FkaCIKICAgICAg
ICAgICAgICRhc20ucHV0cyAibW92LncgI3tzaDRPcGVyYW5kcyhvcGVyYW5kcyl9IgogICAgICAg
ICAgICAgJGFzbS5wdXRzICJleHR1LncgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9wZXJh
bmRzWzFdXSl9IgogICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAibG9hZHAiLCAic3Rv
cmVpIiwgInN0b3JlcCIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92LmwgI3tzaDRPcGVyYW5k
cyhvcGVyYW5kcyl9IgogICAgICAgICB3aGVuICJtb3ZlIgotICAgICAgICAgICAgaWYgb3BlcmFu
ZHNbMF0uaXNfYT8gTGFiZWxSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBlbWl0U0g0TG9hZDMy
KG9wZXJhbmRzWzBdLmFzbUxhYmVsLCBvcGVyYW5kc1sxXSkKLSAgICAgICAgICAgIGVsc2lmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlCiAgICAgICAgICAgICAgICAgZW1pdFNINExvYWRJbW0ob3BlcmFuZHMpCiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tzaDRPcGVy
YW5kcyhvcGVyYW5kcyl9IgpAQCAtNzUxLDE1ICs3NDgsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24K
ICAgICAgICAgd2hlbiAibGVhcCIKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEJh
c2VJbmRleAogICAgICAgICAgICAgICAgIGJpb3AgPSBvcGVyYW5kc1swXQotICAgICAgICAgICAg
ICAgIGlmIGJpb3Auc2NhbGUgPiAwCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92
ICN7c2g0T3BlcmFuZHMoW2Jpb3AuaW5kZXgsIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAg
ICAgICAgICBpZiBiaW9wLnNjYWxlU2hpZnQgPiAwCi0gICAgICAgICAgICAgICAgICAgICAgICBl
bWl0U0g0U2hpZnRJbW0oYmlvcC5zY2FsZVNoaWZ0LCBvcGVyYW5kc1sxXSwgImwiKQotICAgICAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQgI3tz
aDRPcGVyYW5kcyhbYmlvcC5iYXNlLCBvcGVyYW5kc1sxXV0pfSIKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7c2g0T3BlcmFuZHMoW2Jp
b3AuYmFzZSwgb3BlcmFuZHNbMV1dKX0iCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Yg
I3tzaDRPcGVyYW5kcyhbYmlvcC5pbmRleCwgb3BlcmFuZHNbMV1dKX0iCisgICAgICAgICAgICAg
ICAgaWYgYmlvcC5zY2FsZVNoaWZ0ID4gMAorICAgICAgICAgICAgICAgICAgICBlbWl0U0g0U2hp
ZnRJbW0oYmlvcC5zY2FsZVNoaWZ0LCBvcGVyYW5kc1sxXSwgImwiKQogICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkICN7c2g0T3BlcmFuZHMoW2Jpb3Au
YmFzZSwgb3BlcmFuZHNbMV1dKX0iCiAgICAgICAgICAgICAgICAgaWYgYmlvcC5vZmZzZXQudmFs
dWUgIT0gMAogICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje3NoNE9wZXJhbmRz
KFtiaW9wLm9mZnNldCwgb3BlcmFuZHNbMV1dKX0iCiAgICAgICAgICAgICAgICAgZW5kCkluZGV4
OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTU0MDA2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOC0xMyAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlh
bmNlYXVAbmRzLmNvbT4KKworICAgICAgICBERkdfSklUIGltcGxlbWVudGF0aW9uIGZvciBzaDQg
YXJjaGl0ZWN0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE5NzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0wOC0xMiAgUmFnbmVyIE1hZ2FsaGFlcyAg
PHJhbmdlci5uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEJyb2tlbiBidWlsZCB3aXRoIGJ1aWxk
LXdlYmtpdCAtLW5vLXdlYmdsCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE1Mzk5OSkKKysr
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1OSwxMiArNzU5
LDggQEAKICNpZiBDUFUoQVJNX1RIVU1CMikgJiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
QkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpKQogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAj
ZW5kaWYKLS8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk0uICovCi0jaWYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKLSNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQotI2VuZGlmCi0vKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gTUlQUy4gKi8KLSNpZiBDUFUoTUlQUykKKy8qIEVuYWJsZSB0aGUgREZHIEpJ
VCBvbiBBUk0sIE1JUFMgYW5kIFNINC4gKi8KKyNpZiBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBD
UFUoTUlQUykgfHwgQ1BVKFNINCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208707</attachid>
            <date>2013-08-14 02:14:01 -0700</date>
            <delta_ts>2013-08-14 09:50:03 -0700</delta_ts>
            <desc>DFG_JIT implementation for sh4 architecture (after split)</desc>
            <filename>sh4-dfg_119737_3.patch</filename>
            <type>text/plain</type>
            <size>38641</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MDQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDEzLTA4LTE0ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VhdUBuZHMuY29tPgorCisg
ICAgICAgIERGR19KSVQgaW1wbGVtZW50YXRpb24gZm9yIHNoNCBhcmNoaXRlY3R1cmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk3MzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6aW52
ZXJ0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmFkZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6OmxzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om11
bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6eG9y
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmUzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpzd2FwRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJTSDQ6OnN0b3JlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjptdWxE
b3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6ZGl2RG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojp6ZXJvRXh0ZW5kMzJUb1B0cik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3dhcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyU0g0OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJy
YW5jaE5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaEFkZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE11bDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnVyc2hpZnQzMik6CisgICAgICAgICogYXNzZW1i
bGVyL1NINEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OlNINEFzc2Vt
Ymxlcik6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6OlNINEFz
c2VtYmxlcjo6ZGVidWdPZmZzZXQpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1i
bHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSk6
CisgICAgICAgICogZGZnL0RGR0ZQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpGUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpGUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpGUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdH
UFJJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6R1BSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6R1BS
SW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorICAg
ICAgICAqIGppdC9KSVRTdHVic1NINC5oOgorCiAyMDEzLTA4LTEzICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGJ1aWxkLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJT
SDQuaAkocmV2aXNpb24gMTU0MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclNINC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDM0IEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIucmVsZWFzZVNjcmF0Y2gocmVnKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2Ug
RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gTm90RXF1YWw7CisgICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgICAgICByZXR1cm4gRXF1YWw7CisgICAgICAgIGNhc2UgQWJvdmU6CisgICAg
ICAgICAgICByZXR1cm4gQmVsb3dPckVxdWFsOworICAgICAgICBjYXNlIEFib3ZlT3JFcXVhbDoK
KyAgICAgICAgICAgIHJldHVybiBCZWxvdzsKKyAgICAgICAgY2FzZSBCZWxvdzoKKyAgICAgICAg
ICAgIHJldHVybiBBYm92ZU9yRXF1YWw7CisgICAgICAgIGNhc2UgQmVsb3dPckVxdWFsOgorICAg
ICAgICAgICAgcmV0dXJuIEFib3ZlOworICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgorICAgICAg
ICAgICAgcmV0dXJuIExlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAgY2FzZSBHcmVhdGVyVGhhbk9y
RXF1YWw6CisgICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47CisgICAgICAgIGNhc2UgTGVzc1Ro
YW46CisgICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICBjYXNl
IExlc3NUaGFuT3JFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICAvLyBJbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9ucwog
CiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTA4
LDYgKzEzNiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoc3Jj
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0
ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9PSBk
ZXN0KQorICAgICAgICAgICAgYWRkMzIoc3JjMiwgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIGFkZDMyKHNyYzEsIGRlc3Qp
OworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQpAQCAtMTYz
LDYgKzIwMSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxSZWdSZWcoc3Jj
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0
ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9PSBk
ZXN0KQorICAgICAgICAgICAgYW5kMzIoc3JjMiwgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIGFuZDMyKHNyYzEsIGRlc3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKKyAgICAgICAgbG9hZDMyKHNyYywgc2NyKTsKKyAgICAgICAgYW5kMzIoc2NyLCBkZXN0KTsK
KyAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1t
Lm1fdmFsdWUpIHsKQEAgLTIwMSw2ICsyNTcsMTIgQEAgcHVibGljOgogICAgICAgICByZWxlYXNl
U2NyYXRjaChzaGlmdFRtcCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICBsc2hpZnQzMihzaGlmdEFtb3VudCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBpbnQgaW1tTWFza2VkID0gaW1tLm1fdmFsdWUgJiAw
eDFmOwpAQCAtMjI2LDcgKzI4OCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG11bDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5p
bXVsbFJlZ1JlZyhzcmMsIGRlc3QpOworICAgICAgICBtdWwzMihzcmMsIGRlc3QsIGRlc3QpOyAg
ICAKKyAgICB9CisKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVsbFJl
Z1JlZyhzcmMxLCBzcmMyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzbWFjbChkZXN0KTsKICAg
ICB9CiAKQEAgLTI4NCw2ICszNTEsMTggQEAgcHVibGljOgogICAgICAgICBvcjMyKGltbSwgZGVz
dCk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2Ny
YXRjaCgpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRlc3Rw
dHIpOworICAgICAgICBSZWdpc3RlcklEIGRlc3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsUmVnUmVnKHNyYywgZGVzdHZhbCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxSZWdNZW0oZGVzdHZhbCwgZGVzdHB0cik7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGRlc3R2
YWwpOworICAgICAgICByZWxlYXNlU2NyYXRjaChkZXN0cHRyKTsKKyAgICB9CisKICAgICB2b2lk
IHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBpZiAoc3JjICE9IGRlc3QpIHsKQEAgLTMwNSw2ICszODQsMTIgQEAg
cHVibGljOgogICAgICAgICByZWxlYXNlU2NyYXRjaChzaGlmdFRtcCk7CiAgICAgfQogCisgICAg
dm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAgICBy
c2hpZnQzMihzaGlmdEFtb3VudCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpbnQgaW1t
TWFza2VkID0gaW1tLm1fdmFsdWUgJiAweDFmOwpAQCAtMzU2LDYgKzQ0MSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcmF0Y2hSZWcpOwogICAgIH0KIAorICAgIHZvaWQg
c3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
YWRkMzIoVHJ1c3RlZEltbTMyKC1pbW0ubV92YWx1ZSksIGFkZHJlc3MpOworICAgIH0KKwogICAg
IHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQpAQCAtNDM0LDYgKzUyNCwxNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9PSBkZXN0KQorICAgICAgICAgICAg
eG9yMzIoc3JjMiwgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShzcmMy
LCBkZXN0KTsKKyAgICAgICAgICAgIHhvcjMyKHNyYzEsIGRlc3QpOworICAgICAgICB9CisgICAg
fQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKQEAgLTg5NSw2ICs5OTUs
MTkgQEAgcHVibGljOgogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgIH0KIAorICAg
IHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOworCisgICAgICAg
IGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIGRlc3RwdHIpOworCisgICAgICAgIFJlZ2lz
dGVySUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoaW1tLCBzcmN2YWwp
OworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKHNyY3ZhbCwgZGVzdHB0cik7CisgICAg
ICAgIHJlbGVhc2VTY3JhdGNoKHNyY3ZhbCk7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGRlc3Rw
dHIpOworICAgIH0KKwogICAgIERhdGFMYWJlbDMyIGxvYWQzMldpdGhBZGRyZXNzT2Zmc2V0UGF0
Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBSZWdp
c3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwpAQCAtOTY5LDYgKzEwODIsMTggQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzd2FwRG91YmxlKEZQUmVnaXN0ZXJJRCBm
cjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgeworICAgICAgICBpZiAoZnIxICE9IGZyMikgewor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZmxkc2ZwdWwoKEZQUmVnaXN0ZXJJRCkoZnIxICsgMSkp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWdSZWcoKEZQUmVnaXN0ZXJJRCkoZnIy
ICsgMSksIChGUFJlZ2lzdGVySUQpKGZyMSArIDEpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmZzdHNmcHVsKChGUFJlZ2lzdGVySUQpKGZyMiArIDEpKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmZsZHNmcHVsKGZyMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlZ1JlZyhm
cjIsIGZyMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5mc3RzZnB1bChmcjIpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgdm9pZCBsb2FkRmxvYXQoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0
Y2goKTsKQEAgLTEwNTgsNiArMTE4MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJl
c3MpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4o
Y29uc3RfY2FzdDx2b2lkKj4oYWRkcmVzcykpICsgOCwgc2NyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZm1vdnNXcml0ZXJuZGVjKHNyYywgc2NyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNX
cml0ZXJuZGVjKChGUFJlZ2lzdGVySUQpKHNyYyArIDEpLCBzY3IpOworICAgICAgICByZWxlYXNl
U2NyYXRjaChzY3IpOworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZGFkZFJl
Z1JlZyhzcmMsIGRlc3QpOwpAQCAtMTA4MCw2ICsxMjE0LDE4IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuZHN1YlJlZ1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3Vi
RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAgICBtb3Zl
RG91YmxlKG9wMSwgZnNjcmF0Y2gpOworICAgICAgICAgICAgc3ViRG91YmxlKG9wMiwgZnNjcmF0
Y2gpOworICAgICAgICAgICAgbW92ZURvdWJsZShmc2NyYXRjaCwgZGVzdCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKG9wMSwgZGVzdCk7CisgICAgICAgICAgICBz
dWJEb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgc3ViRG91
YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBs
b2FkRG91YmxlKGFkZHJlc3MsIGZzY3JhdGNoKTsKQEAgLTEwOTEsNiArMTIzNywxNiBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmRtdWxSZWdSZWcoc3JjLCBkZXN0KTsKICAgICB9CiAK
KyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBG
UFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChvcDEgPT0gZGVzdCkKKyAgICAg
ICAgICAgIG11bERvdWJsZShvcDIsIGRlc3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IG1vdmVEb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgICAgIG11bERvdWJsZShvcDEsIGRlc3Qp
OworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBtdWxEb3VibGUoQWRkcmVzcyBhZGRyZXNz
LCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzcywg
ZnNjcmF0Y2gpOwpAQCAtMTEwMiw2ICsxMjU4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuZGRpdlJlZ1JlZyhzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgZGl2RG91Ymxl
KEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAgICBtb3ZlRG91Ymxl
KG9wMSwgZnNjcmF0Y2gpOworICAgICAgICAgICAgZGl2RG91YmxlKG9wMiwgZnNjcmF0Y2gpOwor
ICAgICAgICAgICAgbW92ZURvdWJsZShmc2NyYXRjaCwgZGVzdCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKG9wMSwgZGVzdCk7CisgICAgICAgICAgICBkaXZEb3Vi
bGUob3AyLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgbmVnYXRlRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92
ZURvdWJsZShzcmMsIGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5kbmVnKGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZsZHNmcHVsKHNyYyk7
CkBAIC0xMzk1LDYgKzE1NjksMTEgQEAgcHVibGljOgogICAgICAgICBtb3ZlKHNyYywgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCB6ZXJvRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVt
cFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7CkBAIC0xNDM3LDEyICsxNjE2LDU0IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRydW5j
YXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFu
Y2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAg
eworICAgICAgICBKdW1wIHJlc3VsdDsKKyAgICAgICAgUmVnaXN0ZXJJRCBpbnRzY3IgPSBjbGFp
bVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KDB4ODAwMDAwMDAs
IGludHNjcik7CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGludHNjciwgZnNjcmF0Y2gp
OworICAgICAgICBhZGREb3VibGUoc3JjLCBmc2NyYXRjaCk7CisgICAgICAgIHRydW5jYXRlRG91
YmxlVG9JbnQzMihmc2NyYXRjaCwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgMTYsIHNpemVv
Zih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCA0KTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigtMSwgaW50c2NyKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1
YWwpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigxLCBpbnRzY3IpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3VibFJlZ1JlZyhpbnRzY3IsIGRlc3QpOworICAgICAgICAg
ICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
SnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKC0xLCBpbnRzY3IpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3IsIFNINENvbmRpdGlvbihF
cXVhbCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIGludHNjcik7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVnKGludHNjciwgZGVzdCk7CisgICAgICAg
ICAgICByZXN1bHQgPSBicmFuY2hGYWxzZSgpOworICAgICAgICAgICAgb3V0LmxpbmsodGhpcyk7
CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW50c2NyKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5mdHJjZHJtZnB1bChzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHNmcHVsUmVnKGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIGludHNjciA9
IGNsYWltU2NyYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg4MDAw
MDAwMCwgaW50c2NyKTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoaW50c2NyLCBmc2Ny
YXRjaCk7CisgICAgICAgIGFkZERvdWJsZShzcmMsIGZzY3JhdGNoKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZnRyY2RybWZwdWwoZnNjcmF0Y2gpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHNmcHVs
UmVnKGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVnKGludHNjciwgZGVzdCk7
CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKGludHNjcik7CisgICAgfQorCiAgICAgLy8gU3RhY2sg
bWFuaXB1bGF0aW9uIG9wZXJhdGlvbnMKIAogICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTE0ODksNiArMTcxMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRD
b25zdGFudChpbW0uYXNJbnRwdHIoKSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzd2FwKFJl
Z2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQorICAgIHsKKyAgICAgICAgaWYgKHJlZzEg
IT0gcmVnMikgeworICAgICAgICAgICAgeG9yMzIocmVnMSwgcmVnMik7CisgICAgICAgICAgICB4
b3IzMihyZWcyLCByZWcxKTsKKyAgICAgICAgICAgIHhvcjMyKHJlZzEsIHJlZzIpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcocmlnaHQsIGxlZnQsIFNINENvbmRp
dGlvbihjb25kKSk7CkBAIC0xNzE4LDggKzE5NDgsMzYgQEAgcHVibGljOgogICAgICAgICByZWxl
YXNlU2NyYXRjaChzY3IpOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7
CisKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3IpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjciwgc2NyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuam1wUmVnKHNjcik7CisgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CisgICAgfQorCiAg
ICAgLy8gQXJpdGhtZXRpYyBjb250cm9sIGZsb3cgb3BlcmF0aW9ucwogCisgICAgSnVtcCBicmFu
Y2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8
IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKworICAgICAgICBpZiAoY29u
ZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBUcnVz
dGVkSW1tMzIoLTEpLCBzcmNEZXN0LCBzcmNEZXN0KTsKKworICAgICAgICBuZWczMihzcmNEZXN0
KTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmNtcHB6KHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgc3JjRGVzdCwgRXF1YWwpOworICAgICAg
ICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgp
OworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVP
clplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE3NDAs
NiArMTk5OCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAoY29uZCA9PSBOb25aZXJvKSA/
IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNy
YzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworCisgICAgICAgIGlmIChjb25k
ID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICBpZiAoc3JjMSA9PSBkZXN0KQorICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVnUmVnKHNyYzIsIGRlc3QpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGR2bFJlZ1JlZyhzcmMxLCBkZXN0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CisgICAgICAgIH0KKworICAgICAgICBhZGQz
MihzcmMxLCBzcmMyLCBkZXN0KTsKKworICAgICAgICBpZiAoKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6
KGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIChjb25kID09IFNpZ25lZCkgPyBicmFuY2hGYWxz
ZSgpIDogYnJhbmNoVHJ1ZSgpOworICAgICAgICB9CisKKyAgICAgICAgY29tcGFyZTMyKDAsIGRl
c3QsIEVxdWFsKTsKKyAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNoRmFs
c2UoKSA6IGJyYW5jaFRydWUoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09
IE5vblplcm8pKTsKQEAgLTE4MzMsNiArMjExNiwzNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAoY29uZCA9PSBOb25aZXJvKSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisKKyAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgc2Nyc2lnbiA9IGNsYWltU2NyYXRjaCgp
OworICAgICAgICAgICAgUmVnaXN0ZXJJRCBtc2JyZXMgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmRtdWxzbFJlZ1JlZyhzcmMxLCBzcmMyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0c21hY2woZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBw
eihkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnQoc2Nyc2lnbik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoLTEsIHNjcnNpZ24pOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3RzbWFjaChtc2JyZXMpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJl
Z1JlZyhtc2JyZXMsIHNjcnNpZ24sIFNINENvbmRpdGlvbihFcXVhbCkpOworICAgICAgICAgICAg
cmVsZWFzZVNjcmF0Y2gobXNicmVzKTsKKyAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcnNp
Z24pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7CisgICAgICAgIH0KKworICAg
ICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWdu
ZWQpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEZhbHNlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwg
ZGVzdCwgRXF1YWwpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hG
YWxzZSgpIDogYnJhbmNoVHJ1ZSgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OwpAQCAtMTk1OCw2ICsyMjcxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2hpZnRUbXApOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
b3ZlKHNyYywgZGVzdCk7CisgICAgICAgIHVyc2hpZnQzMihzaGlmdEFtb3VudCwgZGVzdCk7Cisg
ICAgfQorCiAgICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaW50IGltbU1hc2tlZCA9IGltbS5tX3ZhbHVlICYgMHgxZjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIu
aAkocmV2aXNpb24gMTU0MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9T
SDRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDYgKzMzOCw4IEBAIHB1YmxpYzoK
IAogICAgIFNINEFzc2VtYmxlcigpCiAgICAgICAgIDogbV9jbGFpbXNjcmF0Y2hSZWcoMHgwKQor
ICAgICAgICAsIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC0x
MzAwLDEwICsxMzAyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVs
KCk7CiAgICAgfQogCi0gICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQorICAgIEFzc2VtYmxlckxh
YmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCiAgICAgewogICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZUZvckFueUluc3RydWN0aW9uKCk7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IGxh
YmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9p
bnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgaW50IHNpemVPZkNvbnN0YW50UG9vbCgpCkBAIC0xNjkwLDYgKzE3MDcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEo
KTsgfQogICAgIHNpemVfdCBjb2RlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvZGVT
aXplKCk7IH0KIAorICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIu
ZGVidWdPZmZzZXQoKTsgfQorCiAjaWZkZWYgU0g0X0FTU0VNQkxFUl9UUkFDSU5HCiAgICAgc3Rh
dGljIHZvaWQgcHJpbnRJbnN0cih1aW50MTZfdCBvcGMsIHVuc2lnbmVkIHNpemUsIGJvb2wgaXNk
b3VibGVJbnN0ID0gdHJ1ZSkKICAgICB7CkBAIC0yMjIzLDYgKzIyNDIsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFNINEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBpbnQgbV9jbGFpbXNjcmF0Y2hS
ZWc7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAxNTQwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDIzIEBAIHB1YmxpYzoKICAgICB9CiAj
ZW5kaWYKIAorI2lmIENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN0c3ByKHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGRzcHIocmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbG9hZFB0ckxpbmtSZWcoYWRkcmVzcyk7CisgICAgfQorI2VuZGlmCisKICAg
ICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSks
IHRvKTsKQEAgLTIxMSwxMSArMjI4LDExIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6
cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCisjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBHUFJS
ZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAjZWxpZiBDUFUoWDg2
KQogICAgICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsKICAgICAgICAg
cG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE1NDA0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwOSw2ICs2MDksMzcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBwb2tlKGFyZzMsIDQp
OwogICAgIH0KKyNlbGlmIENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAo
YXJnMiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUo
YXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJn
MiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN3YXBEb3VibGUo
RlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmcz
KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0u
IgogI2VuZGlmCkBAIC04NzQsNiArOTA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJ
bW0zMiBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQpCiAgICAgewogICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCShyZXZpc2lvbiAxNTQwNDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMjM4LDYgKzIzOCw2OSBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAorI2lmIENQVShTSDQp
CisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVy
VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2Owor
CisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZw
UmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDEgPSBTSDRSZWdpc3RlcnM6OmRyMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIg
PSBTSDRSZWdpc3RlcnM6OmRyNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBT
SDRSZWdpc3RlcnM6OmRyNjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBTSDRS
ZWdpc3RlcnM6OmRyODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBTSDRSZWdp
c3RlcnM6OmRyMTA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0g
U0g0UmVnaXN0ZXJzOjpkcjA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBS
MCA9IFNINFJlZ2lzdGVyczo6ZHI0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRG
UFIxID0gU0g0UmVnaXN0ZXJzOjpkcjY7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIo
dW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lz
dGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geworICAgICAgICAgICAgZnBSZWdUMCwg
ZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAg
IEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lz
dGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4
KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcp
OworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgs
IDEsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDIsIEludmFsaWRJbmRleCwgMywgSW52YWxp
ZEluZGV4LAorICAgICAgICAgICAgNCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisg
ICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JS
ZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
RlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiZHIwIiwgImZyMSIs
ICJkcjIiLCAiZnIzIiwKKyAgICAgICAgICAgICJkcjQiLCAiZnI1IiwgImRyNiIsICJmcjciLAor
ICAgICAgICAgICAgImRyOCIsICJmcjkiLCAiZHIxMCIsICJmcjExIiwKKyAgICAgICAgICAgICJk
cjEyIiwgImZyMTMiLCAiZHIxNCIsICJmcjE1IgorICAgICAgICB9OworICAgICAgICByZXR1cm4g
bmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5
cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVyYXRvciBmcHJfaXRlcmF0b3I7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R1BSSW5mby5oCShyZXZpc2lvbiAxNTQwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNTU2LDYgKzU1Niw3NSBAQCBwcml2YXRl
OgogCiAjZW5kaWYKIAorI2lmIENQVShTSDQpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJl
ZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0
ZXJzID0gMTA7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDAgPSBTSDRSZWdpc3RlcnM6OnIwOworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDEgPSBTSDRSZWdpc3RlcnM6OnIxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDIgPSBTSDRSZWdpc3RlcnM6OnIyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBT
SDRSZWdpc3RlcnM6OnIxMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gU0g0UmVn
aXN0ZXJzOjpyNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gU0g0UmVnaXN0ZXJz
OjpyNTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2ID0gU0g0UmVnaXN0ZXJzOjpyNjsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q3ID0gU0g0UmVnaXN0ZXJzOjpyNzsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q4ID0gU0g0UmVnaXN0ZXJzOjpyODsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1Q5ID0gU0g0UmVnaXN0ZXJzOjpyOTsKKyAgICAvLyBUaGVzZSByZWdp
c3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNh
Y2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNo
ZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxG
cmFtZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpmcDsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMg
cHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1
cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIw
ID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSByZWdUNTsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IHJlZ1Q2OworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gcmVnVDc7CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBub25BcmdHUFIwID0gcmVnVDM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdH
UFIxID0gcmVnVDg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDk7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKKworICAgIHN0YXRp
YyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCBy
ZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdUOCwgcmVnVDkgfTsK
KyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTQpOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNF0gPSB7IDAsIDEsIDIs
IEludmFsaWRJbmRleCwgNCwgNSwgNiwgNywgOCwgOSwgMywgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZv
clJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
ZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJyMCIsICJyMSIs
ICJyMiIsICJyMyIsICJyNCIsICJyNSIsICJyNiIsICJyNyIsCisgICAgICAgICAgICAicjgiLCAi
cjkiLCAicjEwIiwgInIxMSIsICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiCisgICAgICAgIH07
CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9
OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8R1BSSW5mbz46Oml0ZXJhdG9yIGdw
cl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTQwNDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjIsNiArMjYyLDUzIEBACiAgICAgICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGZ1
bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAogICAgICk7CiAKKyNlbGlmIENPTVBJ
TEVSKEdDQykgJiYgQ1BVKFNINCkKKworI2RlZmluZSBTSDRfU0NSQVRDSF9SRUdJU1RFUiAicjEx
IgorCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0
aW9uKSBcCisgICAgYXNtKCBcCisgICAgIi50ZXh0IiAiXG4iIFwKKyAgICAiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhmdW5jdGlvbikgIlxuIiBcCisgICAgSElERV9TWU1CT0woZnVuY3Rpb24pICJc
biIgXAorICAgIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKKyAgICAgICAgInN0
cyBwciwgcjUiICJcbiIgXAorICAgICAgICAiYnJhICIgTE9DQUxfUkVGRVJFTkNFKGZ1bmN0aW9u
KSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAorICAgICAgICAibm9wIiAiXG4iIFwKKyAgICAp
OworCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0koZnVu
Y3Rpb24pIFwKKyAgICBhc20oIFwKKyAgICAiLnRleHQiICJcbiIgXAorICAgICIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBISURFX1NZTUJPTChmdW5jdGlvbikg
IlxuIiBcCisgICAgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIjoiICJcbiIgXAorICAgICAgICAi
c3RzIHByLCByNyIgIlxuIiBcCisgICAgICAgICJtb3YubCAyZiwgIiBTSDRfU0NSQVRDSF9SRUdJ
U1RFUiAiXG4iIFwKKyAgICAgICAgImJyYWYgIiBTSDRfU0NSQVRDSF9SRUdJU1RFUiAiXG4iIFwK
KyAgICAgICAgIm5vcCIgIlxuIiBcCisgICAgICAgICIxOiAuYmFsaWduIDQiICJcbiIgXAorICAg
ICAgICAiMjogLmxvbmcgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRk
cmVzcy0xYiIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhf
UkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIG9mZnNldCwgc2NyYXRjaCkgXAorICAgIGFzbSggXAor
ICAgICIudGV4dCIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24p
ICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBTWU1CT0xfU1RS
SU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAgICJzdHMgcHIsICIgc2NyYXRjaCAiXG4i
IFwKKyAgICAgICAgIm1vdi5sICIgc2NyYXRjaCAiLCBAKCIgU1RSSU5HSVpFKG9mZnNldCkgIiwg
cjE1KSIgIlxuIiBcCisgICAgICAgICJtb3YubCAyZiwgIiBzY3JhdGNoICJcbiIgXAorICAgICAg
ICAiYnJhZiAiIHNjcmF0Y2ggIlxuIiBcCisgICAgICAgICJub3AiICJcbiIgXAorICAgICAgICAi
MTogLmJhbGlnbiA0IiAiXG4iIFwKKyAgICAgICAgIjI6IC5sb25nICIgTE9DQUxfUkVGRVJFTkNF
KGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MtMWIiICJcbiIgXAorICAgICk7CisKKyNkZWZp
bmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShmdW5jdGlvbikgIEZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgMCwgU0g0X1NDUkFU
Q0hfUkVHSVNURVIpCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVT
U19FSkNJKGZ1bmN0aW9uKSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVu
Y3Rpb24sIDQsIFNINF9TQ1JBVENIX1JFR0lTVEVSKQorCiAjZW5kaWYKIAogI2RlZmluZSBQX0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSBcCkBAIC0xODU5
LDggKzE5MDYsMTEgQEAgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOgog
ICAgICJhZGQgIy00MCwgcjE0IiAiXG4iCiAgICAgIm1vdi5sIEByMTQsIHIxNCIgIlxuIgogICAg
ICJtb3YgcjE0LCByNCIgIlxuIgotICAgICJicmEgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyAgICAibW92LmwgMmYsICIgU0g0X1ND
UkFUQ0hfUkVHSVNURVIgIlxuIgorICAgICJicmFmICIgU0g0X1NDUkFUQ0hfUkVHSVNURVIgIlxu
IgogICAgICJub3AiICJcbiIKKyAgICAiMTogLmJhbGlnbiA0IiAiXG4iCisgICAgIjI6IC5sb25n
ICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
LTFiXG4iCiApOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NDA0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1MSw2
ICsxMzUxLDE0IEBAIHB1YmxpYzoKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcKICNlbmRp
ZgogCisvLyBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlciB0aGF0IGNhbm5vdCBiZSBw
dXQgaGFsZiBpbiBhbiBhcmd1bWVudCByZWdpc3RlciBhbmQgaGFsZiBvbiBzdGFjayB3aGVuIHVz
aW5nIFNINCBhcmNoaXRlY3R1cmUuCisvLyBUbyBhdm9pZCB0aGlzLCBsZXQncyBvY2N1cHkgdGhl
IDR0aCBhcmd1bWVudCByZWdpc3RlciAocjcpIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5l
Y2Vzc2FyeS4KKyNpZiBDUFUoU0g0KQorI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlfQVJHICAgICAg
VHJ1c3RlZEltbTMyKDApLAorI2Vsc2UKKyNkZWZpbmUgU0g0XzMyQklUX0RVTU1ZX0FSRworI2Vu
ZGlmCisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfREZHT3BlcmF0aW9u
X0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAg
IHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTE1MDUsMjIgKzE1MTMsMjIgQEAgcHVibGlj
OgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9F
Skogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRh
Zyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5
bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQs
IGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgaW1t
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVnIGFy
ZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZyksIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGltbSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcy
UGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAKQEAgLTE1NTgsMTggKzE1NjYsMTggQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAg
IH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
RU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcs
IEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9h
ZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQ
YXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0RGR09wZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KIApAQCAt
MTU4MCw2ICsxNTg4LDcgQEAgcHVibGljOgogICAgIH0KIAogI3VuZGVmIEVBQklfMzJCSVRfRFVN
TVlfQVJHCisjdW5kZWYgU0g0XzMyQklUX0RVTU1ZX0FSRwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KApAQCAtMTYyOSw3ICsxNjM4LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFD
UFUoTUlQUykKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BVKE1JUFMp
ICYmICFDUFUoU0g0KQogICAgIHZvaWQgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpCiAgICAgewog
ICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBjYWxsIG91dCB0byBhICJuYXRpdmUiIGhlbHBlciBm
dW5jdGlvbi4gVGhlIGhlbHBlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAkocmV2aXNpb24gMTU0MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDggQEAgc3RydWN0IEpJVFN0YWNrRnJh
bWUgewogCiAgICAgUmV0dXJuQWRkcmVzc1B0ciB0aHVua1JldHVybkFkZHJlc3M7CiAKKyAgICB2
b2lkKiBzYXZlZFI4OworICAgIHZvaWQqIHNhdmVkUjk7CiAgICAgdm9pZCogc2F2ZWRSMTA7CiAg
ICAgdm9pZCogc2F2ZWRSMTE7CiAgICAgdm9pZCogc2F2ZWRSMTM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVic1NINC5oCShyZXZpc2lvbiAxNTQwNDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzU0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEx
ICs2MCwxNSBAQCBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCiAgICAgIm1v
di5sIHIxMywgQC1yMTUiICJcbiIKICAgICAibW92LmwgcjExLCBALXIxNSIgIlxuIgogICAgICJt
b3YubCByMTAsIEAtcjE1IiAiXG4iCisgICAgIm1vdi5sIHI5LCBALXIxNSIgIlxuIgorICAgICJt
b3YubCByOCwgQC1yMTUiICJcbiIKICAgICAiYWRkICMtIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FW
RURfUjhfT0ZGU0VUKSAiLCByMTUiICJcbiIKICAgICAibW92IHI2LCByMTQiICJcbiIKICAgICAi
anNyIEByNCIgIlxuIgogICAgICJub3AiICJcbiIKICAgICAiYWRkICMiIFNUUklOR0laRV9WQUxV
RV9PRihTQVZFRF9SOF9PRkZTRVQpICIsIHIxNSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyOCIg
IlxuIgorICAgICJtb3YubCBAcjE1KyxyOSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTAiICJc
biIKICAgICAibW92LmwgQHIxNSsscjExIiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxu
IgpAQCAtODgsNiArOTIsOCBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAi
OiIgCiAgICAgImpzciBAcjExIiAiXG4iCiAgICAgIm5vcCIgIlxuIgogICAgICJhZGQgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFNBVkVEX1I4X09GRlNFVCkgIiwgcjE1IiAiXG4iCisgICAgIm1vdi5s
IEByMTUrLHI4IiAiXG4iCisgICAgIm1vdi5sIEByMTUrLHI5IiAiXG4iCiAgICAgIm1vdi5sIEBy
MTUrLHIxMCIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTEiICJcbiIKICAgICAibW92LmwgQHIx
NSsscjEzIiAiXG4iCkBAIC0xMjMsNiArMTI5LDggQEAgYXNtIHZvbGF0aWxlICgKIEhJREVfU1lN
Qk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05v
dENhdWdodCkgIjoiICJcbiIKICAgICAiYWRkICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9S
OF9PRkZTRVQpICIsIHIxNSIgIlxuIgorICAgICJtb3YubCBAcjE1KyxyOCIgIlxuIgorICAgICJt
b3YubCBAcjE1KyxyOSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTAiICJcbiIKICAgICAibW92
LmwgQHIxNSsscjExIiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxuIgpJbmRleDogU291
cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NDA0MikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTMtMDgtMTQgIEp1bGllbiBCcmlhbmNlYXUgIDxqYnJpYW5jZWF1
QG5kcy5jb20+CisKKyAgICAgICAgREZHX0pJVCBpbXBsZW1lbnRhdGlvbiBmb3Igc2g0IGFyY2hp
dGVjdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExOTczNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDgtMTMgIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxh
cnVyYWprdUBjaXNjby5jb20+CiAKICAgICAgICAgW1dURl0gW0pTQ10gUmVwbGFjZSBjdXJyZW50
VGltZSgpIHdpdGggbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgaW4gYWxsIHBvc3NpYmxl
IHBsYWNlcwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxNTQwNDEpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTksMTIgKzc1OSw4IEBACiAjaWYg
Q1BVKEFSTV9USFVNQjIpICYmIChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkp
IHx8IFBMQVRGT1JNKFFUKSkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCi0vKiBF
bmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLwotI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCi0j
ZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKLSNlbmRpZgotLyogRW5hYmxlIHRoZSBERkcgSklUIG9u
IE1JUFMuICovCi0jaWYgQ1BVKE1JUFMpCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLCBN
SVBTIGFuZCBTSDQuICovCisjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkgfHwgQ1BVKE1JUFMpIHx8
IENQVShTSDQpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>