<?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>58950</bug_id>
          
          <creation_ts>2011-04-19 17:51:11 -0700</creation_ts>
          <short_desc>Rationalize MacroAssembler branch methods</short_desc>
          <delta_ts>2011-06-07 15:25:21 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>thouraya.andolsi</cc>
    
    <cc>thouraya.andolsi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>388952</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-04-19 17:51:11 -0700</bug_when>
    <thetext>The MacroAssembler currently exposes x86&apos;s weird behaviour that the setcc instruction only sets the low 8 bits of a register.  Stop that.

Having done so, to clarify remove the &apos;set32&apos; prefix from test &amp; compare instructions - these methods all now set a full 32/64 bit register (Ptr size).  The size in the function name should indicate the amount of data being compared.

Also split out the &apos;Condition&apos; enum into &apos;RelationalCondition&apos; and &apos;ResultCondition&apos;.  The former is used in binary comparison, the latter compares the latter is a unary condition check on the result of an operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388954</commentid>
    <comment_count>1</comment_count>
      <attachid>90282</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-04-19 17:53:51 -0700</bug_when>
    <thetext>Created attachment 90282
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388969</commentid>
    <comment_count>2</comment_count>
      <attachid>90282</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-19 18:15:42 -0700</bug_when>
    <thetext>Comment on attachment 90282
The patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389393</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-04-20 11:44:50 -0700</bug_when>
    <thetext>Fixed in r84399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389403</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 11:57:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84399 might have broken Qt Linux ARMv7 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390815</commentid>
    <comment_count>5</comment_count>
    <who name="thouraya">thouraya.andolsi</who>
    <bug_when>2011-04-22 09:15:35 -0700</bug_when>
    <thetext>Hello,

The patch caused a build problem for SH4 platforms.

I created a patch to fix the issue.

Should I submit a patch here or create a new bug?

Regards,
Thouraya.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390826</commentid>
    <comment_count>6</comment_count>
      <attachid>90713</attachid>
    <who name="thouraya">thouraya.andolsi</who>
    <bug_when>2011-04-22 09:33:18 -0700</bug_when>
    <thetext>Created attachment 90713
fix issues

Hello,

Attached a patch to fix the issue.

Regards,
Thouraya.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391621</commentid>
    <comment_count>7</comment_count>
      <attachid>90713</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-04-24 12:51:58 -0700</bug_when>
    <thetext>Comment on attachment 90713
fix issues

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391755</commentid>
    <comment_count>8</comment_count>
    <who name="thouraya">thouraya.andolsi</who>
    <bug_when>2011-04-25 07:18:58 -0700</bug_when>
    <thetext>Hello,

I have a question: the patch can be landed even if the bug is not opened?

Regards,
Thouraya.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391842</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-25 11:18:59 -0700</bug_when>
    <thetext>The bug needs to be open for the commit-queue to see the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391857</commentid>
    <comment_count>10</comment_count>
      <attachid>90713</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-25 13:19:21 -0700</bug_when>
    <thetext>Comment on attachment 90713
fix issues

Clearing flags on attachment: 90713

Committed r84796: &lt;http://trac.webkit.org/changeset/84796&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90282</attachid>
            <date>2011-04-19 17:53:51 -0700</date>
            <delta_ts>2011-04-19 18:15:42 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>58950.patch</filename>
            <type>text/plain</type>
            <size>91407</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODQzMjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIyIEBA
CisyMDExLTA0LTE5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSYXRpb25h
bGl6ZSBNYWNyb0Fzc2VtYmxlciBicmFuY2ggbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg5NTAKKworICAgICAgICBUaGUgTWFjcm9Bc3Nl
bWJsZXIgY3VycmVudGx5IGV4cG9zZXMgeDg2J3Mgd2VpcmQgYmVoYXZpb3VyIHRoYXQgdGhlICdz
ZXRjYycKKyAgICAgICAgaW5zdHJ1Y3Rpb24gb25seSBzZXRzIHRoZSBsb3cgOCBiaXRzIG9mIGEg
cmVnaXN0ZXIuIFN0b3AgdGhhdC4KKworICAgICAgICBIYXZpbmcgZG9uZSBzbywgdG8gY2xhcmlm
eSByZW1vdmUgdGhlICdzZXQzMicgcHJlZml4IGZyb20gdGVzdCAmIGNvbXBhcmUKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zIC0gdGhlc2UgbWV0aG9kcyBhbGwgbm93IHNldCBhIGZ1bGwgMzIvNjQgYml0
IHJlZ2lzdGVyIChQdHIgc2l6ZSkuCisgICAgICAgIFRoZSBzaXplIGluIHRoZSBmdW5jdGlvbiBu
YW1lIHNob3VsZCBpbmRpY2F0ZSB0aGUgYW1vdW50IG9mIGRhdGEgYmVpbmcgY29tcGFyZWQuCisK
KyAgICAgICAgQWxzbyBzcGxpdCBvdXQgdGhlICdDb25kaXRpb24nIGVudW0gaW50byAnUmVsYXRp
b25hbENvbmRpdGlvbicgYW5kCisgICAgICAgICdSZXN1bHRDb25kaXRpb24nLiBUaGUgZm9ybWVy
IGlzIHVzZWQgaW4gYmluYXJ5IGNvbXBhcmlzb24sIHRoZSBsYXR0ZXIgaXMgYSB1bmFyeQorICAg
ICAgICBjb25kaXRpb24gY2hlY2sgb24gdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24uCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6YnJhbmNoUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaDE2KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFRlc3RQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6Y29tcGFyZVB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFu
Y2hBZGRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoU3ViUHRyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNo
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoMzJXaXRoVW5hbGln
bmVkSGFsZldvcmRzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaDE2
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRlc3Q4KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpicmFuY2hNdWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hO
ZWczMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hPcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmUzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNOjp0ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6dGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoUHRy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OkFSTUNvbmRpdGlv
bik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2gxNik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpicmFuY2hUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5j
aEFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoTXVsMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2hPcjMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNoU3ViMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpjb21wYXJlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTXY3Ojp0ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
Ojp0ZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFB0cldp
dGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om1ha2VCcmFuY2gp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojphcm1WN0NvbmRpdGlvbik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFu
Y2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFu
Y2hUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTXVsMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJNSVBTOjpicmFuY2hPcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpjb21wYXJlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRlc3Q4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp0ZXN0MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2OjpicmFuY2gzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFu
Y2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMldpdGhVbmFsaWduZWRI
YWxmV29yZHMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNo
MTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaE11bDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFN1YjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaE5lZzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaE9yMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tcGFyZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OnRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojp4ODZDb25kaXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29tcGFyZVB0cik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2hQdHIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdFB0cik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2hBZGRQdHIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoU3ViUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmJyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6CisKIDIwMTEtMDQtMTkgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJy
YWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4NDMw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDkgQEAKIAkJODZBOTBF
RDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8q
IEpJVEFyaXRobWV0aWMuY3BwICovOyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyog
QVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyB9
OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgfTsKKwkJODZBRTY0QTgx
MzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAv
KiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87IH07CisJCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAx
MiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVy
U0g0LmggKi87IH07CisJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3
MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgfTsKIAkJODZCOTlBQjgxMTdF
MzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUI2MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5j
cHAgKi87IH07CiAJCTg2Qjk5QUI5MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBQjcxMTdFMzkx
RTAwREY1QTkwIC8qIFJvcGVJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlB
RTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MzEsNiArOTM0LDkgQEAKIAkJODZBOTBF
Q0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk12N0Fzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlckFSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QUU2NEE1
MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclNINC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2QUU2NEE2MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2Vt
YmxlclNINC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
clNINC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkFFNjRBNzEzNUU1RTFDMDA5
NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNINEFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkI5OUFCNjEx
N0UzOTFFMDBERjVBOTAgLyogUm9wZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUm9wZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NkI5OUFCNzExN0UzOTFFMDBERjVBOTAgLyogUm9wZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUm9wZUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJpbmdCdWZmZXIuaDsgcGF0aCA9IHRleHQvU3RyaW5nQnVm
ZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDg2LDExICsyMDkyLDE0IEBA
CiAJCQkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAq
LywKIAkJCQk4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmggKi8sCiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oICovLAorCQkJCTg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNI
NC5jcHAgKi8sCisJCQkJODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVy
U0g0LmggKi8sCiAJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVy
WDg2XzY0LmggKi8sCiAJCQkJODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggKi8sCiAJCQkJODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNB
c3NlbWJsZXIuaCAqLywKIAkJCQk4NkQzQjNDMjEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1
ZmZlci5oICovLAorCQkJCTg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIu
aCAqLywKIAkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGFzc2VtYmxlcjsKQEAgLTI1NDEsNiArMjU1MCw4IEBACiAJCQkJ
MTQyRDZGMEQxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMUQ3NjQ1MjEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NkFFNjRBOTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjk4Niw2ICsyOTk3LDcgQEAKIAkJCQkxNDJENkYw
QzEzNTM5QTJGMDBCMDJFODYgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDJENkYxMzEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrUG9zaXguY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVy
U0g0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gODQzMDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSwzMiArMTA1LDMyIEBAIHB1YmxpYzoKIAogCiAgICAgLy8gQmFja3dhcmRzIGJhbmNo
ZXMsIHRoZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVudGVkIHVzaW5nIGV4aXN0aW5nIGZv
cndhcmRzIGJyYW5jaCBtZWNoYW5pc21zLgotICAgIHZvaWQgYnJhbmNoUHRyKENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0sIExhYmVsIHRhcmdldCkKKyAg
ICB2b2lkIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3Ax
LCBUcnVzdGVkSW1tUHRyIGltbSwgTGFiZWwgdGFyZ2V0KQogICAgIHsKICAgICAgICAgYnJhbmNo
UHRyKGNvbmQsIG9wMSwgaW1tKS5saW5rVG8odGFyZ2V0LCB0aGlzKTsKICAgICB9CiAKLSAgICB2
b2lkIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIExhYmVsIHRhcmdldCkKKyAgICB2b2lkIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBMYWJlbCB0YXJnZXQpCiAgICAg
ewogICAgICAgICBicmFuY2gzMihjb25kLCBvcDEsIG9wMikubGlua1RvKHRhcmdldCwgdGhpcyk7
CiAgICAgfQogCi0gICAgdm9pZCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBv
cDEsIFRydXN0ZWRJbW0zMiBpbW0sIExhYmVsIHRhcmdldCkKKyAgICB2b2lkIGJyYW5jaDMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW0zMiBpbW0s
IExhYmVsIHRhcmdldCkKICAgICB7CiAgICAgICAgIGJyYW5jaDMyKGNvbmQsIG9wMSwgaW1tKS5s
aW5rVG8odGFyZ2V0LCB0aGlzKTsKICAgICB9CiAKLSAgICB2b2lkIGJyYW5jaDMyKENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQsIExhYmVsIHRhcmdldCkKKyAg
ICB2b2lkIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBBZGRyZXNzIHJpZ2h0LCBMYWJlbCB0YXJnZXQpCiAgICAgewogICAgICAgICBicmFuY2gzMihj
b25kLCBsZWZ0LCByaWdodCkubGlua1RvKHRhcmdldCwgdGhpcyk7CiAgICAgfQogCi0gICAgdm9p
ZCBicmFuY2gxNihDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQsIExhYmVsIHRhcmdldCkKKyAgICB2b2lkIGJyYW5jaDE2KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIExhYmVsIHRhcmdldCkKICAg
ICB7CiAgICAgICAgIGJyYW5jaDE2KGNvbmQsIGxlZnQsIHJpZ2h0KS5saW5rVG8odGFyZ2V0LCB0
aGlzKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBicmFuY2hUZXN0UHRyKENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgTGFiZWwgdGFyZ2V0KQorICAgIHZvaWQgYnJhbmNoVGVzdFB0cihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIExhYmVsIHRhcmdldCkKICAgICB7
CiAgICAgICAgIGJyYW5jaFRlc3RQdHIoY29uZCwgcmVnKS5saW5rVG8odGFyZ2V0LCB0aGlzKTsK
ICAgICB9CkBAIC0yMzYsOSArMjM2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbG9hZDMy
V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lk
IHNldFB0cihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKLSAgICAgICAgc2V0MzJDb21wYXJlMzIoY29uZCwgbGVmdCwgcmlnaHQs
IGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgcmlnaHQsIGRlc3QpOwogICAg
IH0KIAogICAgIHZvaWQgc3RvcmVQdHIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQpAQCAtMjcyLDczICsyNzIsNzMgQEAgcHVibGljOgogICAgIH0KIAogCi0gICAgSnVt
cCBicmFuY2hQdHIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCkKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBsZWZ0LCByaWdodCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHIoQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCkKKyAgICBK
dW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
VHJ1c3RlZEltbVB0ciByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25k
LCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFB0
cihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIEp1
bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQs
IHJpZ2h0KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFB0cihDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKLSAg
ICBKdW1wIGJyYW5jaFB0cihDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodCk7CiAgICAgfQogCi0gICAgSnVt
cCBicmFuY2hQdHIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciBy
aWdodCkKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJl
c3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgICB9CiAKLSAgICBKdW1w
IGJyYW5jaFB0cihDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW1QdHIgcmlnaHQpCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAg
ICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3RQdHIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
cmVnLCBSZWdpc3RlcklEIG1hc2spCisgICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCByZWcsIG1hc2spOwogICAgIH0KIAotICAgIEp1
bXAgYnJhbmNoVGVzdFB0cihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3RQdHIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQs
IHJlZywgbWFzayk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hUZXN0UHRyKENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICBKdW1wIGJyYW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzLCBtYXNrKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaFRlc3RQdHIoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNz
LCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgSnVtcCBicmFuY2hU
ZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzLCBtYXNrKTsKICAgICB9CiAKIAotICAgIEp1bXAgYnJhbmNo
QWRkUHRyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIEp1bXAgYnJhbmNoQWRkUHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNv
bmQsIHNyYywgZGVzdCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hTdWJQdHIoQ29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5j
aFN1YlB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGltbSwgZGVz
dCk7CiAgICAgfQogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDg7Ci0g
ICAgSnVtcCBicmFuY2hUZXN0OChDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5j
aFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhhZGRyZXNzLmJh
c2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24g
ODQzMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk0gOiBwdWJsaWMgQWJzdHJhYwogcHVibGljOgogICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJz
OjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwogCi0gICAgZW51bSBDb25kaXRpb24geworICAg
IGVudW0gUmVsYXRpb25hbENvbmRpdGlvbiB7CiAgICAgICAgIEVxdWFsID0gQVJNQXNzZW1ibGVy
OjpFUSwKICAgICAgICAgTm90RXF1YWwgPSBBUk1Bc3NlbWJsZXI6Ok5FLAogICAgICAgICBBYm92
ZSA9IEFSTUFzc2VtYmxlcjo6SEksCkBAIC01Miw3ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IEdyZWF0ZXJUaGFuID0gQVJNQXNzZW1ibGVyOjpHVCwKICAgICAgICAgR3JlYXRlclRoYW5PckVx
dWFsID0gQVJNQXNzZW1ibGVyOjpHRSwKICAgICAgICAgTGVzc1RoYW4gPSBBUk1Bc3NlbWJsZXI6
OkxULAotICAgICAgICBMZXNzVGhhbk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkxFLAorICAgICAg
ICBMZXNzVGhhbk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkxFCisgICAgfTsKKworICAgIGVudW0g
UmVzdWx0Q29uZGl0aW9uIHsKICAgICAgICAgT3ZlcmZsb3cgPSBBUk1Bc3NlbWJsZXI6OlZTLAog
ICAgICAgICBTaWduZWQgPSBBUk1Bc3NlbWJsZXI6Ok1JLAogICAgICAgICBaZXJvID0gQVJNQXNz
ZW1ibGVyOjpFUSwKQEAgLTM4NywxOSArMzkwLDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1v
dmUoc3JjLCBkZXN0KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDgoQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoOChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQog
ICAgIHsKICAgICAgICAgbG9hZDgobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCk7CiAgICAgfQogCi0g
ICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3Rl
cklEIHJpZ2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKKyAgICBKdW1wIGJyYW5jaDMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cF9yKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFS
TUNvbmRpdGlvbihjb25kKSwgdXNlQ29uc3RhbnRQb29sKSk7CiAgICAgfQogCi0gICAgSnVtcCBi
cmFuY2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQsIGludCB1c2VDb25zdGFudFBvb2wgPSAwKQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgaW50
IHVzZUNvbnN0YW50UG9vbCA9IDApCiAgICAgewogICAgICAgICBpZiAocmlnaHQubV9pc1BvaW50
ZXIpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpT
MCwgcmlnaHQubV92YWx1ZSk7CkBAIC00MTQsMzcgKzQxNywzNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0
YW50UG9vbCkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgbG9hZDMyKHJpZ2h0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgIH0KIAotICAgIEp1
bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBs
ZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIEFSTVJl
Z2lzdGVyczo6UzEpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJz
OjpTMSwgcmlnaHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
ICAgICB7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIHJpZ2h0KTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9h
ZDMyKGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzJX
aXRoVW5hbGlnbmVkSGFsZldvcmRzKENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCkKICAgICB7CiAgICAgICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwg
QVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdp
c3RlcnM6OlMxLCByaWdodCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gxNihDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gx
NihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0KQogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbmQpOwogICAgICAgICBVTlVTRURf
UEFSQU0obGVmdCk7CkBAIC00NTMsNyArNDU2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
anVtcCgpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMTYoQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gxNihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAg
ICAgewogICAgICAgICBsb2FkMTYobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIG1v
dmUocmlnaHQsIEFSTVJlZ2lzdGVyczo6UzEpOwpAQCAtNDYxLDIwICs0NjQsMjAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSk7CiAg
ICAgfQogCi0gICAgSnVtcCBicmFuY2hUZXN0OChDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgSnVtcCBicmFu
Y2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1t
MzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBsb2FkOChhZGRyZXNz
LCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBB
Uk1SZWdpc3RlcnM6OlMxLCBtYXNrKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKKyAgICBKdW1w
IGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lz
dGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZywgbWFzayk7CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsK
ICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJy
YW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIEFSTVdvcmQgdyA9IG1f
YXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAsIHRydWUpOwpA
QCAtNDg1LDEzICs0ODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2Vt
Ymxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hU
ZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgICB7CiAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCBtYXNr
KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25kaXRpb24gY29uZCwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBK
dW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIGxv
YWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCBtYXNrKTsKQEAgLTUxMiwxNCArNTE1LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6cGMpOwogICAg
IH0KIAotICAgIEp1bXAgYnJhbmNoQWRkMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsK
ICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgYWRkMzIoaW1tLCBk
ZXN0KTsKQEAgLTUzNiw3ICs1MzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cF9yKEFSTVJlZ2lzdGVyczo6UzEsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwogICAgIH0K
IAotICAgIEp1bXAgYnJhbmNoTXVsMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7
CkBAIC01NDgsNyArNTUxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2Vt
Ymxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hN
dWwzMihDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYgKGNv
bmQgPT0gT3ZlcmZsb3cpIHsKQEAgLTU2MSwyOCArNTY0LDI4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0K
IAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAg
ICB9CiAKLSAgICBKdW1wIGJyYW5jaFN1YjMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25k
ID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgc3ViMzIoaW1tLCBkZXN0
KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoTmVnMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjRGVzdCkKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOwogICAgICAgICBuZWczMihzcmNEZXN0KTsKICAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAg
YnJhbmNoT3IzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIG9y
MzIoc3JjLCBkZXN0KTsKQEAgLTYyMSw0MCArNjI0LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuYngobGlua1JlZ2lzdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIHNldDMyQ29tcGFy
ZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgcmlnaHQpOwogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigwKSk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDEpLCBBUk1Db25k
aXRpb24oY29uZCkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0MzJDb21wYXJlMzIoQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1f
dmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDIoMCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3Zfcihk
ZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMigxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVm
dCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgLy8g
QVJNIGRvZXNuJ3QgaGF2ZSBieXRlIHJlZ2lzdGVycwotICAgICAgICBzZXQzMkNvbXBhcmUzMihj
b25kLCBsZWZ0LCByaWdodCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQ4Q29tcGFyZTMy
KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIC8vIEFSTSBkb2Vzbid0IGhhdmUgYnl0ZSByZWdpc3Rl
cnMKLSAgICAgICAgbG9hZDMyKGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBzZXQz
MkNvbXBhcmUzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCwgZGVzdCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXQ4Q29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgLy8g
QVJNIGRvZXNuJ3QgaGF2ZSBieXRlIHJlZ2lzdGVycwotICAgICAgICBzZXQzMkNvbXBhcmUzMihj
b25kLCBsZWZ0LCByaWdodCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQzMlRlc3QzMihD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9y
KDAsIHJlZyk7CkBAIC02NjQsMTMgKzY0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDEpLCBBUk1Db25kaXRpb24oY29u
ZCkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0MzJUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJl
c3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lk
IHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1t
MzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGFkZHJlc3Ms
IEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBzZXQzMlRlc3QzMihjb25kLCBBUk1SZWdpc3Rl
cnM6OlMxLCBtYXNrLCBkZXN0KTsKKyAgICAgICAgdGVzdDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6
UzEsIG1hc2ssIGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgc2V0MzJUZXN0OChDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWQ4
KGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwogICAgICAgICBzZXQzMlRlc3QzMihjb25kLCBB
Uk1SZWdpc3RlcnM6OlMxLCBtYXNrLCBkZXN0KTsKQEAgLTcwNSwxMyArNjg5LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UodHJ1ZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgMCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgQWJzb2x1
dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIEFSTVJlZ2lzdGVyczo6UzEp
OwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQp
OwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRk
cmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgQVJNUmVnaXN0ZXJzOjpTMSk7
CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCk7
CkBAIC03NTUsMTQgKzczOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7
CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5p
dGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQorICAgIEp1bXAgYnJhbmNoUHRyV2l0
aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFi
ZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0
ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGlu
aXRpYWxSaWdodFZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsKICAgICAgICAgSnVtcCBqdW1wID0g
YnJhbmNoMzIoY29uZCwgbGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSwgdHJ1ZSk7CiAgICAgICAgIHJl
dHVybiBqdW1wOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
UHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKKyAgICBKdW1wIGJyYW5j
aFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0
YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBU
cnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIEFSTVJlZ2lzdGVy
czo6UzEpOwogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZh
bHVlLCBBUk1SZWdpc3RlcnM6OlMwKTsKQEAgLTk0NCw3ICs5MjgsMTIgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uIEFSTUNvbmRpdGlv
bihDb25kaXRpb24gY29uZCkKKyAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRp
b24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKKyAgICB9CisKKyAgICBBUk1B
c3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCiAg
ICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiA4NDMwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFNj
YWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwogCi0gICAgZW51bSBDb25kaXRpb24geworICAgIGVu
dW0gUmVsYXRpb25hbENvbmRpdGlvbiB7CiAgICAgICAgIEVxdWFsID0gQVJNdjdBc3NlbWJsZXI6
OkNvbmRpdGlvbkVRLAogICAgICAgICBOb3RFcXVhbCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRp
b25ORSwKICAgICAgICAgQWJvdmUgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uSEksCkBAIC0x
MTAsMTIgKzExMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIEdyZWF0ZXJUaGFuID0gQVJNdjdBc3Nl
bWJsZXI6OkNvbmRpdGlvbkdULAogICAgICAgICBHcmVhdGVyVGhhbk9yRXF1YWwgPSBBUk12N0Fz
c2VtYmxlcjo6Q29uZGl0aW9uR0UsCiAgICAgICAgIExlc3NUaGFuID0gQVJNdjdBc3NlbWJsZXI6
OkNvbmRpdGlvbkxULAotICAgICAgICBMZXNzVGhhbk9yRXF1YWwgPSBBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uTEUsCisgICAgICAgIExlc3NUaGFuT3JFcXVhbCA9IEFSTXY3QXNzZW1ibGVyOjpD
b25kaXRpb25MRQorICAgIH07CisKKyAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7CiAgICAgICAg
IE92ZXJmbG93ID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvblZTLAogICAgICAgICBTaWduZWQg
PSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTUksCiAgICAgICAgIFplcm8gPSBBUk12N0Fzc2Vt
Ymxlcjo6Q29uZGl0aW9uRVEsCiAgICAgICAgIE5vblplcm8gPSBBUk12N0Fzc2VtYmxlcjo6Q29u
ZGl0aW9uTkUKICAgICB9OworCiAgICAgZW51bSBEb3VibGVDb25kaXRpb24gewogICAgICAgICAv
LyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBjb21w
YXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4uCiAgICAgICAg
IERvdWJsZUVxdWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkVRLApAQCAtODY1LDY1ICs4
NjksNjUgQEAgcHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKLSAgICBKdW1wIGJyYW5jaDMyKENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVt
cCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdo
dCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAotICAg
IEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGNvbXBh
cmUzMihsZWZ0LCByaWdodCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkp
OwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAg
bG9hZDMyKHJpZ2h0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNo
MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgcmln
aHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAg
ICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoMzIgd2Ug
Y2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwogICAgICAgICBsb2FkMzIobGVmdCwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGlu
Y2FzZSB0aGUgYnJhbmNoMzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwogICAg
ICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCi0gICAg
SnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMldpdGhVbmFs
aWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVn
aXN0ZXIgaW5jYXNlIHRoZSBicmFuY2gzMiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4g
Oi0vCiAgICAgICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCByaWdodCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29u
ZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFu
Y2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rl
ciwgcmlnaHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBp
bmNhc2UgdGhlIGJyYW5jaDMyIHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KICAg
ICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0K
IAotICAgIEp1bXAgYnJhbmNoMTYoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMTYoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQx
NihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIubHNsKGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIHJpZ2h0LCAxNik7CkBAIC05MzEsNyArOTM1LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gxNihDb25kaXRpb24gY29uZCwg
QmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDE2KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdo
dCkKICAgICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUg
YnJhbmNoMzIgd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwogICAgICAgICBsb2Fk
MTYobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC05MzksNTkgKzk0Myw1MyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBU
cnVzdGVkSW1tMzIocmlnaHQubV92YWx1ZSA8PCAxNikpOwogICAgIH0KIAotICAgIEp1bXAgYnJh
bmNoOChDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQp
CisgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBjb21wYXJlMzIobGVmdCwg
cmlnaHQpOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDgoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgLy8gdXNlIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2g4IHdlIGNhbGwgdXNlcyBkYXRhVGVt
cFJlZ2lzdGVyLiA6LS8KICAgICAgICAgbG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CiAgICAgICAgIHJldHVybiBicmFuY2g4KGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0
KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtYWtl
QnJhbmNoKGNvbmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAg
IHRlc3QzMihyZWcsIG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgSnVt
cCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgLy8gdXNlIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MzIgd2UgY2FsbCB1c2VzIGRh
dGFUZW1wUmVnaXN0ZXIuIDotLwogICAgICAgICBsb2FkMzIoYWRkcmVzcywgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgbWFzayk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoQ29uZGl0aW9u
IGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAg
ewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwog
ICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3Qz
MiB3ZSBjYWxsIHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4gOi0vCiAgICAgICAgIGxvYWQzMihhZGRy
ZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihj
b25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5j
aFRlc3Q4KENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOwogICAgICAgICB0ZXN0MzIocmVnLCBtYXNrKTsKICAgICAgICAgcmV0dXJuIEp1bXAo
bWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hUZXN0OChDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewot
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAg
ICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaFRlc3Q4IHdl
IGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KICAgICAgICAgbG9hZDgoYWRkcmVzcywg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKQEAgLTEwMjUsMTYgKzEwMjMsMTQgQEAgcHVibGlj
OgogICAgIC8vICogam8gb3BlcmF0aW9ucyBicmFuY2ggaWYgdGhlIChzaWduZWQpIGFyaXRobWV0
aWMKICAgICAvLyAgIG9wZXJhdGlvbiBjYXVzZWQgYW4gb3ZlcmZsb3cgdG8gb2NjdXIuCiAgICAg
Ci0gICAgSnVtcCBicmFuY2hBZGQzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX1MoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAg
fQogCi0gICAgSnVtcCBicmFuY2hBZGQzMihDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRl
IGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7
CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkX1MoZGVzdCwgZGVzdCwgYXJtSW1tKTsKQEAgLTEwNDUsNDAgKzEwNDEsNDMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKLSAgICBK
dW1wIGJyYW5jaE11bDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbmQsIGNvbmQgPT0gT3ZlcmZsb3cpOwotICAgICAgICBtX2Fz
c2VtYmxlci5zbXVsbChkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0LCBzcmMpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5hc3IoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCwgMzEpOwotICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbXVsbChkZXN0LCBkYXRhVGVtcFJlZ2lz
dGVyLCBzcmMxLCBzcmMyKTsKKworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYXNyKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDMyKGNvbmQsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc3JjLCBkZXN0LCBkZXN0KTsKICAgICB9
CiAKLSAgICBKdW1wIGJyYW5jaE11bDMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbmQsIGNvbmQg
PT0gT3ZlcmZsb3cpOwogICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnNtdWxsKGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyYywgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFzcihhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBkZXN0LCAzMSk7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwz
Mihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMsIGRlc3QpOwogICAgIH0KIAotICAgIEp1bXAg
YnJhbmNoT3IzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycl9TKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1h
a2VCcmFuY2goY29uZCkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hT
dWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1Yl9TKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgICAgIHJldHVybiBKdW1w
KG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJy
YW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwog
ICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFr
ZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1Yl9TKGRlc3QsIGRlc3QsIGFybUltbSk7CkBAIC0x
MTM3LDcgKzExMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGxpbmtSZWdp
c3RlciwgQVJNdjdBc3NlbWJsZXI6Okp1bXBGaXhlZCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXQz
MkNvbXBhcmUzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLml0KGFybVY3Q29uZGl0aW9uKGNvbmQpLCBmYWxzZSk7CkBAIC0xMTQ1
LDEzICsxMTQ0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFS
TVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgICB9CiAKLSAgICB2b2lkIHNldDMy
Q29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBz
ZXQzMkNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCwgZGVzdCk7CisgICAg
ICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCwgZGVzdCk7CiAgICAg
fQogCi0gICAgdm9pZCBzZXQzMkNvbXBhcmUzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBh
cmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBjb21wYXJlMzIobGVm
dCwgcmlnaHQpOwogICAgICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwg
ZmFsc2UpOwpAQCAtMTE1OSwyNiArMTE1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXQ4Q29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHNldDMy
Q29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgc2V0MzJDb21wYXJlMzIoY29uZCwg
bGVmdCwgcmlnaHQsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgc2V0OENvbXBhcmUzMihDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHNldDMyQ29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0
LCBkZXN0KTsKLSAgICB9Ci0KICAgICAvLyBGSVhNRToKICAgICAvLyBUaGUgbWFzayBzaG91bGQg
YmUgb3B0aW9uYWwuLi4gcGFlcmhhcHMgdGhlIGFyZ3VtZW50IG9yZGVyIHNob3VsZCBiZQogICAg
IC8vIGRlc3Qtc3JjLCBvcGVyYXRpb25zIGFsd2F5cyBoYXZlIGEgZGVzdD8gLi4uIHBvc3NpYmx5
IG5vdCB0cnVlLCBjb25zaWRlcmluZwogICAgIC8vIGFzbSBvcHMgbGlrZSB0ZXN0LCBvciBwc2V1
ZG8gb3BzIGxpa2UgcG9wKCkuCi0gICAgdm9pZCBzZXQzMlRlc3QzMihDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkMzIoYWRk
cmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHRlc3QzMihkYXRhVGVtcFJlZ2lzdGVy
LCBtYXNrKTsKQEAgLTExODcsNyArMTE3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldDMyVGVzdDgoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIHRlc3Q4KFJlc3VsdENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkOChhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgdGVzdDMyKGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwpAQCAtMTIwOCwxMyAr
MTE5MiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAg
ICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlh
bFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQorICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBh
dGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQ
dHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJ
bW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRp
YWxSaWdodFZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNo
UHRyV2l0aFBhdGNoKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYg
ZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0
cigwKSkKKyAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbG9h
ZDMyKGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBkYXRhTGFiZWwgPSBtb3Zl
V2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTEyNjcs
NyArMTI1MSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhU
cnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gbV9hc3Nl
bWJsZXIuYngoZGF0YVRlbXBSZWdpc3RlciwgaW5VbmludGVycnVwdGVkU2VxdWVuY2UoKSA/IEFS
TXY3QXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1
bXBDb25kaXRpb24sIGNvbmQpOwogICAgIH0KLSAgICBBUk12N0Fzc2VtYmxlcjo6Sm1wU3JjIG1h
a2VCcmFuY2goQ29uZGl0aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2goYXJtVjdDb25kaXRp
b24oY29uZCkpOyB9CisgICAgQVJNdjdBc3NlbWJsZXI6OkptcFNyYyBtYWtlQnJhbmNoKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCkgeyByZXR1cm4gbWFrZUJyYW5jaChhcm1WN0NvbmRpdGlvbihj
b25kKSk7IH0KKyAgICBBUk12N0Fzc2VtYmxlcjo6Sm1wU3JjIG1ha2VCcmFuY2goUmVzdWx0Q29u
ZGl0aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2goYXJtVjdDb25kaXRpb24oY29uZCkpOyB9
CiAgICAgQVJNdjdBc3NlbWJsZXI6OkptcFNyYyBtYWtlQnJhbmNoKERvdWJsZUNvbmRpdGlvbiBj
b25kKSB7IHJldHVybiBtYWtlQnJhbmNoKGFybVY3Q29uZGl0aW9uKGNvbmQpKTsgfQogCiAgICAg
QXJtQWRkcmVzcyBzZXR1cEFybUFkZHJlc3MoQmFzZUluZGV4IGFkZHJlc3MpCkBAIC0xMzI3LDcg
KzEzMTIsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z0KGRzdCwgQVJN
VGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYodmFsdWUgPj4gMTYpKTsKICAgICB9CiAKLSAgICBB
Uk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIGFybVY3Q29uZGl0aW9uKENvbmRpdGlvbiBjb25kKQor
ICAgIEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb24gYXJtVjdDb25kaXRpb24oUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTXY3QXNz
ZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOworICAgIH0KKworICAgIEFSTXY3QXNzZW1ibGVyOjpD
b25kaXRpb24gYXJtVjdDb25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCShyZXZpc2lvbiA4NDMwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIC8vIEZQIHRlbXAgcmVnaXN0ZXIKICAgICBzdGF0
aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6ZjE2
OwogCi0gICAgZW51bSBDb25kaXRpb24geworICAgIGVudW0gUmVsYXRpb25hbENvbmRpdGlvbiB7
CiAgICAgICAgIEVxdWFsLAogICAgICAgICBOb3RFcXVhbCwKICAgICAgICAgQWJvdmUsCkBAIC02
Nyw3ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEdyZWF0ZXJUaGFuLAogICAgICAgICBHcmVh
dGVyVGhhbk9yRXF1YWwsCiAgICAgICAgIExlc3NUaGFuLAotICAgICAgICBMZXNzVGhhbk9yRXF1
YWwsCisgICAgICAgIExlc3NUaGFuT3JFcXVhbAorICAgIH07CisKKyAgICBlbnVtIFJlc3VsdENv
bmRpdGlvbiB7CiAgICAgICAgIE92ZXJmbG93LAogICAgICAgICBTaWduZWQsCiAgICAgICAgIFpl
cm8sCkBAIC05MDAsNyArOTAzLDcgQEAgcHVibGljOgogICAgIC8vIGp6IGFuZCBqbnogdGVzdCB3
aGV0aGVyIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGVxdWFsIHRvIHplcm8sIGFuZCB0YWtlCiAgICAg
Ly8gYW4gb3B0aW9uYWwgc2Vjb25kIG9wZXJhbmQgb2YgYSBtYXNrIHVuZGVyIHdoaWNoIHRvIHBl
cmZvcm0gdGhlIHRlc3QuCiAKLSAgICBKdW1wIGJyYW5jaDgoQ29uZGl0aW9uIGNvbmQsIEFkZHJl
c3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBpbW1lZGlhdGUgdmFsdWUgaXMgdW5zaWduZWQgOCBi
aXRzLgogICAgICAgICBBU1NFUlQoIShyaWdodC5tX3ZhbHVlICYgMHhGRkZGRkYwMCkpOwpAQCAt
OTA5LDcgKzkxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgSnVtcCBicmFu
Y2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQor
ICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCB8
fCBjb25kID09IFplcm8pCiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwobGVmdCwgcmln
aHQpOwpAQCAtOTg1LDMyICs5ODgsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgp
OwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7
CiAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAg
YnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkK
KyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKHJpZ2h0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAotICAgIEp1
bXAgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBS
ZWdpc3Rlcik7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
ICAgICB7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
Ly8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkMzIoKSB1c2VzIGltbVRlbXBSZWdp
c3Rlci4KQEAgLTEwMTksNyArMTAyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0g
ICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQ29uZGl0aW9uIGNvbmQsIEJh
c2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMldpdGhV
bmFsaWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25l
ZEhhbGZXb3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgLy8gQmUgY2FyZWZ1
bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKCkKQEAgLTEw
MjksMjYgKzEwMzIsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
ZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKLSAgICBKdW1wIGJy
YW5jaDMyKENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1
dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIo
bGVmdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gz
MihDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdo
dCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQzMihs
ZWZ0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0
ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gxNihDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFu
Y2gxNihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDE2KGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwog
ICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMTYoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gxNihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoIShyaWdodC5tX3ZhbHVlICYgMHhGRkZGMDAwMCkpOwogICAgICAgICBsb2Fk
MTYobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0xMDU4LDcgKzEwNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQorICAgIEp1bXAgYnJhbmNoVGVzdDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihjbXBUZW1wUmVnaXN0ZXIsIHJlZywgbWFz
ayk7CkBAIC0xMDY3LDcgKzEwNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hO
b3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgIH0KIAot
ICAgIEp1bXAgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSAm
JiAhbV9maXhlZFdpZHRoKSB7CkBAIC0xMDc5LDE5ICsxMDgyLDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCByZWcsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNo
VGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIGxvYWQzMihhZGRyZXNz
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBk
YXRhVGVtcFJlZ2lzdGVyLCBtYXNrKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihD
b25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKICAgICB7CiAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrKTsK
ICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3Q4KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJy
YW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIGxvYWQ4KGFkZHJl
c3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwpAQCAtMTEyNyw3ICsxMTMwLDcgQEAgcHVibGljOgog
ICAgIC8vICogam8gb3BlcmF0aW9ucyBicmFuY2ggaWYgdGhlIChzaWduZWQpIGFyaXRobWV0aWMK
ICAgICAvLyAgIG9wZXJhdGlvbiBjYXVzZWQgYW4gb3ZlcmZsb3cgdG8gb2NjdXIuCiAKLSAgICBK
dW1wIGJyYW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewpAQCAtMTE3
NCwxMyArMTE3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQog
Ci0gICAgSnVtcCBicmFuY2hBZGQzMihDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1v
dmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29u
ZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaE11bDMy
KENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewpAQCAtMTIyNSwxNCArMTIyOCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFu
Y2hNdWwzMihDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1vdmUo
c3JjLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdp
c3RlciwgZGVzdCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hTdWIzMihDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWdu
ZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYg
KGNvbmQgPT0gT3ZlcmZsb3cpIHsKQEAgLTEyNzksMTMgKzEyODIsMTMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gSnVtcCgpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJy
YW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAg
ICAgfQogCi0gICAgSnVtcCBicmFuY2hPcjMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoT3IzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CkBAIC0xMzU1LDE4ICsxMzU4LDcg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKLSAgICB2b2lk
IHNldDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJ
RCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgc2V0MzJDb21wYXJlMzIo
Y29uZCwgbGVmdCwgcmlnaHQsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgc2V0OENvbXBhcmUz
MihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHNldDMyQ29tcGFyZTMyKGNvbmQsIGxlZnQsIGltbVRlbXBSZWdpc3Rlciwg
ZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQzMkNvbXBhcmUzMihDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChj
b25kID09IEVxdWFsIHx8IGNvbmQgPT0gWmVybykgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBsZWZ0LCByaWdodCk7CkBAIC0xNDE3LDEzICsxNDA5LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgc2V0MzJDb21wYXJlMzIoQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc2V0MzJDb21wYXJl
MzIoY29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgY29tcGFyZTMy
KGNvbmQsIGxlZnQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXQzMlRlc3Q4KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKICAgICAgICAgbG9hZDgoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0xNDQzLDcg
KzE0MzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHNldDMyVGVz
dDMyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAg
ICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTE0ODEsNyArMTQ3
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAotICAgIEp1bXAg
YnJhbmNoUHRyV2l0aFBhdGNoKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFM
YWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1
c3RlZEltbVB0cigwKSkKKyAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRy
dXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsK
ICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKICAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgaW1tVGVtcFJlZ2lzdGVyKTsKQEAgLTE0OTAsNyAr
MTQ4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRlbXA7CiAgICAgfQogCi0gICAgSnVt
cCBicmFuY2hQdHJXaXRoUGF0Y2goQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxh
YmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tUHRyKDApKQorICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAg
ICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwogICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBS
ZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiA4NDMwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDEzICsxMDgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNy
YywgYWRkcmVzcyk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwg
QWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3Rl
cklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ybShyaWdodCwgbGVm
dC5tX3B0cik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBB
YnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNo
MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbShyaWdodC5t
X3ZhbHVlLCBsZWZ0Lm1fcHRyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakND
KHg4NkNvbmRpdGlvbihjb25kKSkpOwpAQCAtMTQyLDE0ICsxNDIsMTQgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNo
UHRyV2l0aFBhdGNoKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0
ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZElt
bVB0cigwKSkKKyAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJ
bW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wbF9pcl9mb3JjZTMyKGluaXRpYWxSaWdodFZhbHVlLmFzSW50cHRy
KCksIGxlZnQpOwogICAgICAgICBkYXRhTGFiZWwgPSBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAg
ICB9CiAKLSAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmln
aHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCisgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2go
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0
YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigw
KSkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmln
aHRWYWx1ZS5hc0ludHB0cigpLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsKICAgICAgICAgZGF0
YUxhYmVsID0gRGF0YUxhYmVsUHRyKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2
aXNpb24gODQzMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQQogcHVibGljOgogICAgIHR5cGVkZWYg
WDg2QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwogCi0gICAgZW51bSBDb25k
aXRpb24geworICAgIGVudW0gUmVsYXRpb25hbENvbmRpdGlvbiB7CiAgICAgICAgIEVxdWFsID0g
WDg2QXNzZW1ibGVyOjpDb25kaXRpb25FLAogICAgICAgICBOb3RFcXVhbCA9IFg4NkFzc2VtYmxl
cjo6Q29uZGl0aW9uTkUsCiAgICAgICAgIEFib3ZlID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25B
LApAQCAtNTEsNyArNTEsMTAgQEAgcHVibGljOgogICAgICAgICBHcmVhdGVyVGhhbiA9IFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uRywKICAgICAgICAgR3JlYXRlclRoYW5PckVxdWFsID0gWDg2QXNz
ZW1ibGVyOjpDb25kaXRpb25HRSwKICAgICAgICAgTGVzc1RoYW4gPSBYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbkwsCi0gICAgICAgIExlc3NUaGFuT3JFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uTEUsCisgICAgICAgIExlc3NUaGFuT3JFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9u
TEUKKyAgICB9OworCisgICAgZW51bSBSZXN1bHRDb25kaXRpb24gewogICAgICAgICBPdmVyZmxv
dyA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uTywKICAgICAgICAgU2lnbmVkID0gWDg2QXNzZW1i
bGVyOjpDb25kaXRpb25TLAogICAgICAgICBaZXJvID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25F
LApAQCAtNzk0LDE5ICs3OTcsMTkgQEAgcHVibGljOgogICAgIC8vIGFuIG9wdGlvbmFsIHNlY29u
ZCBvcGVyYW5kIG9mIGEgbWFzayB1bmRlciB3aGljaCB0byBwZXJmb3JtIHRoZSB0ZXN0LgogCiBw
dWJsaWM6Ci0gICAgSnVtcCBicmFuY2g4KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcGJfaW0ocmlnaHQubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSk7
CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfcnIocmlnaHQsIGxlZnQpOwogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAg
SnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1t
MzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgaWYgKCgo
Y29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwpAQCAtODE1LDQy
ICs4MTgsNDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogICAgIAotICAgIEp1bXAgYnJhbmNoMzIoQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNz
IHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9tcihyaWdodC5vZmZzZXQs
IHJpZ2h0LmJhc2UsIGxlZnQpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogICAgIAotICAgIEp1bXAgYnJhbmNoMzIoQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ybShyaWdodCwgbGVmdC5v
ZmZzZXQsIGxlZnQuYmFzZSk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4
ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5j
aDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2ltKHJpZ2h0Lm1fdmFsdWUs
IGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihD
b25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW0ocmln
aHQubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSwgbGVmdC5pbmRleCwgbGVmdC5zY2Fs
ZSk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29u
ZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhD
b25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBK
dW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJh
bmNoMTYoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQor
ICAgIEp1bXAgYnJhbmNoMTYoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVm
dCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHdfcm0o
cmlnaHQsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UsIGxlZnQuaW5kZXgsIGxlZnQuc2NhbGUpOwog
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7
CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gxNihDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDE2KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghKHJpZ2h0Lm1fdmFsdWUgJiAweEZGRkYwMDAwKSk7CiAKQEAgLTg1OCwx
NiArODYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakND
KHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVGVzdDMyKENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQorICAgIEp1bXAg
YnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0
ZXJJRCBtYXNrKQogICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pIHx8IChjb25kID09IFNpZ25lZCkpOwogICAgICAgICBtX2Fzc2VtYmxlci50
ZXN0bF9ycihyZWcsIG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJ
bW0zMigtMSkpCisgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAg
ewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwg
KGNvbmQgPT0gU2lnbmVkKSk7CiAgICAgICAgIC8vIGlmIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQg
aW4gdGhlIGxvdyBzZXZlbiBiaXRzLCB0aGlzIGNhbiBiZSB0ZXN0ZWQgd2l0aCBhIHRlc3RiCiAg
ICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50
ZXN0bF9ycihyZWcsIHJlZyk7CkBAIC04NzgsOSArODc5LDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQog
Ci0gICAgSnVtcCBicmFuY2hUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVz
dDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBTaWduZWQpKTsKICAgICAgICAg
aWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW0o
MCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgICAgIGVsc2UKQEAgLTg4OCw5
ICs4ODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4
ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3QzMihDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
QmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSB8fCAoY29uZCA9PSBTaWduZWQpKTsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIGVsc2UKQEAg
LTg5OCwxMSArODk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KICAgICAKLSAgICBKdW1wIGJyYW5j
aFRlc3Q4KENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewogICAgICAgICAvLyBCeXRlIGluIFRydXN0ZWRJbW0zMiBpcyBub3Qgd2VsbCBk
ZWZpbmVkLCBzbyBiZSBhIGxpdHRsZSBwZXJtaXNpdmUgaGVyZSwgYnV0IGRvbid0IGFjY2VwdCBu
b25zZW5zZSB2YWx1ZXMuCiAgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAmJiBt
YXNrLm1fdmFsdWUgPD0gMjU1KTsKLSAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pIHx8IChjb25kID09IFNpZ25lZCkpOwogICAgICAgICBpZiAobWFzay5t
X3ZhbHVlID09IC0xKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfcnIocmVnLCByZWcp
OwogICAgICAgICBlbHNlCkBAIC05MTAsMTEgKzkwOCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaFRlc3Q4KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3Q4
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIEJ5dGUgaW4gVHJ1c3RlZElt
bTMyIGlzIG5vdCB3ZWxsIGRlZmluZWQsIHNvIGJlIGEgbGl0dGxlIHBlcm1pc2l2ZSBoZXJlLCBi
dXQgZG9uJ3QgYWNjZXB0IG5vbnNlbnNlIHZhbHVlcy4KICAgICAgICAgQVNTRVJUKG1hc2subV92
YWx1ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOwotICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwgKGNvbmQgPT0gU2lnbmVkKSk7CiAg
ICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXBiX2ltKDAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgICAgICBlbHNlCkBA
IC05MjIsMTEgKzkxOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAgICAgCi0gICAgSnVtcCBicmFu
Y2hUZXN0OChDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVk
SW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgLy8gQnl0ZSBpbiBUcnVzdGVkSW1tMzIgaXMgbm90
IHdlbGwgZGVmaW5lZCwgc28gYmUgYSBsaXR0bGUgcGVybWlzaXZlIGhlcmUsIGJ1dCBkb24ndCBh
Y2NlcHQgbm9uc2Vuc2UgdmFsdWVzLgogICAgICAgICBBU1NFUlQobWFzay5tX3ZhbHVlID49IC0x
MjggJiYgbWFzay5tX3ZhbHVlIDw9IDI1NSk7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBTaWduZWQpKTsKICAgICAgICAgaWYg
KG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTk2MSw0MiArOTU3LDM3IEBAIHB1YmxpYzoKICAgICAvLyAq
IGpvIG9wZXJhdGlvbnMgYnJhbmNoIGlmIHRoZSAoc2lnbmVkKSBhcml0aG1ldGljCiAgICAgLy8g
ICBvcGVyYXRpb24gY2F1c2VkIGFuIG92ZXJmbG93IHRvIG9jY3VyLgogICAgIAotICAgIEp1bXAg
YnJhbmNoQWRkMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBP
dmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9
PSBOb25aZXJvKSk7CiAgICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBK
dW1wIGJyYW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0K
ICAgICAKLSAgICBKdW1wIGJyYW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIg
c3JjLCBBZGRyZXNzIGRlc3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgVHJ1c3RlZEltbTMyIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAgQVNT
RVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7CiAgICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJy
YW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgYWRkMzIo
c3JjLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoQWRkMzIoQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hBZGQzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwogICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQog
Ci0gICAgSnVtcCBicmFuY2hBZGQzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBS
ZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNyYzEgPT0gZGVzdCkKICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMyLCBkZXN0KTsKQEAgLTEwMDQsMzQgKzk5
NSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMxLCBk
ZXN0KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaEFkZDMyKENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAg
YnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKHNyYywgZGVz
dCk7CiAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBpbW0sIGRlc3QpOwogICAgIH0K
IAotICAgIEp1bXAgYnJhbmNoTXVsMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChjb25kID09IE92ZXJmbG93KTsKICAgICAgICAgbXVsMzIoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihk
ZXN0LCBkZXN0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoTXVsMzIoQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hNdWwzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwogICAgICAgICBtdWwzMihzcmMsIGRlc3QpOworICAgICAgICBp
ZiAoY29uZCAhPSBPdmVyZmxvdykKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKGRl
c3QsIGRlc3QpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0
aW9uKGNvbmQpKSk7CiAgICAgfQogICAgIAotICAgIEp1bXAgYnJhbmNoTXVsMzIoQ29uZGl0aW9u
IGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChjb25kID09IE92ZXJmbG93KTsKICAgICAgICAgbXVsMzIoaW1tLCBzcmMsIGRlc3QpOwor
ICAgICAgICBpZiAoY29uZCAhPSBPdmVyZmxvdykKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRl
c3RsX3JyKGRlc3QsIGRlc3QpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogICAgIAotICAgIEp1bXAgYnJhbmNoTXVsMzIo
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChzcmMxID09IGRlc3QpCiAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIo
Y29uZCwgc3JjMiwgZGVzdCk7CkBAIC0xMDM5LDQyICsxMDMzLDM3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYzEsIGRlc3QpOwogICAgIH0KIAotICAgIEp1
bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9
PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAgICAg
Ci0gICAgSnVtcCBicmFuY2hTdWIzMihDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIHN1YjMyKGltbSwgZGVzdCk7CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsK
ICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFN1YjMyKENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBO
b25aZXJvKSk7CiAgICAgICAgIHN1YjMyKGltbSwgZGVzdCk7CiAgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1w
IGJyYW5jaFN1YjMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0
KQorICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZs
b3cpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgc3Vi
MzIoc3JjLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNv
bmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9u
IGNvbmQsIEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gWmVybykg
fHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAgICAgICBzdWIzMihzcmMsIGRlc3QpOwogICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAg
fQogCi0gICAgSnVtcCBicmFuY2hTdWIzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgLy8gQiA6PSBBIC0gQiBpcyBpbnZhbGlk
LgogICAgICAgICBBU1NFUlQoc3JjMSA9PSBkZXN0IHx8IHNyYzIgIT0gZGVzdCk7CkBAIC0xMDgz
LDIyICsxMDcyLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQs
IHNyYzIsIGRlc3QpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjMSwgVHJ1c3RlZEltbTMyIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YzEsIFRydXN0ZWRJbW0zMiBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
b3ZlKHNyYzEsIGRlc3QpOwogICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjMiwg
ZGVzdCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hOZWczMihDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQorICAgIEp1bXAgYnJhbmNoTmVnMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBP
dmVyZmxvdykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAgICAg
ICBuZWczMihzcmNEZXN0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4
NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoT3IzMihDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5j
aE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKICAg
ICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwog
ICAgIH0KQEAgLTExMzEsMzUgKzExMTgsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5yZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ycihyaWdodCwgbGVmdCk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnNldENDX3IoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0
ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Y21wbF9tcihsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlLCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnNldENDX3IoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldDhDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoKChjb25kID09
IEVxdWFsKSB8fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFyaWdodC5tX3ZhbHVlKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudGVzdGxfcnIobGVmdCwgbGVmdCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnNldENDX3IoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldDMyQ29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmUz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9y
cihyaWdodCwgbGVmdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNldENDX3IoeDg2Q29uZGl0aW9u
KGNvbmQpLCBkZXN0KTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92emJsX3JyKGRlc3QsIGRlc3Qp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0MzJDb21wYXJlMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9p
ZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCgo
Y29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKGxlZnQsIGxlZnQpOwpAQCAtMTE3NCw3
ICsxMTQwLDcgQEAgcHVibGljOgogICAgIC8vIGRlc3Qtc3JjLCBvcGVyYXRpb25zIGFsd2F5cyBo
YXZlIGEgZGVzdD8gLi4uIHBvc3NpYmx5IG5vdCB0cnVlLCBjb25zaWRlcmluZwogICAgIC8vIGFz
bSBvcHMgbGlrZSB0ZXN0LCBvciBwc2V1ZG8gb3BzIGxpa2UgcG9wKCkuCiAKLSAgICB2b2lkIHNl
dDMyVGVzdDgoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKQEAgLTExODQs
NyArMTE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92emJsX3JyKGRlc3Qs
IGRlc3QpOwogICAgIH0KIAotICAgIHZvaWQgc2V0MzJUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2
b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVk
SW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG1hc2subV92
YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW0oMCwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CkBAIC0xMTk1LDcgKzExNjEsMTIgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlv
bihDb25kaXRpb24gY29uZCkKKyAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRp
b24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKKyAgICB9CisKKyAgICBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCiAg
ICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDg0MzA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRQdHIoQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJp
Z2h0Lm1fdmFsdWUpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihsZWZ0LCBsZWZ0
KTsKQEAgLTMyMiw0OSArMzIyLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92
emJsX3JyKGRlc3QsIGRlc3QpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyKENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFu
Y2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX3JyKHJpZ2h0LCBsZWZ0
KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25k
KSkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyKENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQpCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQp
CiAgICAgewogICAgICAgICBtb3ZlKHJpZ2h0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBy
ZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCi0g
ICAgSnVtcCBicmFuY2hQdHIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVz
cyByaWdodCkKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcHFfbXIocmlnaHQub2Zmc2V0LCByaWdodC5iYXNlLCBsZWZ0KTsKICAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAotICAg
IEp1bXAgYnJhbmNoUHRyKENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAg
ICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgcmln
aHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBxX3JtKHJpZ2h0LCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsK
ICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkp
OwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQpCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQpCiAgICAgewog
ICAgICAgICBtb3ZlKHJpZ2h0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJh
bmNoUHRyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgSnVtcCBi
cmFuY2hUZXN0UHRyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBt
YXNrKQorICAgIEp1bXAgYnJhbmNoVGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRl
c3RxX3JyKHJlZywgbWFzayk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4
ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3RQdHIoQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJ
bW0zMigtMSkpCisgICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAg
IHsKICAgICAgICAgLy8gaWYgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG93IHNldmVu
IGJpdHMsIHRoaXMgY2FuIGJlIHRlc3RlZCB3aXRoIGEgdGVzdGIKICAgICAgICAgaWYgKG1hc2su
bV92YWx1ZSA9PSAtMSkKQEAgLTM3NiwxMyArMzc2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAot
ICAgIEp1bXAgYnJhbmNoVGVzdFB0cihDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJy
YW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
LCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBs
b2FkUHRyKGFkZHJlc3MubV9wdHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0UHRyKGNvbmQsIHNjcmF0Y2hSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCi0gICAg
SnVtcCBicmFuY2hUZXN0UHRyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICBKdW1wIGJyYW5jaFRlc3RQdHIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAt
MSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CkBAIC0zOTEsNyArMzkxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCi0gICAg
SnVtcCBicmFuY2hUZXN0UHRyKENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdFB0
cihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIGlmIChtYXNrLm1fdmFsdWUg
PT0gLTEpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2ltKDAsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwpAQCAtNDAxLDE2
ICs0MDEsMTQgQEAgcHVibGljOgogICAgIH0KIAogCi0gICAgSnVtcCBicmFuY2hBZGRQdHIoQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBi
cmFuY2hBZGRQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgYWRkUHRyKHNyYywg
ZGVzdCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFN1YlB0cihDb25kaXRpb24gY29uZCwg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoU3ViUHRy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgc3ViUHRyKGltbSwgZGVzdCk7CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsK
ICAgICB9CkBAIC00MjEsMTMgKzQxOSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBEYXRh
TGFiZWxQdHIodGhpcyk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRy
dXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQorICAgIEp1
bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmln
aHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBt
b3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAg
ICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQog
Ci0gICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFs
dWUgPSBUcnVzdGVkSW1tUHRyKDApKQorICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJl
bCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAg
ICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVl
LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQs
IHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC00NDEsNyArNDM5LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsKLSAgICBKdW1w
IGJyYW5jaFRlc3Q4KENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDgo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1t
MzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tUHRy
IGFkZHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcy5vZmZzZXQpKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiA4NDMwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBTcGVjdWxhdGVJbnRlZ2Vy
T3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIG9wMSwgb3AyKTsKIAotICAgICAgICBtX2ppdC5zZXQzMkNvbXBhcmUzMihKSVRD
b21waWxlcjo6TGVzc1RoYW4sIG9wMS5yZWdpc3RlcklEKCksIG9wMi5yZWdpc3RlcklEKCksIHJl
c3VsdC5yZWdpc3RlcklEKCkpOworICAgICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6
Okxlc3NUaGFuLCBvcDEucmVnaXN0ZXJJRCgpLCBvcDIucmVnaXN0ZXJJRCgpLCByZXN1bHQucmVn
aXN0ZXJJRCgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ug
c2hvdWxkIHVzZSBpdCBoZXJlLgogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1
ZUZhbHNlKSwgcmVzdWx0LnJlZ2lzdGVySUQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBTcGVjdWxhdGVJbnRl
Z2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIpOwogICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKIAotICAgICAgICBtX2ppdC5zZXQzMkNvbXBhcmUzMihK
SVRDb21waWxlcjo6TGVzc1RoYW5PckVxdWFsLCBvcDEucmVnaXN0ZXJJRCgpLCBvcDIucmVnaXN0
ZXJJRCgpLCByZXN1bHQucmVnaXN0ZXJJRCgpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKEpJ
VENvbXBpbGVyOjpMZXNzVGhhbk9yRXF1YWwsIG9wMS5yZWdpc3RlcklEKCksIG9wMi5yZWdpc3Rl
cklEKCksIHJlc3VsdC5yZWdpc3RlcklEKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERh
dGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQucmVnaXN0ZXJJRCgpKTsKQEAgLTUxOSw3
ICs1MTksNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwogCi0gICAgICAgIG1faml0
LnNldDMyQ29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxLnJlZ2lzdGVySUQoKSwgb3Ay
LnJlZ2lzdGVySUQoKSwgcmVzdWx0LnJlZ2lzdGVySUQoKSk7CisgICAgICAgIG1faml0LmNvbXBh
cmUzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMS5yZWdpc3RlcklEKCksIG9wMi5yZWdpc3RlcklE
KCksIHJlc3VsdC5yZWdpc3RlcklEKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFG
b3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIoVHJ1
c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQucmVnaXN0ZXJJRCgpKTsKQEAgLTUzMiw3ICs1
MzIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwogCi0gICAgICAgIG1faml0LnNl
dDMyQ29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxLnJlZ2lzdGVySUQoKSwgb3AyLnJl
Z2lzdGVySUQoKSwgcmVzdWx0LnJlZ2lzdGVySUQoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmUz
MihKSVRDb21waWxlcjo6RXF1YWwsIG9wMS5yZWdpc3RlcklEKCksIG9wMi5yZWdpc3RlcklEKCks
IHJlc3VsdC5yZWdpc3RlcklEKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3Jt
YXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3Rl
ZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQucmVnaXN0ZXJJRCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDg0MzA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShJbnN0
cnVjdGlvbiogY3VycmVuCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihCZWxvdywgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAKLSAg
ICBzZXQzMkNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CisgICAgY29tcGFy
ZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKIAogICAgIGVtaXRTdG9yZUJvb2woZHN0
LCByZWdUMCk7CiB9CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEo
SW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICBhZGRTbG93Q2FzZShicmFu
Y2gzMihCZWxvdywgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAK
LSAgICBzZXQzMkNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CisgICAg
Y29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKIAogICAgIGVtaXRTdG9y
ZUJvb2woZHN0LCByZWdUMCk7CiB9CkBAIC0xMTUxLDkgKzExNTEsOSBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAKICAg
ICBpZiAodHlwZSA9PSBPcFN0cmljdEVxKQotICAgICAgICBzZXQzMkNvbXBhcmUzMihFcXVhbCwg
cmVnVDAsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIHJl
Z1QxLCByZWdUMCk7CiAgICAgZWxzZQotICAgICAgICBzZXQzMkNvbXBhcmUzMihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDAs
IHJlZ1QxLCByZWdUMCk7CiAKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQpAQCAt
MTIwNywxNCArMTIwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9u
KiBjCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBzZXQzMlRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCByZWdUMSk7CisgICAgdGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIHJlZ1QxKTsKIAogICAgIEp1
bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwogCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlz
KTsKIAotICAgIHNldDMyQ29tcGFyZTMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6Ok51bGxUYWcpLCByZWdUMik7Ci0gICAgc2V0MzJDb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDEpOworICAgIGNvbXBhcmUz
MihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSwgcmVnVDIpOwor
ICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZWdUMSk7CiAgICAgb3IzMihyZWdUMiwgcmVnVDEpOwogCiAgICAgd2FzTm90SW1t
ZWRpYXRlLmxpbmsodGhpcyk7CkBAIC0xMjMxLDE0ICsxMjMxLDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDEpOwotICAgIHNldDMyVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCks
IHJlZ1QxKTsKKyAgICB0ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwg
cmVnVDEpOwogCiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7CiAKICAgICBpc0lt
bWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAgc2V0MzJDb21wYXJlMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZyksIHJlZ1QyKTsKLSAgICBzZXQzMkNvbXBh
cmUzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcp
LCByZWdUMSk7CisgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6Ok51bGxUYWcpLCByZWdUMik7CisgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QxKTsKICAgICBhbmQzMihy
ZWdUMiwgcmVnVDEpOwogCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDg0MzA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzk3LDcgKzc5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKEluc3RydWN0aW9uKiBj
dXJyZW4KIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVn
VDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXJzKHJlZ1QwLCBy
ZWdUMSwgcmVnVDIpOwotICAgIHNldDMyQ29tcGFyZTMyKEVxdWFsLCByZWdUMSwgcmVnVDAsIHJl
Z1QwKTsKKyAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwogICAgIGVt
aXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkBAIC04NDUsNyArODQ1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfbmVxKEluc3RydWN0aW9uKiBjdXJyZQogewogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMocmVnVDAsIHJlZ1QxLCByZWdUMik7Ci0gICAgc2V0
MzJDb21wYXJlMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOworICAgIGNvbXBhcmUz
MihOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFRhZ0FzQm9vbEltbWVk
aWF0ZShyZWdUMCk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwpAQCAtMTAxOCw5ICsxMDE4LDkgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxKEluc3RydWN0aW9uKgogICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZJbW1l
ZGlhdGVOdW1iZXIocmVnVDIpKTsKIAogICAgIGlmICh0eXBlID09IE9wU3RyaWN0RXEpCi0gICAg
ICAgIHNldDMyQ29tcGFyZTMyKEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAg
Y29tcGFyZTMyKEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKICAgICBlbHNlCi0gICAgICAg
IHNldDMyQ29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAg
Y29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKICAgICBlbWl0VGFnQXNC
b29sSW1tZWRpYXRlKHJlZ1QwKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsK
QEAgLTExNjIsMTQgKzExNjIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVj
dGlvbiogYwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1Qw
KTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QyKTsKLSAgICBzZXQzMlRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVj
dHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpLCByZWdUMCk7CisgICAgdGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCksIHJlZ1QwKTsKIAogICAgIEp1bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgp
OwogCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKIAogICAgIGFuZFB0cihUcnVzdGVkSW1t
MzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsKLSAgICBzZXRQdHIoRXF1YWwsIHJlZ1QwLCBU
cnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVnVDApOworICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVnVDApOwogCiAgICAgd2FzTm90SW1tZWRp
YXRlLmxpbmsodGhpcyk7CiAKQEAgLTExODcsMTQgKzExODcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVt
cElmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBzZXQzMlRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCByZWdUMCk7CisgICAgdGVzdDgoWmVybywgQWRkcmVz
cyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIHJlZ1QwKTsKIAogICAgIEp1bXAgd2FzTm90SW1tZWRp
YXRlID0ganVtcCgpOwogCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKIAogICAgIGFuZFB0
cihUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsKLSAgICBzZXRQdHIoTm90
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVnVDApOworICAgIGNvbXBh
cmVQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVnVDApOwog
CiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAK
</data>
<flag name="review"
          id="83015"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90713</attachid>
            <date>2011-04-22 09:33:18 -0700</date>
            <delta_ts>2011-04-25 13:19:21 -0700</delta_ts>
            <desc>fix issues</desc>
            <filename>0083-Rationalize-MacroAssembler-branch-methods-fix-issues.patch</filename>
            <type>text/plain</type>
            <size>34347</size>
            <attacher name="thouraya">thouraya.andolsi</attacher>
            
              <data encoding="base64">RnJvbSAwZTU1YWJkMjVhN2M4NWUwODhhNGM4ZTJjZDgxNjdiNDczM2JkOTk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG91cmF5YSBBTkRPTFNJIDx0aG91cmF5YS5hbmRvbHNpQHN0
LmNvbT4KRGF0ZTogRnJpLCAyMiBBcHIgMjAxMSAxNzozMDo0MSArMDIwMApTdWJqZWN0OiBbUEFU
Q0ggODMvODNdIFJhdGlvbmFsaXplIE1hY3JvQXNzZW1ibGVyIGJyYW5jaCBtZXRob2RzOiBmaXgg
aXNzdWVzLgoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICB8ICAgMzIgKysrCiAuLi4vSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyU0g0LmNwcCB8ICAgMzAgLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0LmggICB8ICAyNTAgKysrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggICAgIHwgICAgMiArLQogNCBm
aWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgMTU4IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2ZjRjZWEuLjdmNDdkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTA0LTIyICBUaG91cmF5YSBBTkRPTFNJICA8
dGhvdXJheWEuYW5kb2xzaUBzdC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmF0aW9uYWxpemUgTWFjcm9Bc3NlbWJsZXIgYnJhbmNoIG1ldGhv
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTUw
CisKKyAgICAgICAgc3BsaXQgb3V0IHRoZSAnQ29uZGl0aW9uJyBlbnVtIGludG8gJ1JlbGF0aW9u
YWxDb25kaXRpb24nIGFuZCAnUmVzdWx0Q29uZGl0aW9uJyAKKyAgICAgICAgYW5kIGFwcGx5IHJl
bGF0ZWQgY2hhbmdlcyAob25seSBmb3IgU0g0IHBsYXRmb3JtcykuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6Y29tcGFyZTMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaDMyV2l0aFVuYWxpZ25l
ZEhhbGZXb3Jkcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2hEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
U0g0OjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6dGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJh
bmNoMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJhbmNoVGVzdDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaEFkZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJTSDQ6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6OmJyYW5jaE9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6YnJh
bmNoQ29udmVydERvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNI
NDo6YnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6
OlNINENvbmRpdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6OmNtcEVxSW1tUjApOgorCiAyMDExLTA0LTIxICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByODQ1ODMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwCmluZGV4IGY3MTg4NDUuLmVlMTFmNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJTSDQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJTSDQuY3BwCkBAIC0zMSwzNiArMzEsNiBAQAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
U0g0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVy
U0g0OjpFcXVhbCA9IFNINEFzc2VtYmxlcjo6RVE7Ci1jb25zdCBDb25kaXRpb24gTWFjcm9Bc3Nl
bWJsZXJTSDQ6Ok5vdEVxdWFsID0gU0g0QXNzZW1ibGVyOjpORTsKLWNvbnN0IENvbmRpdGlvbiBN
YWNyb0Fzc2VtYmxlclNINDo6R3JlYXRlclRoYW4gPSBTSDRBc3NlbWJsZXI6OkdUOwotY29uc3Qg
Q29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpHcmVhdGVyVGhhbk9yRXF1YWwgPSBTSDRBc3Nl
bWJsZXI6OkdFOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpMZXNzVGhhbiA9
IFNINEFzc2VtYmxlcjo6TFQ7Ci1jb25zdCBDb25kaXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6Okxl
c3NUaGFuT3JFcXVhbCA9IFNINEFzc2VtYmxlcjo6TEU7Ci1jb25zdCBDb25kaXRpb24gTWFjcm9B
c3NlbWJsZXJTSDQ6OlVHcmVhdGVyVGhhbiA9IFNINEFzc2VtYmxlcjo6SEk7Ci1jb25zdCBDb25k
aXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6OlVHcmVhdGVyVGhhbk9yRXF1YWwgPSBTSDRBc3NlbWJs
ZXI6OkhTOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpVTGVzc1RoYW4gPSBT
SDRBc3NlbWJsZXI6OkxJOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpVTGVz
c1RoYW5PckVxdWFsID0gU0g0QXNzZW1ibGVyOjpMUzsKLWNvbnN0IENvbmRpdGlvbiBNYWNyb0Fz
c2VtYmxlclNINDo6WmVybyA9IFNINEFzc2VtYmxlcjo6RVE7Ci1jb25zdCBDb25kaXRpb24gTWFj
cm9Bc3NlbWJsZXJTSDQ6Ok5vblplcm8gPSBTSDRBc3NlbWJsZXI6Ok5FOwotY29uc3QgQ29uZGl0
aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpPdmVyZmxvdyA9IFNINEFzc2VtYmxlcjo6T0Y7Ci1jb25z
dCBDb25kaXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6OkFib3ZlID0gU0g0QXNzZW1ibGVyOjpISTsK
LWNvbnN0IENvbmRpdGlvbiBNYWNyb0Fzc2VtYmxlclNINDo6QWJvdmVPckVxdWFsID0gU0g0QXNz
ZW1ibGVyOjpIUzsKLWNvbnN0IENvbmRpdGlvbiBNYWNyb0Fzc2VtYmxlclNINDo6QmVsb3cgPSBT
SDRBc3NlbWJsZXI6OkxJOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpCZWxv
d09yRXF1YWwgPSBTSDRBc3NlbWJsZXI6OkxTOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1i
bGVyU0g0OjpEb3VibGVFcXVhbCA9IFNINEFzc2VtYmxlcjo6RVE7Ci1jb25zdCBDb25kaXRpb24g
TWFjcm9Bc3NlbWJsZXJTSDQ6OkRvdWJsZU5vdEVxdWFsID0gU0g0QXNzZW1ibGVyOjpORTsKLWNv
bnN0IENvbmRpdGlvbiBNYWNyb0Fzc2VtYmxlclNINDo6RG91YmxlR3JlYXRlclRoYW4gPSBTSDRB
c3NlbWJsZXI6OkdUOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpEb3VibGVH
cmVhdGVyVGhhbk9yRXF1YWwgPSBTSDRBc3NlbWJsZXI6OkdFOwotY29uc3QgQ29uZGl0aW9uIE1h
Y3JvQXNzZW1ibGVyU0g0OjpEb3VibGVMZXNzVGhhbiA9IFNINEFzc2VtYmxlcjo6TFQ7Ci1jb25z
dCBDb25kaXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbCA9IFNI
NEFzc2VtYmxlcjo6TEU7Ci1jb25zdCBDb25kaXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6OkRvdWJs
ZUVxdWFsT3JVbm9yZGVyZWQgPSBTSDRBc3NlbWJsZXI6OkVRVTsKLWNvbnN0IENvbmRpdGlvbiBN
YWNyb0Fzc2VtYmxlclNINDo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCA9IFNINEFzc2VtYmxl
cjo6TkVVOwotY29uc3QgQ29uZGl0aW9uIE1hY3JvQXNzZW1ibGVyU0g0OjpEb3VibGVHcmVhdGVy
VGhhbk9yVW5vcmRlcmVkID0gU0g0QXNzZW1ibGVyOjpHVFU7Ci1jb25zdCBDb25kaXRpb24gTWFj
cm9Bc3NlbWJsZXJTSDQ6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gU0g0
QXNzZW1ibGVyOjpHRVU7Ci1jb25zdCBDb25kaXRpb24gTWFjcm9Bc3NlbWJsZXJTSDQ6OkRvdWJs
ZUxlc3NUaGFuT3JVbm9yZGVyZWQgPSBTSDRBc3NlbWJsZXI6OkxUVTsKLWNvbnN0IENvbmRpdGlv
biBNYWNyb0Fzc2VtYmxlclNINDo6RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQgPSBT
SDRBc3NlbWJsZXI6OkxFVTsKLWNvbnN0IENvbmRpdGlvbiBNYWNyb0Fzc2VtYmxlclNINDo6U2ln
bmVkID0gU0g0QXNzZW1ibGVyOjpTSTsKIAogdm9pZCBNYWNyb0Fzc2VtYmxlclNINDo6bGlua0Nh
bGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaApp
bmRleCA3ZTE1ZTZjLi41ZWY3YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0zNCw0OCArMzQsNTQgQEAKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLXR5cGVkZWYgU0g0QXNz
ZW1ibGVyOjpDb25kaXRpb24gQ29uZGl0aW9uOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlclNINCA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFzc2VtYmxlcj4gewogcHVibGljOgog
ICAgIHR5cGVkZWYgU0g0QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwogCi0g
ICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBFcXVhbDsKLSAgICBzdGF0aWMgY29uc3QgQ29uZGl0
aW9uIE5vdEVxdWFsOwotICAgIHN0YXRpYyBjb25zdCBDb25kaXRpb24gR3JlYXRlclRoYW47Ci0g
ICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBHcmVhdGVyVGhhbk9yRXF1YWw7Ci0gICAgc3RhdGlj
IGNvbnN0IENvbmRpdGlvbiBMZXNzVGhhbjsKLSAgICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIExl
c3NUaGFuT3JFcXVhbDsKLSAgICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIFVHcmVhdGVyVGhhbjsK
LSAgICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIFVHcmVhdGVyVGhhbk9yRXF1YWw7Ci0gICAgc3Rh
dGljIGNvbnN0IENvbmRpdGlvbiBVTGVzc1RoYW47Ci0gICAgc3RhdGljIGNvbnN0IENvbmRpdGlv
biBVTGVzc1RoYW5PckVxdWFsOwotICAgIHN0YXRpYyBjb25zdCBDb25kaXRpb24gWmVybzsKLSAg
ICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIE5vblplcm87Ci0gICAgc3RhdGljIGNvbnN0IENvbmRp
dGlvbiBPdmVyZmxvdzsKLSAgICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIEFib3ZlOwotICAgIHN0
YXRpYyBjb25zdCBDb25kaXRpb24gQWJvdmVPckVxdWFsOwotICAgIHN0YXRpYyBjb25zdCBDb25k
aXRpb24gQmVsb3c7Ci0gICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBCZWxvd09yRXF1YWw7Ci0g
ICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBEb3VibGVFcXVhbDsKLSAgICBzdGF0aWMgY29uc3Qg
Q29uZGl0aW9uIERvdWJsZU5vdEVxdWFsOwotICAgIHN0YXRpYyBjb25zdCBDb25kaXRpb24gRG91
YmxlR3JlYXRlclRoYW47Ci0gICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBEb3VibGVHcmVhdGVy
VGhhbk9yRXF1YWw7Ci0gICAgc3RhdGljIGNvbnN0IENvbmRpdGlvbiBEb3VibGVMZXNzVGhhbjsK
LSAgICBzdGF0aWMgY29uc3QgQ29uZGl0aW9uIERvdWJsZUxlc3NUaGFuT3JFcXVhbDsKLSAgICBz
dGF0aWMgY29uc3QgQ29uZGl0aW9uIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQ7Ci0gICAgc3RhdGlj
IGNvbnN0IENvbmRpdGlvbiBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkOwotICAgIHN0YXRpYyBj
b25zdCBDb25kaXRpb24gRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZDsKLSAgICBzdGF0aWMg
Y29uc3QgQ29uZGl0aW9uIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkOwotICAg
IHN0YXRpYyBjb25zdCBDb25kaXRpb24gRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZDsKLSAgICBz
dGF0aWMgY29uc3QgQ29uZGl0aW9uIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkOwot
ICAgIHN0YXRpYyBjb25zdCBDb25kaXRpb24gU2lnbmVkOwogICAgIHN0YXRpYyBjb25zdCBTY2Fs
ZSBTY2FsZVB0ciA9IFRpbWVzRm91cjsKICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZz
Y3JhdGNoID0gU0g0UmVnaXN0ZXJzOjpmcjEwOwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IHN0YWNrUG9pbnRlclJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpzcDsKICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnByOwogICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHNjcmF0Y2hSZWczID0gU0g0UmVnaXN0ZXJzOjpyMTM7CiAKKyAg
ICBlbnVtIFJlbGF0aW9uYWxDb25kaXRpb24geworICAgICAgICBFcXVhbCA9IFNINEFzc2VtYmxl
cjo6RVEsCisgICAgICAgIE5vdEVxdWFsID0gU0g0QXNzZW1ibGVyOjpORSwKKyAgICAgICAgQWJv
dmUgPSBTSDRBc3NlbWJsZXI6OkhJLAorICAgICAgICBBYm92ZU9yRXF1YWwgPSBTSDRBc3NlbWJs
ZXI6OkhTLAorICAgICAgICBCZWxvdyA9IFNINEFzc2VtYmxlcjo6TEksCisgICAgICAgIEJlbG93
T3JFcXVhbCA9IFNINEFzc2VtYmxlcjo6TFMsCisgICAgICAgIEdyZWF0ZXJUaGFuID0gU0g0QXNz
ZW1ibGVyOjpHVCwKKyAgICAgICAgR3JlYXRlclRoYW5PckVxdWFsID0gU0g0QXNzZW1ibGVyOjpH
RSwKKyAgICAgICAgTGVzc1RoYW4gPSBTSDRBc3NlbWJsZXI6OkxULAorICAgICAgICBMZXNzVGhh
bk9yRXF1YWwgPSBTSDRBc3NlbWJsZXI6OkxFCisgICAgfTsKKworICAgIGVudW0gUmVzdWx0Q29u
ZGl0aW9uIHsKKyAgICAgICAgT3ZlcmZsb3cgPSBTSDRBc3NlbWJsZXI6Ok9GLAorICAgICAgICBT
aWduZWQgPSBTSDRBc3NlbWJsZXI6OlNJLAorICAgICAgICBaZXJvID0gU0g0QXNzZW1ibGVyOjpF
USwKKyAgICAgICAgTm9uWmVybyA9IFNINEFzc2VtYmxlcjo6TkUKKyAgICB9OworCisgICAgZW51
bSBEb3VibGVDb25kaXRpb24geworICAgICAgICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25s
eSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBjb21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5l
aXRoZXIgb3BlcmFuZCBpcyBOYU4uCisgICAgICAgIERvdWJsZUVxdWFsID0gU0g0QXNzZW1ibGVy
OjpFUSwKKyAgICAgICAgRG91YmxlTm90RXF1YWwgPSBTSDRBc3NlbWJsZXI6Ok5FLAorICAgICAg
ICBEb3VibGVHcmVhdGVyVGhhbiA9IFNINEFzc2VtYmxlcjo6R1QsCisgICAgICAgIERvdWJsZUdy
ZWF0ZXJUaGFuT3JFcXVhbCA9IFNINEFzc2VtYmxlcjo6R0UsCisgICAgICAgIERvdWJsZUxlc3NU
aGFuID0gU0g0QXNzZW1ibGVyOjpMVCwKKyAgICAgICAgRG91YmxlTGVzc1RoYW5PckVxdWFsID0g
U0g0QXNzZW1ibGVyOjpMRSwKKyAgICAgICAgLy8gSWYgZWl0aGVyIG9wZXJhbmQgaXMgTmFOLCB0
aGVzZSBjb25kaXRpb25zIGFsd2F5cyBldmFsdWF0ZSB0byB0cnVlLgorICAgICAgICBEb3VibGVF
cXVhbE9yVW5vcmRlcmVkID0gU0g0QXNzZW1ibGVyOjpFUVUsCisgICAgICAgIERvdWJsZU5vdEVx
dWFsT3JVbm9yZGVyZWQgPSBTSDRBc3NlbWJsZXI6Ok5FVSwKKyAgICAgICAgRG91YmxlR3JlYXRl
clRoYW5PclVub3JkZXJlZCA9IFNINEFzc2VtYmxlcjo6R1RVLAorICAgICAgICBEb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCA9IFNINEFzc2VtYmxlcjo6R0VVLAorICAgICAgICBE
b3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkID0gU0g0QXNzZW1ibGVyOjpMVFUsCisgICAgICAgIERv
dWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gU0g0QXNzZW1ibGVyOjpMRVUsCisgICAg
fTsKKwogICAgIFJlZ2lzdGVySUQgY2xhaW1TY3JhdGNoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2Fzc2VtYmxlci5jbGFpbVNjcmF0Y2goKTsKQEAgLTM0OCwyNSArMzU0LDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybEltbThyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsK
ICAgICB9CiAKLSAgICB2b2lkIGNvbXBhcmUzMihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCwgQ29u
ZGl0aW9uIGNvbmQpCisgICAgdm9pZCBjb21wYXJlMzIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3Qs
IFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAgIGlmICgoKGNvbmQgPT0g
RXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgKGRzdCA9PSBTSDRSZWdpc3RlcnM6OnIw
KSAmJiBtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZShpbW0pKSB7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBFcUltbVIwKGltbSwgZHN0LCBjb25kKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcEVxSW1tUjAoaW1tLCBkc3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubG9hZENvbnN0YW50KGltbSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJl
Z1JlZyhzY3IsIGRzdCwgY29uZCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2Ny
LCBkc3QsIFNINENvbmRpdGlvbihjb25kKSk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7
CiAgICAgfQogCi0gICAgdm9pZCBjb21wYXJlMzIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGxlZnQsIENvbmRpdGlvbiBjb25kKQorICAgIHZvaWQgY29tcGFyZTMyKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRj
aCgpOwogICAgICAgICBpZiAoIW9mZnNldCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
bE1lbVJlZyhiYXNlLCBzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhz
Y3IsIGxlZnQsIGNvbmQpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3Is
IGxlZnQsIFNINENvbmRpdGlvbihjb25kKSk7CiAgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChz
Y3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNzUsMTMgKzM4MSwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQob2Zmc2V0LCBz
Y3IpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhiYXNlLCBzY3IpOwogICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjciwgbGVmdCwgY29uZCk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsUmVnUmVnKHNjciwgbGVmdCwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKICAgICAg
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKG9mZnNldCA+PiAyLCBiYXNlLCBz
Y3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjciwgbGVmdCwgY29uZCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyLCBsZWZ0LCBTSDRDb25kaXRpb24oY29u
ZCkpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgIH0KIApAQCAtNDIxLDEyICs0
MjcsMTIgQEAgcHVibGljOgogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgIH0KIAot
ICAgIHZvaWQgY29tcGFyZTMyKFJlZ2lzdGVySUQgcmlnaHQsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgQ29uZGl0aW9uIGNvbmQpCisgICAgdm9pZCBjb21wYXJlMzIoUmVnaXN0ZXJJRCBy
aWdodCwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQpCiAgICAgewogICAgICAgICBpZiAoIW9mZnNldCkgewogICAgICAgICAgICAgUmVnaXN0ZXJJ
RCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1S
ZWcoYmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcocmlnaHQs
IHNjciwgY29uZCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHJpZ2h0LCBz
Y3IsIFNINENvbmRpdGlvbihjb25kKSk7CiAgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3Ip
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MzYsMjUgKzQ0MiwyNSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQob2Zmc2V0LCBzY3Ip
OwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhiYXNlLCBzY3IpOwogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsUmVnUmVnKHJpZ2h0LCBzY3IsIGNvbmQpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21wbFJlZ1JlZyhyaWdodCwgc2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwogICAgICAg
ICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmxNZW1SZWcob2Zmc2V0ID4+IDIsIGJhc2UsIHNjcik7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmNtcGxSZWdSZWcocmlnaHQsIHNjciwgY29uZCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmNtcGxSZWdSZWcocmlnaHQsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKICAgICAgICAg
cmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBhcmUzMihpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIENvbmRpdGlvbiBjb25kKQorICAgIHZvaWQg
Y29tcGFyZTMyKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQogICAgIHsKICAgICAgICAgaWYgKCFvZmZzZXQpIHsKICAgICAgICAg
ICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgICAgICBSZWdpc3Rl
cklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxN
ZW1SZWcoYmFzZSwgc2NyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChp
bW0sIHNjcjEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IxLCBzY3Is
IGNvbmQpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IxLCBzY3IsIFNI
NENvbmRpdGlvbihjb25kKSk7CiAgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKICAg
ICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00
NjcsNyArNDczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1Jl
ZyhiYXNlLCBzY3IpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNj
cik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoaW1tLCBzY3IxKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyMSwgc2NyLCBjb25kKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyMSwgc2NyLCBTSDRDb25kaXRpb24oY29u
ZCkpOwogICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMSk7CiAgICAgICAgICAgICByZWxl
YXNlU2NyYXRjaChzY3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDc3LDcgKzQ4Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcob2Zmc2V0ID4+IDIsIGJhc2UsIHNjcik7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0sIHNjcjEpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgY29uZCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNt
cGxSZWdSZWcoc2NyMSwgc2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwogICAgICAgICByZWxlYXNl
U2NyYXRjaChzY3IxKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICB9CkBAIC04
NjYsNyArODcyLDcgQEAgcHVibGljOgogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKICAg
ICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBSZWdpc3RlcklE
IHNjciA9IHNjcmF0Y2hSZWczOwogICAgICAgICBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KGxlZnQsIHNjcik7CkBAIC04OTQsNyArOTAwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoRG91YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAg
fQogCi0gICAgSnVtcCBicmFuY2hEb3VibGUoQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBs
ZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2hEb3VibGUoRG91YmxlQ29u
ZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQpCiAgICAg
ewogICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVFcXVhbCkgewogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZGNtcHBlcShyaWdodCwgbGVmdCk7CkBAIC05MDYsMTIgKzkxMiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmJmZmZmZiwgc2NyYXRj
aFJlZzMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKHJpZ2h0KTsKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3Ry
dWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsKICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJyYW5jaChCVF9PUENPREUsIDgpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRz
KGxlZnQpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhzY3IpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBFcXVhbCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3IsIFNINENv
bmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhbmNoKEJUX09QQ09E
RSwgNCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKHJpZ2h0LCBsZWZ0KTsKICAg
ICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC05NDMsMTIgKzk0OSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmJmZmZmZiwgc2Ny
YXRjaFJlZzMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKHJpZ2h0KTsKICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRDb25kaXRpb24oRXF1YWwp
KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heElu
c3RydWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDUpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNu
dmRzKGxlZnQpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhzY3IpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBFcXVhbCk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3IsIFNI
NENvbmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhbmNoKEJUX09Q
Q09ERSwgMSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC05NjAsMTIgKzk2NiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmJmZmZmZiwg
c2NyYXRjaFJlZzMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKHJpZ2h0KTsKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoc2NyKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRDb25kaXRpb24oRXF1
YWwpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1h
eEluc3RydWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDUpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
ZGNudmRzKGxlZnQpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhzY3IpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBFcXVh
bCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3Is
IFNINENvbmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhbmNoKEJU
X09QQ09ERSwgMSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGd0KHJpZ2h0LCBsZWZ0
KTsKICAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC05NzcsMTIgKzk4MywxMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmJmZmZm
Ziwgc2NyYXRjaFJlZzMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKHJpZ2h0KTsK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoc2NyKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRDb25kaXRpb24o
RXF1YWwpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVy
Lm1heEluc3RydWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDUpOwogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuZGNudmRzKGxlZnQpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhzY3Ip
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBF
cXVhbCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBz
Y3IsIFNINENvbmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhbmNo
KEJUX09QQ09ERSwgMSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGd0KGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC05OTQsMTIgKzEwMDAs
MTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KDB4N2Zi
ZmZmZmYsIHNjcmF0Y2hSZWczKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmRjbnZkcyhyaWdo
dCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHNmcHVsUmVnKHNjcik7Ci0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3IsIEVxdWFsKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgU0g0Q29uZGl0
aW9uKEVxdWFsKSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShtX2Fzc2Vt
Ymxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAyMiwgc2l6ZW9mKHVpbnQzMl90KSk7CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCA1KTsKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmRjbnZkcyhsZWZ0KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWco
c2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNj
ciwgRXF1YWwpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVn
Mywgc2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJy
YW5jaChCVF9PUENPREUsIDEpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNtcHBndChsZWZ0
LCByaWdodCk7CiAgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwpAQCAtMTAxMSwxMiAr
MTAxNywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQo
MHg3ZmJmZmZmZiwgc2NyYXRjaFJlZzMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRz
KHJpZ2h0KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoc2NyKTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRD
b25kaXRpb24oRXF1YWwpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1f
YXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDUpOwogICAgICAgICAgICAg
bV9hc3NlbWJsZXIuZGNudmRzKGxlZnQpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1
bFJlZyhzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVn
Mywgc2NyLCBFcXVhbCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0
Y2hSZWczLCBzY3IsIFNINENvbmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhbmNoKEJUX09QQ09ERSwgMSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGd0
KHJpZ2h0LCBsZWZ0KTsKICAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC0xMDI4
LDEyICsxMDM0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50
KDB4N2ZiZmZmZmYsIHNjcmF0Y2hSZWczKTsKICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKHJp
Z2h0KTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhzY3IpOwotICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3IsIEVxdWFsKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgc2NyLCBTSDRDb25kaXRpb24oRXF1YWwp
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1
Y3Rpb25TaXplICsgMjIsIHNpemVvZih1aW50MzJfdCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5i
cmFuY2goQlRfT1BDT0RFLCA1KTsKICAgICAgICAgbV9hc3NlbWJsZXIuZGNudmRzKGxlZnQpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHNmcHVsUmVnKHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIHNjciwgRXF1YWwpOworICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBzY3IsIFNINENvbmRpdGlvbihFcXVhbCkpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCAxKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuZGNtcHBlcShyaWdodCwgbGVmdCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBA
IC0xMDYwLDI2ICsxMDY2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9qdW1wOwogICAg
IH0KIAotICAgIHZvaWQgc2V0OENvbXBhcmUzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBz
ZXQzMkNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXQ4Q29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKGxlZnQgIT0g
ZGVzdCkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0Lm1fdmFs
dWUsIGRlc3QpOwotICAgICAgICAgICAgc2V0MzJDb21wYXJlMzIoY29uZCwgbGVmdCwgZGVzdCwg
ZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWdpc3Rl
cklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3Rh
bnQocmlnaHQubV92YWx1ZSwgc2NyKTsKLSAgICAgICAgc2V0MzJDb21wYXJlMzIoY29uZCwgbGVm
dCwgc2NyLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAg
ICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBC
YXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgUmVnaXN0
ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbW92ZShsZWZ0LmluZGV4LCBzY3Ip
OwpAQCAtMTEwMSw3ICsxMDg4LDcgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5kc3Fy
dChkZXN0KTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFRlc3Q4KENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3Ms
IFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIFJl
Z2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwogICAgICAgICBs
b2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTExMTYsNyArMTEwMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICB9CiAKLSAgICBKdW1w
IGJyYW5jaDgoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
KQorICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNz
VGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIGxvYWQ4KGxlZnQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOwpAQCAtMTEzMCwxMSArMTExNywxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmZ0cmNkcm1mcHVsKHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0c2Zw
dWxSZWcoZGVzdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudCgweDdmZmZmZmZm
LCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgc2Ny
YXRjaFJlZzMsIEVxdWFsKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBz
Y3JhdGNoUmVnMywgU0g0Q29uZGl0aW9uKEVxdWFsKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmVu
c3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDE0LCBzaXplb2YodWlu
dDMyX3QpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYnJhbmNoKEJUX09QQ09ERSwgMik7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigxLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgc2NyYXRjaFJlZzMsIEVxdWFsKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBzY3JhdGNoUmVnMywgU0g0Q29uZGl0aW9uKEVxdWFs
KSk7CiAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCkBAIC0xMjA4LDkgKzEx
OTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmV4dHV3KHNyYywgZHN0KTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldDMyQ29tcGFyZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBh
cmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJ
RCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21w
bFJlZ1JlZyhyaWdodCwgbGVmdCwgY29uZCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcocmlnaHQsIGxlZnQsIFNINENvbmRpdGlvbihjb25kKSk7CiAgICAgICAgIGlmIChjb25kICE9
IE5vdEVxdWFsKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z0KGRlc3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTIyMiwyNyArMTIwOSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdkltbTgoMSwgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXQzMkNvbXBh
cmUzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBpZiAobGVmdCAhPSBkZXN0KSB7CiAgICAgICAgICAgICBtb3Zl
KHJpZ2h0LCBkZXN0KTsKLSAgICAgICAgICAgIHNldDMyQ29tcGFyZTMyKGNvbmQsIGxlZnQsIGRl
c3QsIGRlc3QpOworICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIGRlc3QsIGRlc3Qp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbW92ZShyaWdodCwgc2NyKTsKLSAgICAgICAg
c2V0MzJDb21wYXJlMzIoY29uZCwgbGVmdCwgc2NyLCBkZXN0KTsKKyAgICAgICAgY29tcGFyZTMy
KGNvbmQsIGxlZnQsIHNjciwgZGVzdCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXQzMlRlc3Q4KENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCB0ZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKIAogICAgICAgICBsb2FkOChhZGRyZXNzLCBkZXN0KTsKICAg
ICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIGNvbXBhcmUzMigwLCBk
ZXN0LCBjb25kKTsKKyAgICAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxS
ZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRl
c3RsSW1tKG1hc2subV92YWx1ZSwgZGVzdCk7CiAgICAgICAgIGlmIChjb25kICE9IE5vblplcm8p
IHsKQEAgLTEyNjQsOSArMTI1MSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcocmlnaHQsIGxlZnQsIGNvbmQpOworICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHJpZ2h0LCBsZWZ0LCBTSDRDb25kaXRpb24oY29u
ZCkpOwogICAgICAgICAvKiBCVCBsYWJlbCA9PiBCRiBvZmYKICAgICAgICAgICAgbm9wICAgICAg
ICAgTERSIHJlZwogICAgICAgICAgICBub3AgICAgICAgICBicmFmIEByZWcKQEAgLTEyNzcsNyAr
MTI2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBp
ZiAoKChjb25kID09IEVxdWFsKSB8fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFyaWdodC5tX3Zh
bHVlKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxSZWdSZWcobGVmdCwgbGVmdCk7CkBA
IC0xMjg5LDcgKzEyNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7
CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBj
b21wYXJlMzIocmlnaHQub2Zmc2V0LCByaWdodC5iYXNlLCBsZWZ0LCBjb25kKTsKICAgICAgICAg
aWYgKGNvbmQgPT0gTm90RXF1YWwpCkBAIC0xMjk3LDcgKzEyODQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIEp1bXAgYnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQpCiAgICAgewogICAgICAgICBjb21wYXJlMzIocmlnaHQsIGxlZnQub2Zmc2V0LCBsZWZ0
LmJhc2UsIGNvbmQpOwogICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkKQEAgLTEzMDUsNyAr
MTI5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBjb21wYXJl
MzIocmlnaHQubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSwgY29uZCk7CiAgICAgICAg
IGlmIChjb25kID09IE5vdEVxdWFsKQpAQCAtMTMxMywxMiArMTMwMCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2gzMihD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisg
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVz
cyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3Ig
PSBjbGFpbVNjcmF0Y2goKTsKIAogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihsZWZ0Lm1fcHRyKSksIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmNtcGxSZWdSZWcocmlnaHQsIHNjciwgY29uZCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxS
ZWdSZWcocmlnaHQsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKICAgICAgICAgcmVsZWFzZVNj
cmF0Y2goc2NyKTsKIAogICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkKQEAgLTEzMjYsNyAr
MTMxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQorICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7
CiAKQEAgLTEzNDAsNyArMTMyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRy
dWUoKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaDE2KENvbmRpdGlvbiBjb25kLCAgQmFzZUlu
ZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgSnVtcCBicmFuY2gxNihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsICBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7
CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAKQEAgLTEzNTcsNyAr
MTM0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIHNjciwgcmln
aHQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoMTYoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRl
eCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgSnVtcCBicmFuY2gxNihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAg
ewogICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwogCkBAIC0xMzc3LDcg
KzEzNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBzY3IsIHNj
cjEpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQorICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKIApA
QCAtMTM4OCw3ICsxMzc1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgp
OwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAg
YnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgQVNTRVJUKChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKIApAQCAtMTQwMiwxMiArMTM4OSwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAg
SnVtcCBicmFuY2hUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8
fCAoY29uZCA9PSBOb25aZXJvKSk7CiAKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
LSAgICAgICAgICAgIGNvbXBhcmUzMigwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBj
b25kKTsKKyAgICAgICAgICAgIGNvbXBhcmUzMigwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHRlc3RJbW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKIApAQCAtMTQxNiw3ICsxNDAzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVGVzdDMyKENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNl
SW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAg
IHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKIApAQCAtMTQ2Niw3
ICsxNDUzLDcgQEAgcHVibGljOgogCiAgICAgLy8gQXJpdGhtZXRpYyBjb250cm9sIGZsb3cgb3Bl
cmF0aW9ucwogCi0gICAgSnVtcCBicmFuY2hBZGQzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25k
ID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKIApAQCAtMTQ5MCw3ICsxNDc3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAotICAgIEp1bXAg
YnJhbmNoQWRkMzIoQ29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOwogCkBAIC0xNDk4LDcgKzE0ODUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzY3JhdGNoUmVnMywgZGVzdCk7CiAgICAgfQogCi0g
ICAgSnVtcCBicmFuY2hNdWwzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKIApAQCAtMTUxMSw3ICsxNDk4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ1JlZyhkZXN0LCBzY3IxKTsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnNoYVJlZ1JlZyhzY3IxLCBzY3IpOwogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RzbWFjaChzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3Is
IHNjcjEsIFplcm8pOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IsIHNj
cjEsIFNINENvbmRpdGlvbihFcXVhbCkpOwogICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Ny
MSk7CiAgICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEZhbHNlKCk7CkBAIC0xNTI1LDE0ICsxNTEyLDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGFyZTMy
KDAsIGRlc3QsIGNvbmQpOworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8
UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOwogCiAgICAgICAgIGlmIChjb25kID09IE5vdEVx
dWFsKQogICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7CiAgICAgICAgIHJldHVybiBi
cmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hNdWwzMihDb25kaXRpb24gY29u
ZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKIApAQCAtMTU0Myw3ICsxNTMwLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3QpOwogICAg
IH0KIAotICAgIEp1bXAgYnJhbmNoU3ViMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAKQEAgLTE1NjAsMTQgKzE1NDcsMTQgQEAgcHVi
bGljOgogICAgICAgICB9CiAKICAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgY29t
cGFyZTMyKDAsIGRlc3QsIGNvbmQpOworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGlj
X2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOwogCiAgICAgICAgIGlmIChjb25kID09
IE5vdEVxdWFsKQogICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7CiAgICAgICAgIHJl
dHVybiBicmFuY2hUcnVlKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hTdWIzMihDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJh
bmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNv
bmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAK
QEAgLTE1NzUsMTggKzE1NjIsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoU3Vi
MzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3QpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoT3Iz
MihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBK
dW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAKICAgICAgICAgaWYgKGNvbmQg
PT0gU2lnbmVkKSB7CiAgICAgICAgICAgICBvcjMyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICBj
b21wYXJlMzIoMCwgZGVzdCwgTGVzc1RoYW4pOworICAgICAgICAgICAgY29tcGFyZTMyKDAsIGRl
c3QsIHN0YXRpY19jYXN0PFJlbGF0aW9uYWxDb25kaXRpb24+KExlc3NUaGFuKSk7CiAgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgb3IzMihzcmMs
IGRlc3QpOwotICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgY29uZCk7CisgICAgICAgIGNvbXBh
cmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kKSk7CiAK
ICAgICAgICAgaWYgKGNvbmQgPT0gTm90RXF1YWwpCiAgICAgICAgICAgICByZXR1cm4gYnJhbmNo
RmFsc2UoKTsKQEAgLTE2MDEsMTAgKzE1ODgsMTAgQEAgcHVibGljOgogICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBmc2Ny
YXRjaCwgc3JjKSk7CiAKICAgICAgICAgaWYgKGRlc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMCwgZGVzdCwgRXF1YWwpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wRXFJbW1SMCgwLCBkZXN0KTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJbW04KDAsIHNjcmF0Y2hSZWczKTsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIGRlc3QsIEVxdWFsKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyYXRjaFJlZzMsIGRlc3QsIFNINENv
bmRpdGlvbihFcXVhbCkpOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
YnJhbmNoVHJ1ZSgpKTsKICAgICB9CkBAIC0xNjY1LDEyICsxNjUyLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHJXaXRo
UGF0Y2goQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRh
TGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDAp
KQorICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBSZWdp
c3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKIAogICAgICAgICBkYXRh
TGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkYXRhVGVtcFJlZ2lzdGVyLCBsZWZ0
LCBjb25kKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkYXRhVGVtcFJlZ2lzdGVy
LCBsZWZ0LCBTSDRDb25kaXRpb24oY29uZCkpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChkYXRh
VGVtcFJlZ2lzdGVyKTsKIAogICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkKQEAgLTE2Nzgs
NyArMTY2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICB9
CiAKLSAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChDb25kaXRpb24gY29uZCwgQWRkcmVzcyBs
ZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRW
YWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCisgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxh
YmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkK
ICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAKQEAgLTE2
ODcsNyArMTY3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhz
Y3IsIHNjcik7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwogICAg
ICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3IxKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IxLCBzY3IsIGNvbmQpOworICAgICAg
ICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsK
ICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Ny
MSk7CiAKQEAgLTE3MzQsNyArMTcyMSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG9sZEp1bXAubGlu
ayh0aGlzKTsKICAgICAgICAgcmV0dXJuIHRhaWxSZWN1cnNpdmVDYWxsKCk7CiAgICAgfQorcHJv
dGVjdGVkOgorICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENvbmRpdGlvbihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U0g0
QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOworICAgIH0KIAorICAgIFNINEFzc2VtYmxlcjo6
Q29uZGl0aW9uIFNINENvbmRpdGlvbihSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTSDRBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7Cisg
ICAgfQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQg
Y2xhc3MgUmVwYXRjaEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1NINEFzc2VtYmxlci5oCmluZGV4IDMwZGIwZjUuLmRiYWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaApAQCAtNzAzLDcgKzcwMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgb25lU2hvcnRPcChvcGMpOwogICAgIH0KIAotICAgIHZvaWQgY21w
RXFJbW1SMChpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCwgQ29uZGl0aW9uIGNvbmQpCisgICAgdm9p
ZCBjbXBFcUltbVIwKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgdWlu
dDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA1KENNUEVRSU1NX09QQ09ERSwgaW1tKTsKICAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwotLSAKMS43LjIuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>