<?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>33589</bug_id>
          
          <creation_ts>2010-01-13 04:33:42 -0800</creation_ts>
          <short_desc>[Android] Bridge interfaces Field, Class, Instance and Array use JSC-specific types</short_desc>
          <delta_ts>2010-01-21 03:54:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>33801</dependson>
          <blocked>32154</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>gustavo</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180153</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-13 04:33:42 -0800</bug_when>
    <thetext>WebCore/bridge/runtime.h defines a number of interfaces. Of these, Field, Class, Instance and Array use JSC-specific types. This causes problems on Android, where we can build with JSC or V8.

These JSC-specific interfaces should be moved out of runtime.h to allow the file to be used with both JSC and V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180194</commentid>
    <comment_count>1</comment_count>
      <attachid>46455</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-13 06:54:27 -0800</bug_when>
    <thetext>Created attachment 46455
Patch 1 for Bug 33589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180196</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 07:00:27 -0800</bug_when>
    <thetext>Attachment 46455 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/185336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180197</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 07:07:37 -0800</bug_when>
    <thetext>Attachment 46455 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/185344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180276</commentid>
    <comment_count>4</comment_count>
      <attachid>46472</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-13 10:15:54 -0800</bug_when>
    <thetext>Created attachment 46472
Patch 2 for Bug 33589

Fixes qt and gtk builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180285</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 10:32:48 -0800</bug_when>
    <thetext>Attachment 46472 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/184509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180693</commentid>
    <comment_count>6</comment_count>
      <attachid>46561</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-14 05:55:27 -0800</bug_when>
    <thetext>Created attachment 46561
Patch 3 for Bug 33589

Second attempt to fix qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181879</commentid>
    <comment_count>7</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 07:50:39 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=46561) [details]
&gt; Patch 3 for Bug 33589
&gt; 
&gt; Second attempt to fix qt build.

The fix for this bug will involve splitting runtime.[cpp|h] into generic and JSC-specific parts. It&apos;s probably best to fix the naming of runtime.[cpp|h] first, so I&apos;ve opened Bug 33801 as part of Bug 33712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182781</commentid>
    <comment_count>8</comment_count>
      <attachid>47023</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-20 07:08:13 -0800</bug_when>
    <thetext>Created attachment 47023
Patch 4 for Bug 33589

Updated patch now that runtime.[cpp|h] has been renamed to Bridge.[cpp|h]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183081</commentid>
    <comment_count>9</comment_count>
      <attachid>47023</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-20 22:49:47 -0800</bug_when>
    <thetext>Comment on attachment 47023
Patch 4 for Bug 33589

&gt; Index: WebCore/bridge/Bridge.h
&gt; - * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2003, 2008, 2009, 2010 Apple Inc. All rights reserved.

It seems odd to add 2010 to the Apple copyright. I think you should add your own.

&gt; +#if USE(JSC)
&gt; +#include &quot;BridgeJSC.h&quot;
&gt; +#endif

It seems that the preferred pattern is to put the if in the header itself and just include it unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183155</commentid>
    <comment_count>10</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-21 03:54:08 -0800</bug_when>
    <thetext>Addressed all comments

Landed manually as http://trac.webkit.org/changeset/53620

Closing bug as resolved</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46455</attachid>
            <date>2010-01-13 06:54:27 -0800</date>
            <delta_ts>2010-01-13 10:15:54 -0800</delta_ts>
            <desc>Patch 1 for Bug 33589</desc>
            <filename>runtime.txt</filename>
            <type>text/plain</type>
            <size>34417</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTAtMDEtMTMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgYnJpZGdlIGludGVyZmFjZXMgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkg
ZnJvbSBydW50aW1lLmggdG8gcnVudGltZV9qc2MuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1ODkKKworICAgICAgICBUaGVzZSBpbnRlcmZhY2Vz
IHVzZSBKU0Mtc3BlY2lmaWMgdHlwZXMsIHNvIGFyZSBtb3ZlZCBvdXQgb2YgcnVudGltZS5oIHRv
IGFsbG93IHRoZSBmaWxlIHRvCisgICAgICAgIGJlIHVzZWQgd2l0aCBib3RoIEpTQyBhbmQgVjgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICog
QW5kcm9pZC5qc2NiaW5kaW5ncy5tazogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5k
IGFkZGVkIHJ1bnRpbWVfanNjLmNwcAorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5kIGFkZGVkIHJ1bnRp
bWVfanNjLltjcHB8aF0KKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDogTW9kaWZp
ZWQuCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6IE1v
ZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1v
ZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KTogTW9kaWZp
ZWQuIFVwZGF0ZWQgdG8gdXNlIHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAg
ICAqIGJyaWRnZS9qbmkvam5pX3J1bnRpbWUuY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKEphdmFB
cnJheTo6SmF2YUFycmF5KTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8gdXNlIHJlbmFtZWQgQXJyYXk6
Om1fcm9vdE9iamVjdAorICAgICAgICAoSmF2YUFycmF5Ojpyb290T2JqZWN0KTogVXBkYXRlZCB0
byB1c2UgcmVuYW1lZCBBcnJheTo6bV9yb290T2JqZWN0bWVtYmVyCisgICAgICAgICogYnJpZGdl
L2pzYzogQWRkZWQuCisgICAgICAgICogYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHA6IEFkZGVk
LiBNb3ZlZCBmcm9tIHJ1bnRpbWUuY3BwIGFuZCBmaXhlZCBzdHlsZS4KKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OkFycmF5OjpBcnJheSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpBcnJheTo6
fkFycmF5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpJbnN0YW5jZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6fkluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U6OmVuZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRl
UnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6bmV3UnVu
dGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6d2lsbERlc3Ry
b3lSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp3aWxs
SW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFu
Y2U6OnJvb3RPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvcnVudGltZV9qc2MuaDogQWRk
ZWQuIE1vdmVkIEZpZWxkLCBDbGFzcywgSW5zdGFuY2UgYW5kIEFycmF5IGludGVyZmFjZXMgZnJv
bSBydW50aW1lLmgKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkZpZWxkOjp+RmllbGQpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OkNsYXNzOjp+Q2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5z
dGFuY2U6OnNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlOjpzdXBwb3J0c0NvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Okluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
Okluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZTo6cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp2
aXJ0dWFsQmVnaW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnZpcnR1YWxF
bmQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06IE1vZGlmaWVkLgor
ICAgICAgICAoT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QpOiBNb2RpZmllZC4gVXBkYXRlZCB0
byB1c2UgcmVuYW1lZCBJbnN0YW5jZTo6bV9yb290T2JqZWN0CisgICAgICAgIChKYXZhQXJyYXk6
OkphdmFBcnJheSk6IE1vZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEFycmF5OjptX3Jv
b3RPYmplY3QKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1v
ZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAg
ICAgICAgKE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKTogTW9kaWZpZWQu
IFVwZGF0ZWQgdG8gdXNlIHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbTogTW9kaWZpZWQuCisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpPYmpjQXJyYXk6OnZhbHVlQXQpOiBNb2RpZmllZC4gVXBkYXRlZCB0byB1c2UgcmVu
YW1lZCBBcnJheTo6bV9yb290T2JqZWN0CisgICAgICAgICogYnJpZGdlL3J1bnRpbWUuY3BwOiBS
ZW1vdmVkLiBNb3ZlZCB0byBydW50aW1lX2pzYy5jcHAKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZS5oOiBNb2RpZmllZC4gTW92ZWQgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkgaW50
ZXJmYWNlcyB0byBydW50aW1lX2pzYy5oCisKIDIwMTAtMDEtMTMgIEpvY2VseW4gVHVyY290dGUg
IDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsJKHJldmlzaW9uIDUzMTgyKQor
KysgV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBAIEJJTkRJTkdfQ19JTkNMVURFUyA6PSBcCiAJJChMT0NBTF9QQVRIKS9iaW5kaW5n
cy9qcyBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2UgXAogCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2Mg
XAorCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2pzYyBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2Uvam5p
IFwKIAkkKExPQ0FMX1BBVEgpL2JyaWRnZS9qbmkvanNjIFwKIAlcCkBAIC0xODgsOCArMTg5LDgg
QEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAlicmlkZ2Uvam5pL2puaV9ydW50aW1lLmNwcCBcCiAJ
YnJpZGdlL2puaS9qbmlfdXRpbGl0eS5jcHAgXAogCWJyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5
X3ByaXZhdGUuY3BwIFwKKwlicmlkZ2UvanNjL3J1bnRpbWVfanNjLmNwcCBcCiAJYnJpZGdlL25w
cnVudGltZS5jcHAgXAotCWJyaWRnZS9ydW50aW1lLmNwcCBcCiAJYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwIFwKIAlicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIFwKIAlicmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA1MzE4MikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDYgQEAKIAkJMUE1NjlEMTkw
RDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRUEwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNf
dXRpbGl0eS5oICovOyB9OwogCQkxQTU2OUQxQTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGls
aXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1
NjlDRUIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfdXRpbGl0eS5tbSAqLzsgfTsKIAkJMUE1NjlE
MUIwRDdFMkI4MjAwN0MzOTgzIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRUMwRDdFMkI4MjAwN0MzOTgzIC8q
IFdlYlNjcmlwdE9iamVjdC5oICovOyB9OwotCQkxQTU2OUQxQzBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTU2OUNFRDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZS5jcHAgKi87IH07CiAJCTFBNTY5
RDFEMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFRTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
NTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0VGMEQ3RTJCODIwMDdDMzk4
MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLzsgfTsKIAkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfYXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNTY5Q0YwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggKi87
IH07CkBAIC0xMTEzLDYgKzExMTIsOCBAQAogCQk1NEM1MEY3QjBFODAxREYzMDA5ODMyQTAgLyog
WE1MVG9rZW5pemVyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NEM1MEY3QTBFODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUw
QTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTk3MERCMjQxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NzBEQjIyMTBG
REY4MjkwMEQ0RTJEMyAvKiBydW50aW1lX2pzYy5jcHAgKi87IH07CisJCTU5NzBEQjI1MTBGREY4
MjkwMEQ0RTJEMyAvKiBydW50aW1lX2pzYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTk3MERCMjMxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk5
RDFFMzIxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RDFFMzAxMEM5N0Q2RTAw
RTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovOyB9OwogCQk1OTlEMUUzMzEwQzk3
RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RDFFMzExMEM5N0Q2RTAwRTBFRjEyIC8qIGpu
aV91dGlsaXR5X3ByaXZhdGUuaCAqLzsgfTsKIAkJNTlDNzdGMkExMDU0NUIzQjAwNTA2MTA0IC8q
IEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9u
U2VydmljZU1vY2suY3BwICovOyB9OwpAQCAtNTU3MCw3ICs1NTcxLDYgQEAKIAkJMUE1NjlDRUEw
RDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfdXRpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBvYmpjX3V0aWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE1NjlDRUIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfdXRpbGl0eS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG9iamNfdXRpbGl0eS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRUMwRDdFMkI4MjAwN0MzOTgzIC8qIFdlYlNjcmlwdE9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE1NjlDRUQwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcnVu
dGltZS5jcHA7IHBhdGggPSBicmlkZ2UvcnVudGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBNTY5Q0VFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ1bnRpbWUuaDsgcGF0aCA9IGJyaWRnZS9ydW50aW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0VGMEQ3RTJCODIwMDdDMzk4
MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IHJ1bnRpbWVfYXJyYXkuY3BwOyBwYXRoID0gYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTU2OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9hcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1l
X2FycmF5Lmg7IHBhdGggPSBicmlkZ2UvcnVudGltZV9hcnJheS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjQ1Niw2ICs2NDU2LDggQEAKIAkJNTRDNTBGN0EwRTgwMURGMzAwOTgz
MkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWE1MVG9rZW5pemVyTGlieG1sMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1
YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJNTk3MERCMjIxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHJ1bnRpbWVfanNjLmNw
cDsgcGF0aCA9IGJyaWRnZS9qc2MvcnVudGltZV9qc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1OTcwREIyMzEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9qc2MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9qc2MuaDsgcGF0aCA9IGJyaWRn
ZS9qc2MvcnVudGltZV9qc2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk5RDFF
MzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHBhdGgg
PSBqc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuaDsgcGF0
aCA9IGpzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjgwLDYgKzEwMjgyLDcgQEAKIAkJMUE1NjlDQzQw
RDdFMkI2MDAwN0MzOTgzIC8qIGJyaWRnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNTk3MERCMjExMEZERjgwQjAwRDRFMkQzIC8qIGpzYyAqLywKIAkJ
CQkxQTU2OUNDNTBEN0UyQjgyMDA3QzM5ODMgLyogYyAqLywKIAkJCQkxQTU2OUNDRTBEN0UyQjgy
MDA3QzM5ODMgLyogam5pICovLAogCQkJCTFBNTY5Q0UyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
ICovLApAQCAtMTAyOTMsNyArMTAyOTYsNiBAQAogCQkJCTFBNTY5Q0RGMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfaW1wbC5oICovLAogCQkJCTFBNTY5Q0UwMEQ3RTJCODIwMDdDMzk4MyAv
KiBucHJ1bnRpbWVfaW50ZXJuYWwuaCAqLywKIAkJCQkxQTU2OUNFMTBEN0UyQjgyMDA3QzM5ODMg
LyogbnBydW50aW1lX3ByaXYuaCAqLywKLQkJCQkxQTU2OUNFRDBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZS5jcHAgKi8sCiAJCQkJMUE1NjlDRUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWUu
aCAqLywKIAkJCQkxQTU2OUNFRjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAg
Ki8sCiAJCQkJMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywK
QEAgLTExMDM1LDYgKzExMDM3LDE1IEBACiAJCQlwYXRoID0gd2Vic29ja2V0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTU5NzBEQjIxMTBGREY4MEIwMEQ0RTJEMyAvKiBq
c2MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTU5NzBE
QjIyMTBGREY4MjkwMEQ0RTJEMyAvKiBydW50aW1lX2pzYy5jcHAgKi8sCisJCQkJNTk3MERCMjMx
MEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGpz
YzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTU5OUQxRTJGMTBDOTdENEMw
MEUwRUYxMiAvKiBqc2MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTgzMjUsNiArMTgzMzYsNyBAQAogCQkJCTBGNUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAv
KiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0QzAwRTYxMEY2
RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU5NzBEQjI1MTBGREY4MjkwMEQ0RTJEMyAvKiBydW50aW1lX2pzYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yMDAwNiw3ICsyMDAxOCw2IEBACiAJCQkJQThDRkY1RTcwQTE1NUEw
NTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEx
QzgwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQzYzQTI0OTBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE1NjlEMUMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1
bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjAwRDdFMkI4MjAwN0Mz
OTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDIyMEQ3
RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIw
NDg1LDYgKzIwNDk2LDcgQEAKIAkJCQk1MTEyMjQ3ODEwQ0ZCOEY0MDA4MDk5RDcgLyogV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QjdB
NTQxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5NzBEQjI0MTBGREY4MjkwMEQ0RTJEMyAvKiBydW50
aW1lX2pzYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3BwCShyZXZpc2lvbiA1
MzE4MikKKysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgInJ1bnRpbWUuaCIKLQotI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCi0jaW5j
bHVkZSAicnVudGltZV9yb290LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLQotI2lm
IFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgInF0X2luc3RhbmNlLmgiCi0jZW5kaWYKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7Ci0KLUFycmF5OjpBcnJheShQYXNzUmVmUHRy
PFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCi0gICAgOiBfcm9vdE9iamVjdChyb290T2JqZWN0KQot
ewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci19Ci0KLUFycmF5Ojp+QXJyYXkoKQotewotfQot
Ci1JbnN0YW5jZTo6SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQot
ICAgIDogX3Jvb3RPYmplY3Qocm9vdE9iamVjdCkKLSAgICAsIG1fcnVudGltZU9iamVjdCgwKQot
ewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci19Ci0KLUluc3RhbmNlOjp+SW5zdGFuY2UoKQot
ewotICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0KTsKLX0KLQotc3RhdGljIEtKU0RpZEV4ZWN1
dGVGdW5jdGlvblB0ciBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKLQotdm9pZCBJbnN0YW5jZTo6c2V0
RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKQotewotICAg
IHNfZGlkRXhlY3V0ZUZ1bmN0aW9uID0gZnVuYzsKLX0KLQotS0pTRGlkRXhlY3V0ZUZ1bmN0aW9u
UHRyIEluc3RhbmNlOjpkaWRFeGVjdXRlRnVuY3Rpb24oKQotewotICAgIHJldHVybiBzX2RpZEV4
ZWN1dGVGdW5jdGlvbjsKLX0KLQotdm9pZCBJbnN0YW5jZTo6YmVnaW4oKQotewotICAgIHZpcnR1
YWxCZWdpbigpOwotfQotCi12b2lkIEluc3RhbmNlOjplbmQoKQotewotICAgIHZpcnR1YWxFbmQo
KTsKLX0KLQotUnVudGltZU9iamVjdEltcCogSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3Qo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci0gICAgQVNTRVJU
KF9yb290T2JqZWN0LT5pc1ZhbGlkKCkpOwotICAgIGlmIChtX3J1bnRpbWVPYmplY3QpCi0gICAg
ICAgIHJldHVybiBtX3J1bnRpbWVPYmplY3Q7Ci0gICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKLSAgICBtX3J1bnRpbWVPYmplY3QgPSBuZXdSdW50aW1lT2JqZWN0KGV4ZWMp
OwotICAgIF9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KG1fcnVudGltZU9iamVjdCk7Ci0g
ICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsKLX0KLQotUnVudGltZU9iamVjdEltcCogSW5zdGFu
Y2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9i
amVjdEltcChleGVjLCB0aGlzKTsKLX0KLQotdm9pZCBJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50
aW1lT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQoX3Jvb3RPYmplY3QpOwotICAgIEFTU0VSVChfcm9v
dE9iamVjdC0+aXNWYWxpZCgpKTsKLSAgICBBU1NFUlQobV9ydW50aW1lT2JqZWN0KTsKLSAgICBf
cm9vdE9iamVjdC0+cmVtb3ZlUnVudGltZU9iamVjdChtX3J1bnRpbWVPYmplY3QpOwotICAgIG1f
cnVudGltZU9iamVjdCA9IDA7Ci19Ci0KLXZvaWQgSW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVu
dGltZU9iamVjdCgpCi17Ci0gICAgQVNTRVJUKG1fcnVudGltZU9iamVjdCk7Ci0gICAgbV9ydW50
aW1lT2JqZWN0ID0gMDsKLX0KLQotUm9vdE9iamVjdCogSW5zdGFuY2U6OnJvb3RPYmplY3QoKSBj
b25zdCAKLXsgCi0gICAgcmV0dXJuIF9yb290T2JqZWN0ICYmIF9yb290T2JqZWN0LT5pc1ZhbGlk
KCkgPyBfcm9vdE9iamVjdC5nZXQoKSA6IDA7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
aW5kaW5ncwpJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWUuaAkocmV2aXNpb24gNTMxODIpCisrKyBXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1
ICsyNiwxNCBAQAogI2lmbmRlZiBKQVZBU0NSSVBUQ09SRV9CSU5ESU5HU19SVU5USU1FX0gKICNk
ZWZpbmUgSkFWQVNDUklQVENPUkVfQklORElOR1NfUlVOVElNRV9ICiAKLSNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpZiBVU0UoSlNDKQorI2lu
Y2x1ZGUgInJ1bnRpbWVfanNjLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyAgewogCi1jbGFz
cyBBcmdMaXN0OwotY2xhc3MgSWRlbnRpZmllcjsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xh
c3MgUHJvcGVydHlOYW1lQXJyYXk7Ci1jbGFzcyBSdW50aW1lT2JqZWN0SW1wOwotCiBuYW1lc3Bh
Y2UgQmluZGluZ3MgewogCi1jbGFzcyBJbnN0YW5jZTsKLWNsYXNzIE1ldGhvZDsKLWNsYXNzIFJv
b3RPYmplY3Q7Ci0KLXR5cGVkZWYgVmVjdG9yPE1ldGhvZCo+IE1ldGhvZExpc3Q7Ci0KLWNsYXNz
IEZpZWxkIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUp
IGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgfkZpZWxkKCkgeyB9Ci19OwotCiBjbGFzcyBNZXRo
b2QgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHZpcnR1YWwgaW50IG51bVBh
cmFtZXRlcnMoKSBjb25zdCA9IDA7CkBAIC02Miw5MCArNDEsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TWV0aG9kKCkgeyB9CiB9OwogCi1jbGFzcyBDbGFzcyA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJ
ZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGaWVsZCogZmll
bGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3Qg
SWRlbnRpZmllciYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KLQotICAgIHZpcnR1YWwgfkNs
YXNzKCkgeyB9Ci19OwotCi10eXBlZGVmIHZvaWQgKCpLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIp
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiByb290T2JqZWN0KTsKLQotY2xhc3MgSW5zdGFuY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbnN0YW5jZT4gewotcHVibGljOgotICAgIEluc3RhbmNlKFBhc3NS
ZWZQdHI8Um9vdE9iamVjdD4pOwotCi0gICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0
aW9uKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKLSAgICBzdGF0aWMgS0pTRGlkRXhl
Y3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbigpOwotCi0gICAgLy8gVGhlc2UgZnVu
Y3Rpb25zIGFyZSBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFpbiBlbnRyeSBwb2ludHMg
aW50bwotICAgIC8vIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25zLiAgVGhleSBjYW4gYmUgdXNl
ZCB0byBlc3RhYmxpc2ggYW5kIGNsZWFudXAKLSAgICAvLyBhbnkgbmVlZGVkIHN0YXRlLgotICAg
IHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGVuZCgpOwotICAgIAotICAgIHZpcnR1YWwgQ2xhc3Mq
IGdldENsYXNzKCkgY29uc3QgPSAwOwotICAgIFJ1bnRpbWVPYmplY3RJbXAqIGNyZWF0ZVJ1bnRp
bWVPYmplY3QoRXhlY1N0YXRlKik7Ci0gICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmpl
Y3QoKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95UnVudGltZU9iamVjdCgpOwotICAgIAotICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KLSAg
ICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBK
U1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBjb25zdCBNZXRob2RMaXN0JiwgY29uc3Qg
QXJnTGlzdCYgYXJncykgPSAwOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVm
YXVsdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVl
IGludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJ1
Y3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VD
b25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJuIEpTVmFsdWUoKTsg
fQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JikgeyB9Ci0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0ID0gMDsKLSAgICAKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0ID0gMDsKLSAg
ICAKLSAgICBSb290T2JqZWN0KiByb290T2JqZWN0KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVh
bCB+SW5zdGFuY2UoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KSB7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEVuZCgpIHsgfQotICAgIHZpcnR1YWwgUnVudGltZU9i
amVjdEltcCogbmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKLQotICAgIFJlZlB0cjxSb290
T2JqZWN0PiBfcm9vdE9iamVjdDsKLQotcHJpdmF0ZToKLSAgICBSdW50aW1lT2JqZWN0SW1wKiBt
X3J1bnRpbWVPYmplY3Q7Ci19OwotCi1jbGFzcyBBcnJheSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
Ci1wdWJsaWM6Ci0gICAgQXJyYXkoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7Ci0gICAgdmlydHVh
bCB+QXJyYXkoKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChFeGVjU3RhdGUg
KiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTVmFs
dWUgdmFsdWVBdChFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgICBSZWZQdHI8Um9vdE9iamVjdD4gX3Jvb3RPYmplY3Q7Ci19OwotCi1jb25zdCBjaGFyICpz
aWduYXR1cmVGb3JQYXJhbWV0ZXJzKGNvbnN0IEFyZ0xpc3QmKTsKLQotdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKLXR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOyAKLXR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmllbGQqPiBGaWVsZE1hcDsgCi0g
ICAgCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gNTMxODIpCisrKyBXZWJDb3JlL2JyaWRn
ZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgSlNW
YWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdAogICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJmNBcmdzW2ld
KTsKIAotICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShl
eGVjLCAmcmVzdWx0VmFyaWFudCwgX3Jvb3RPYmplY3QuZ2V0KCkpOworICAgIEpTVmFsdWUgcmVz
dWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCAmcmVzdWx0VmFyaWFudCwg
bV9yb290T2JqZWN0LmdldCgpKTsKICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJnJlc3Vs
dFZhcmlhbnQpOwogICAgIHJldHVybiByZXN1bHRWYWx1ZTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBA
QCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFCiAgICAgZm9yIChpID0g
MDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0Fy
Z3NbaV0pOwogCi0gICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBfcm9vdE9iamVjdC5nZXQoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJp
YW50LCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgm
cmVzdWx0VmFyaWFudCk7CiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQpAQCAtMjEyLDcgKzIx
Miw3IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhlY1MKICAgICBmb3Ig
KGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVl
KCZjQXJnc1tpXSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFu
dFRvVmFsdWUoZXhlYywgJnJlc3VsdFZhcmlhbnQsIF9yb290T2JqZWN0LmdldCgpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywgJnJlc3Vs
dFZhcmlhbnQsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZh
bHVlKCZyZXN1bHRWYXJpYW50KTsKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7CiB9CkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAJKHJldmlzaW9uIDUzMTgyKQorKysgV2ViQ29yZS9i
cmlkZ2Uvam5pL2puaV9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDcgKzM3Nyw3
IEBAIEphdmFBcnJheTo6SmF2YUFycmF5KGpvYmplY3QgYXJyYXksIGNvbnMKICAgICBKTklFbnYg
KmVudiA9IGdldEpOSUVudigpOwogICAgIF9sZW5ndGggPSBlbnYtPkdldEFycmF5TGVuZ3RoKChq
YXJyYXkpX2FycmF5LT5faW5zdGFuY2UpOwogICAgIF90eXBlID0gc3RyZHVwKHR5cGUpOwotICAg
IF9yb290T2JqZWN0ID0gcm9vdE9iamVjdDsKKyAgICBtX3Jvb3RPYmplY3QgPSByb290T2JqZWN0
OwogfQogCiBKYXZhQXJyYXk6On5KYXZhQXJyYXkgKCkgCkBAIC0zODcsNyArMzg3LDcgQEAgSmF2
YUFycmF5Ojp+SmF2YUFycmF5ICgpIAogCiBSb290T2JqZWN0KiBKYXZhQXJyYXk6OnJvb3RPYmpl
Y3QoKSBjb25zdCAKIHsgCi0gICAgcmV0dXJuIF9yb290T2JqZWN0ICYmIF9yb290T2JqZWN0LT5p
c1ZhbGlkKCkgPyBfcm9vdE9iamVjdC5nZXQoKSA6IDA7CisgICAgcmV0dXJuIG1fcm9vdE9iamVj
dCAmJiBtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSA/IG1fcm9vdE9iamVjdC5nZXQoKSA6IDA7CiB9
CiAKIHZvaWQgSmF2YUFycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdApJbmRleDogV2ViQ29yZS9icmlkZ2UvanNjL3J1
bnRpbWVfanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qc2MvcnVudGltZV9q
c2MuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlkZ2UvanNjL3J1bnRpbWVfanNjLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJydW50aW1lX2pzYy5oIgorCisjaW5jbHVkZSAi
cnVudGltZV9vYmplY3QuaCIKKyNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0pTTG9jay5oPgorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAicXRfaW5zdGFu
Y2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEJpbmRpbmdzIHsKKwor
QXJyYXk6OkFycmF5KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKKyAgICA6IG1f
cm9vdE9iamVjdChyb290T2JqZWN0KQoreworICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOworfQor
CitBcnJheTo6fkFycmF5KCkKK3sKK30KKworSW5zdGFuY2U6Okluc3RhbmNlKFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKKyAgICA6IG1fcm9vdE9iamVjdChyb290T2JqZWN0KQor
ICAgICwgbV9ydW50aW1lT2JqZWN0KDApCit7CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdCk7Cit9
CisKK0luc3RhbmNlOjp+SW5zdGFuY2UoKQoreworICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0
KTsKK30KKworc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2RpZEV4ZWN1dGVGdW5j
dGlvbjsKKwordm9pZCBJbnN0YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1
dGVGdW5jdGlvblB0ciBmdW5jKQoreworICAgIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uID0gZnVuYzsK
K30KKworS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIEluc3RhbmNlOjpkaWRFeGVjdXRlRnVuY3Rp
b24oKQoreworICAgIHJldHVybiBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKK30KKwordm9pZCBJbnN0
YW5jZTo6YmVnaW4oKQoreworICAgIHZpcnR1YWxCZWdpbigpOworfQorCit2b2lkIEluc3RhbmNl
OjplbmQoKQoreworICAgIHZpcnR1YWxFbmQoKTsKK30KKworUnVudGltZU9iamVjdEltcCogSW5z
dGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFTU0VS
VChtX3Jvb3RPYmplY3QpOworICAgIEFTU0VSVChtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSk7Cisg
ICAgaWYgKG1fcnVudGltZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIG1fcnVudGltZU9i
amVjdCA9IG5ld1J1bnRpbWVPYmplY3QoZXhlYyk7CisgICAgbV9yb290T2JqZWN0LT5hZGRSdW50
aW1lT2JqZWN0KG1fcnVudGltZU9iamVjdCk7CisgICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsK
K30KKworUnVudGltZU9iamVjdEltcCogSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Cisg
ICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9iamVjdEltcChleGVjLCB0aGlzKTsKK30KKwor
dm9pZCBJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KCkKK3sKKyAgICBBU1NFUlQo
bV9yb290T2JqZWN0KTsKKyAgICBBU1NFUlQobV9yb290T2JqZWN0LT5pc1ZhbGlkKCkpOworICAg
IEFTU0VSVChtX3J1bnRpbWVPYmplY3QpOworICAgIG1fcm9vdE9iamVjdC0+cmVtb3ZlUnVudGlt
ZU9iamVjdChtX3J1bnRpbWVPYmplY3QpOworICAgIG1fcnVudGltZU9iamVjdCA9IDA7Cit9CisK
K3ZvaWQgSW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpCit7CisgICAgQVNT
RVJUKG1fcnVudGltZU9iamVjdCk7CisgICAgbV9ydW50aW1lT2JqZWN0ID0gMDsKK30KKworUm9v
dE9iamVjdCogSW5zdGFuY2U6OnJvb3RPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jv
b3RPYmplY3QgJiYgbV9yb290T2JqZWN0LT5pc1ZhbGlkKCkgPyBtX3Jvb3RPYmplY3QuZ2V0KCkg
OiAwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QmluZGluZ3MKSW5kZXg6IFdlYkNvcmUv
YnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pz
Yy9ydW50aW1lX2pzYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlkZ2UvanNjL3J1bnRp
bWVfanNjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIHJ1bnRpbWVfanNjX2gKKyNkZWZpbmUgcnVudGltZV9qc2NfaAorCisjaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBKU0MgIHsKKworY2xhc3MgQXJnTGlzdDsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBK
U0dsb2JhbE9iamVjdDsKK2NsYXNzIFByb3BlcnR5TmFtZUFycmF5OworY2xhc3MgUnVudGltZU9i
amVjdEltcDsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKKworY2xhc3MgSW5zdGFuY2U7CitjbGFz
cyBNZXRob2Q7CitjbGFzcyBSb290T2JqZWN0OworCit0eXBlZGVmIFZlY3RvcjxNZXRob2QqPiBN
ZXRob2RMaXN0OworCitjbGFzcyBGaWVsZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBKU1ZhbHVl
IHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3Qg
SW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIH5GaWVsZCgpIHsg
fQorfTsKKworY2xhc3MgQ2xhc3MgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAg
IHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3Rh
bmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFtZWQoY29uc3QgSWRl
bnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1ZSBmYWxs
YmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIGNvbnN0IElkZW50aWZpZXImKSB7IHJl
dHVybiBqc1VuZGVmaW5lZCgpOyB9CisKKyAgICB2aXJ0dWFsIH5DbGFzcygpIHsgfQorfTsKKwor
dHlwZWRlZiB2b2lkICgqS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyKShFeGVjU3RhdGUqLCBKU09i
amVjdCogcm9vdE9iamVjdCk7CisKK2NsYXNzIEluc3RhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
SW5zdGFuY2U+IHsKK3B1YmxpYzoKKyAgICBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+
KTsKKworICAgIHN0YXRpYyB2b2lkIHNldERpZEV4ZWN1dGVGdW5jdGlvbihLSlNEaWRFeGVjdXRl
RnVuY3Rpb25QdHIgZnVuYyk7CisgICAgc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBk
aWRFeGVjdXRlRnVuY3Rpb24oKTsKKworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVk
IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1haW4gZW50cnkgcG9pbnRzIGludG8KKyAgICAvLyB0aGUg
bmF0aXZlIGltcGxlbWVudGF0aW9ucy4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gZXN0YWJsaXNoIGFu
ZCBjbGVhbnVwCisgICAgLy8gYW55IG5lZWRlZCBzdGF0ZS4KKyAgICB2b2lkIGJlZ2luKCk7Cisg
ICAgdm9pZCBlbmQoKTsKKworICAgIHZpcnR1YWwgQ2xhc3MqIGdldENsYXNzKCkgY29uc3QgPSAw
OworICAgIFJ1bnRpbWVPYmplY3RJbXAqIGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7
CisgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKKyAgICB2b2lkIHdpbGxE
ZXN0cm95UnVudGltZU9iamVjdCgpOworCisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFs
dWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpIHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNT
dGF0ZSosIGNvbnN0IE1ldGhvZExpc3QmLCBjb25zdCBBcmdMaXN0JiBhcmdzKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVj
U3RhdGUqLCBjb25zdCBBcmdMaXN0JikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQorCisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlQ29uc3RydWN0KEV4ZWNTdGF0ZSosIGNvbnN0IEFy
Z0xpc3QmKSB7IHJldHVybiBKU1ZhbHVlKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JikgeyB9CisKKyAgICB2aXJ0
dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QgPSAwOworCisgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCgpIGNvbnN0Owor
CisgICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHB1
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFs
QmVnaW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEVuZCgpIHsgfQorICAgIHZpcnR1
YWwgUnVudGltZU9iamVjdEltcCogbmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKKworICAg
IFJlZlB0cjxSb290T2JqZWN0PiBtX3Jvb3RPYmplY3Q7CisKK3ByaXZhdGU6CisgICAgUnVudGlt
ZU9iamVjdEltcCogbV9ydW50aW1lT2JqZWN0OworfTsKKworY2xhc3MgQXJyYXkgOiBwdWJsaWMg
Tm9uY29weWFibGUgeworcHVibGljOgorICAgIEFycmF5KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4p
OworICAgIHZpcnR1YWwgfkFycmF5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3QgPSAwOworCitwcm90
ZWN0ZWQ6CisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IG1fcm9vdE9iamVjdDsKK307CisKK2NvbnN0
IGNoYXIqIHNpZ25hdHVyZUZvclBhcmFtZXRlcnMoY29uc3QgQXJnTGlzdCYpOworCit0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhvZExpc3QqPiBNZXRob2RMaXN0TWFw
OwordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRob2QqPiBNZXRob2RN
YXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIEZpZWxkKj4gRmllbGRN
YXA7CisKK30gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gcnVudGltZV9qc2NfaApJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5tbQkocmV2aXNpb24gNTMxODIpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBKU1ZhbHVlIE9iamNJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTCiAKICAgICBpZiAoKnR5cGUgIT0gJ3YnKSB7CiAgICAg
ICAgIFtpbnZvY2F0aW9uIGdldFJldHVyblZhbHVlOmJ1ZmZlcl07Ci0gICAgICAgIHJlc3VsdCA9
IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsIGJ1ZmZlciwgb2JqY1ZhbHVlVHlwZSwgX3Jv
b3RPYmplY3QuZ2V0KCkpOworICAgICAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCBidWZmZXIsIG9iamNWYWx1ZVR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAg
fQogfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiB9CkBAIC0zMjksNyAr
MzI5LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRobwogICAgIC8v
IE9LIHdpdGggMzIgaGVyZS4KICAgICBjaGFyIGJ1ZmZlclszMl07CiAgICAgW2ludm9jYXRpb24g
Z2V0UmV0dXJuVmFsdWU6YnVmZmVyXTsKLSAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9W
YWx1ZShleGVjLCBidWZmZXIsIG9iamNWYWx1ZVR5cGUsIF9yb290T2JqZWN0LmdldCgpKTsKKyAg
ICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCBidWZmZXIsIG9iamNWYWx1
ZVR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxF
eGNlcHRpb24pIHsKIH0KICAgICBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7
CkBAIC0zODMsNyArMzgzLDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRl
ZmluZQogICAgIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGlkIG9iamNWYWx1ZSA9IFt0
YXJnZXRPYmplY3QgdmFsdWVGb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3Ry
aW5nOnByb3BlcnR5LmFzY2lpKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV07Ci0g
ICAgICAgICAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAmb2JqY1Zh
bHVlLCBPYmpjT2JqZWN0VHlwZSwgX3Jvb3RPYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgcmVz
dWx0ID0gY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJm9iamNWYWx1ZSwgT2JqY09iamVj
dFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9u
KiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gRG8gbm90aGluZy4gIENsYXNzIGRp
ZCBub3Qgb3ZlcnJpZGUgdmFsdWVGb3JVbmRlZmluZWRLZXk6LgogICAgICAgICB9CkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gNTMxODIpCisrKyBXZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3
NCw3IEBAIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXgKICAgICBAdHJ5
IHsKICAgICAgICAgaWQgb2JqID0gW19hcnJheS5nZXQoKSBvYmplY3RBdEluZGV4OmluZGV4XTsK
ICAgICAgICAgaWYgKG9iaikKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0T2JqY1ZhbHVlVG9W
YWx1ZSAoZXhlYywgJm9iaiwgT2JqY09iamVjdFR5cGUsIF9yb290T2JqZWN0LmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZSAoZXhlYywgJm9iaiwgT2Jq
Y09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRp
b24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIEdl
bmVyYWxFcnJvciwgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46472</attachid>
            <date>2010-01-13 10:15:54 -0800</date>
            <delta_ts>2010-01-14 05:55:27 -0800</delta_ts>
            <desc>Patch 2 for Bug 33589</desc>
            <filename>runtime2.txt</filename>
            <type>text/plain</type>
            <size>37335</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTAtMDEtMTMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgYnJpZGdlIGludGVyZmFjZXMgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkg
ZnJvbSBydW50aW1lLmggdG8gcnVudGltZV9qc2MuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1ODkKKworICAgICAgICBUaGVzZSBpbnRlcmZhY2Vz
IHVzZSBKU0Mtc3BlY2lmaWMgdHlwZXMsIHNvIGFyZSBtb3ZlZCBvdXQgb2YgcnVudGltZS5oIHRv
IGFsbG93IHRoZSBmaWxlIHRvCisgICAgICAgIGJlIHVzZWQgd2l0aCBib3RoIEpTQyBhbmQgVjgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICog
QW5kcm9pZC5qc2NiaW5kaW5ncy5tazogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5k
IGFkZGVkIHJ1bnRpbWVfanNjLmNwcAorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBNb2RpZmll
ZC4gUmVtb3ZlZCBydW50aW1lLmNwcCBhbmQgYW5kIGFkZGVkIHJ1bnRpbWVfanNjLltjcHB8aF0K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5k
IGFuZCBhZGRlZCBydW50aW1lX2pzYy5bY3BwfGhdCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBNb2RpZmllZC4gUmVtb3ZlZCBydW50aW1lLmNwcCBhbmQgYWRk
ZWQgcnVudGltZV9qc2MuW2NwcHxoXQorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDogTW9k
aWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5kIGFuZCBhZGRlZCBydW50aW1lX2pzYy5jcHAK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDogTW9kaWZpZWQuCisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8g
dXNlIHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAgICAqIGJyaWRnZS9qbmkv
am5pX3J1bnRpbWUuY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKEphdmFBcnJheTo6SmF2YUFycmF5
KTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8gdXNlIHJlbmFtZWQgQXJyYXk6Om1fcm9vdE9iamVjdAor
ICAgICAgICAoSmF2YUFycmF5Ojpyb290T2JqZWN0KTogVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBB
cnJheTo6bV9yb290T2JqZWN0bWVtYmVyCisgICAgICAgICogYnJpZGdlL2pzYzogQWRkZWQuCisg
ICAgICAgICogYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHA6IEFkZGVkLiBNb3ZlZCBmcm9tIHJ1
bnRpbWUuY3BwIGFuZCBmaXhlZCBzdHlsZS4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkFycmF5
OjpBcnJheSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpBcnJheTo6fkFycmF5KToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6fkluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmVuZCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRp
bWVPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnJvb3RPYmplY3Qp
OgorICAgICAgICAqIGJyaWRnZS9qc2MvcnVudGltZV9qc2MuaDogQWRkZWQuIE1vdmVkIEZpZWxk
LCBDbGFzcywgSW5zdGFuY2UgYW5kIEFycmF5IGludGVyZmFjZXMgZnJvbSBydW50aW1lLmgKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkZpZWxkOjp+RmllbGQpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNs
YXNzOjp+Q2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnNldFZhbHVl
T2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6c3Vw
cG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlOjpzdXBwb3J0c0NvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5j
ZTo6aW52b2tlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpn
ZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6
cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp2aXJ0dWFsQmVnaW4pOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnZpcnR1YWxFbmQpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06IE1vZGlmaWVkLgorICAgICAgICAoT2JqY0lu
c3RhbmNlOjppbnZva2VNZXRob2QpOiBNb2RpZmllZC4gVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBJ
bnN0YW5jZTo6bV9yb290T2JqZWN0CisgICAgICAgIChKYXZhQXJyYXk6OkphdmFBcnJheSk6IE1v
ZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEFycmF5OjptX3Jvb3RPYmplY3QKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKE9iamNJbnN0
YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8gdXNl
IHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbTogTW9kaWZpZWQuCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQXJy
YXk6OnZhbHVlQXQpOiBNb2RpZmllZC4gVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBBcnJheTo6bV9y
b290T2JqZWN0CisgICAgICAgICogYnJpZGdlL3J1bnRpbWUuY3BwOiBSZW1vdmVkLiBNb3ZlZCB0
byBydW50aW1lX2pzYy5jcHAKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZS5oOiBNb2RpZmllZC4g
TW92ZWQgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkgaW50ZXJmYWNlcyB0byBydW50
aW1lX2pzYy5oCisKIDIwMTAtMDEtMTMgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViQ29yZS9BbmRy
b2lkLmpzY2JpbmRpbmdzLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5k
aW5ncy5tawkocmV2aXNpb24gNTMxODIpCisrKyBXZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3Mu
bWsJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAgQklORElOR19DX0lOQ0xVREVTIDo9
IFwKIAkkKExPQ0FMX1BBVEgpL2JpbmRpbmdzL2pzIFwKIAkkKExPQ0FMX1BBVEgpL2JyaWRnZSBc
CiAJJChMT0NBTF9QQVRIKS9icmlkZ2UvYyBcCisJJChMT0NBTF9QQVRIKS9icmlkZ2UvanNjIFwK
IAkkKExPQ0FMX1BBVEgpL2JyaWRnZS9qbmkgXAogCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2puaS9q
c2MgXAogCVwKQEAgLTE4OCw4ICsxODksOCBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRn
ZS9qbmkvam5pX3J1bnRpbWUuY3BwIFwKIAlicmlkZ2Uvam5pL2puaV91dGlsaXR5LmNwcCBcCiAJ
YnJpZGdlL2puaS9qc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgXAorCWJyaWRnZS9qc2MvcnVu
dGltZV9qc2MuY3BwIFwKIAlicmlkZ2UvbnBydW50aW1lLmNwcCBcCi0JYnJpZGdlL3J1bnRpbWUu
Y3BwIFwKIAlicmlkZ2UvcnVudGltZV9hcnJheS5jcHAgXAogCWJyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAgXAogCWJyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgXApJbmRleDogV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lv
biA1MzE4MikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0
LDYgKzE0LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9i
aW5kaW5ncy9qcyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9icmlkZ2UgXAogCS1JJChzcmNkaXIp
L1dlYkNvcmUvYnJpZGdlL2MgXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvYnJpZGdlL2pzYyBcCiAJ
LUkkKHNyY2RpcikvV2ViQ29yZS9jc3MgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvZG9tIFwKIAkt
SSQoc3JjZGlyKS9XZWJDb3JlL2RvbS9kZWZhdWx0IFwKQEAgLTUwNywxMyArNTA4LDE0IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5oIFwK
IAlXZWJDb3JlL2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5p
L2puaV91dGlsaXR5LmggXAorCVdlYkNvcmUvYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHAgXAor
CVdlYkNvcmUvYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oIFwKIAlXZWJDb3JlL2JyaWRnZS9ucGFw
aS5oIFwKIAlXZWJDb3JlL2JyaWRnZS9ucHJ1bnRpbWUuY3BwIFwKIAlXZWJDb3JlL2JyaWRnZS9u
cHJ1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2UvbnBydW50aW1lX2ltcGwuaCBcCiAJV2ViQ29y
ZS9icmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmggXAogCVdlYkNvcmUvYnJpZGdlL25wcnVudGlt
ZV9wcml2LmggXAotCVdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3BwIFwKIAlXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lLmggXAogCVdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwKIAlXZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1MzE4MikKKysrIFdl
YkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsyMzAsNyBAQCBJTkNM
VURFUEFUSCA9IFwKICAgICAkJFBXRC9iaW5kaW5ncy9qcyBcCiAgICAgJCRQV0QvYnJpZGdlIFwK
ICAgICAkJFBXRC9icmlkZ2UvYyBcCisgICAgJCRQV0QvYnJpZGdlL2pzYyBcCiAgICAgJCRQV0Qv
Y3NzIFwKICAgICAkJFBXRC9kb20gXAogICAgICQkUFdEL2RvbS9kZWZhdWx0IFwKQEAgLTgxMCw3
ICs4MTEsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBicmlkZ2UvTlBfanNvYmplY3QuY3BwIFwKICAg
ICBicmlkZ2UvbnBydW50aW1lLmNwcCBcCiAgICAgYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwK
LSAgICBicmlkZ2UvcnVudGltZS5jcHAgXAogICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAg
XAogICAgIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgXAogICAgIGJyaWRnZS9ydW50aW1lX3Jv
b3QuY3BwIFwKQEAgLTgxOCw2ICs4MTgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBicmlkZ2UvYy9j
X2luc3RhbmNlLmNwcCBcCiAgICAgYnJpZGdlL2MvY19ydW50aW1lLmNwcCBcCiAgICAgYnJpZGdl
L2MvY191dGlsaXR5LmNwcCBcCisgICAgYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHAgXAogICAg
IGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0NhbnZhc1ZhbHVlLmNw
cCBcCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmNwcCBcCkBAIC0xNDk4LDYgKzE0OTksNyBAQCBI
RUFERVJTICs9IFwKICAgICBicmlkZ2UvYy9jX3J1bnRpbWUuaCBcCiAgICAgYnJpZGdlL2MvY191
dGlsaXR5LmggXAogICAgIGJyaWRnZS9JZGVudGlmaWVyUmVwLmggXAorICAgIGJyaWRnZS9qc2Mv
cnVudGltZV9qc2MuaCBcCiAgICAgYnJpZGdlL05QX2pzb2JqZWN0LmggXAogICAgIGJyaWRnZS9u
cHJ1bnRpbWUuaCBcCiAgICAgYnJpZGdlL3F0L3F0X2NsYXNzLmggXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wJKHJldmlzaW9uIDUzMTgyKQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtp
bmcgY29weSkKQEAgLTE3MSw4ICsxNzEsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qg
b2YgZmlsZXMgbmVlCiAgICAgICAgIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCiAgICAgICAgIGJy
aWRnZS9jL2NfcnVudGltZS5jcHAKICAgICAgICAgYnJpZGdlL2MvY191dGlsaXR5LmNwcAorICAg
ICAgICBicmlkZ2UvanNjL3J1bnRpbWVfanNjLmNwcAogICAgICAgICBicmlkZ2UvbnBydW50aW1l
LmNwcAotICAgICAgICBicmlkZ2UvcnVudGltZS5jcHAKICAgICAgICAgYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCiAgICAgICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKICAgICAgICAgYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUzMTgyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw3ICszMzIsNiBAQAog
CQkxQTU2OUQxOTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFQTBEN0UyQjgyMDA3QzM5
ODMgLyogb2JqY191dGlsaXR5LmggKi87IH07CiAJCTFBNTY5RDFBMEQ3RTJCODIwMDdDMzk4MyAv
KiBvYmpjX3V0aWxpdHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTU2OUNFQjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5Lm1tICovOyB9
OwogCQkxQTU2OUQxQjBEN0UyQjgyMDA3QzM5ODMgLyogV2ViU2NyaXB0T2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFQzBEN0UyQjgy
MDA3QzM5ODMgLyogV2ViU2NyaXB0T2JqZWN0LmggKi87IH07Ci0JCTFBNTY5RDFDMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNTY5Q0VEMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lLmNwcCAqLzsg
fTsKIAkJMUE1NjlEMUQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0VFMEQ3RTJCODIwMDdDMzk4
MyAvKiBydW50aW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRUYwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovOyB9OwogCQkxQTU2OUQxRjBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVf
YXJyYXkuaCAqLzsgfTsKQEAgLTExMTMsNiArMTExMiw4IEBACiAJCTU0QzUwRjdCMEU4MDFERjMw
MDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxU
b2tlbml6ZXJMaWJ4bWwyLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICov
OyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1OTcwREIyNDEwRkRGODI5MDBENEUyRDMgLyogcnVudGlt
ZV9qc2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTk3MERCMjIxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmNwcCAqLzsgfTsKKwkJNTk3
MERCMjUxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTcwREIyMzEwRkRGODI5MDBENEUyRDMgLyog
cnVudGltZV9qc2MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1OTlEMUUzMjEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUz
MDEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi87IH07CiAJCTU5
OUQxRTMzMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUzMTEwQzk3RDZFMDBF
MEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oICovOyB9OwogCQk1OUM3N0YyQTEwNTQ1QjNC
MDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyog
R2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgKi87IH07CkBAIC01NTcwLDcgKzU1NzEsNiBAQAog
CQkxQTU2OUNFQTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG9iamNfdXRpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTU2OUNFQjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gb2JqY191dGlsaXR5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTU2OUNFQzBEN0UyQjgyMDA3QzM5ODMgLyog
V2ViU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNj
cmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTU2OUNFRDBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBydW50aW1lLmNwcDsgcGF0aCA9IGJyaWRnZS9ydW50aW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZS5oOyBwYXRoID0gYnJp
ZGdlL3J1bnRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRUYwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gcnVudGltZV9hcnJheS5jcHA7IHBhdGggPSBicmlkZ2UvcnVudGltZV9h
cnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0YwMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHJ1bnRpbWVfYXJyYXkuaDsgcGF0aCA9IGJyaWRnZS9ydW50aW1lX2FycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDU2LDYgKzY0NTYsOCBAQAogCQk1NEM1MEY3QTBF
ODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1OTcwREIyMjEwRkRGODI5MDBENEUyRDMgLyog
cnVudGltZV9qc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcnVu
dGltZV9qc2MuY3BwOyBwYXRoID0gYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5NzBEQjIzMTBGREY4MjkwMEQ0RTJEMyAvKiBydW50aW1l
X2pzYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1lX2pzYy5oOyBw
YXRoID0gYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1OTlEMUUzMDEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBqbmlfdXRpbGl0eV9wcml2YXRl
LmNwcDsgcGF0aCA9IGpzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTk5RDFFMzExMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3By
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gam5pX3V0aWxpdHlfcHJp
dmF0ZS5oOyBwYXRoID0ganNjL2puaV91dGlsaXR5X3ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2Vy
dmljZU1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2VvbG9j
YXRpb25TZXJ2aWNlTW9jay5jcHA7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyODAsNiArMTAyODIsNyBAQAog
CQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OTcwREIyMTEwRkRGODBCMDBENEUyRDMgLyog
anNjICovLAogCQkJCTFBNTY5Q0M1MEQ3RTJCODIwMDdDMzk4MyAvKiBjICovLAogCQkJCTFBNTY5
Q0NFMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmkgKi8sCiAJCQkJMUE1NjlDRTIwRDdFMkI4MjAwN0Mz
OTgzIC8qIG9iamMgKi8sCkBAIC0xMDI5Myw3ICsxMDI5Niw2IEBACiAJCQkJMUE1NjlDREYwRDdF
MkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbXBsLmggKi8sCiAJCQkJMUE1NjlDRTAwRDdFMkI4
MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oICovLAogCQkJCTFBNTY5Q0UxMEQ3RTJC
ODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfcHJpdi5oICovLAotCQkJCTFBNTY5Q0VEMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lLmNwcCAqLywKIAkJCQkxQTU2OUNFRTBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZS5oICovLAogCQkJCTFBNTY5Q0VGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmNwcCAqLywKIAkJCQkxQTU2OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9h
cnJheS5oICovLApAQCAtMTEwMzUsNiArMTEwMzcsMTUgQEAKIAkJCXBhdGggPSB3ZWJzb2NrZXRz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTk3MERCMjExMEZERjgwQjAw
RDRFMkQzIC8qIGpzYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTk3MERCMjIxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmNwcCAqLywKKwkJ
CQk1OTcwREIyMzEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9qc2MuaCAqLywKKwkJCSk7CisJ
CQluYW1lID0ganNjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTk5RDFF
MkYxMEM5N0Q0QzAwRTBFRjEyIC8qIGpzYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCkBAIC0xODMyNSw2ICsxODMzNiw3IEBACiAJCQkJMEY1QjdBNTUxMEY2NUQ3
QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTRDMDBFNjEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3RDk3QkYxMEZCOEQ3NzAwQzAwODc0IC8qIEpTU1ZHUE9ETGlzdEN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk3MERCMjUxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRp
bWVfanNjLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMDA2LDcgKzIwMDE4LDYgQEAKIAkJCQlBOENG
RjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OUU5MTFDODBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNjNBMjQ5MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5M
b29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTU2OUQxQzBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxRTBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyMDBE
N0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjA0ODUsNiArMjA0OTYsNyBAQAogCQkJCTUxMTIyNDc4MTBDRkI4RjQwMDgwOTlE
NyAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTk3MERCMjQxMEZERjgyOTAwRDRF
MkQzIC8qIHJ1bnRpbWVfanNjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9icmlk
Z2UvcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGltZS5jcHAJ
KHJldmlzaW9uIDUzMTgyKQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGltZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAicnVudGltZS5oIgotCi0jaW5jbHVkZSAicnVudGltZV9vYmpl
Y3QuaCIKLSNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgotCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKLSNlbmRp
ZgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEJpbmRpbmdzIHsKLQotQXJyYXk6OkFycmF5
KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKLSAgICA6IF9yb290T2JqZWN0KHJv
b3RPYmplY3QpCi17Ci0gICAgQVNTRVJUKF9yb290T2JqZWN0KTsKLX0KLQotQXJyYXk6On5BcnJh
eSgpCi17Ci19Ci0KLUluc3RhbmNlOjpJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJv
b3RPYmplY3QpCi0gICAgOiBfcm9vdE9iamVjdChyb290T2JqZWN0KQotICAgICwgbV9ydW50aW1l
T2JqZWN0KDApCi17Ci0gICAgQVNTRVJUKF9yb290T2JqZWN0KTsKLX0KLQotSW5zdGFuY2U6On5J
bnN0YW5jZSgpCi17Ci0gICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3QpOwotfQotCi1zdGF0aWMg
S0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uOwotCi12b2lkIElu
c3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24oS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGZ1
bmMpCi17Ci0gICAgc19kaWRFeGVjdXRlRnVuY3Rpb24gPSBmdW5jOwotfQotCi1LSlNEaWRFeGVj
dXRlRnVuY3Rpb25QdHIgSW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbigpCi17Ci0gICAgcmV0
dXJuIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uOwotfQotCi12b2lkIEluc3RhbmNlOjpiZWdpbigpCi17
Ci0gICAgdmlydHVhbEJlZ2luKCk7Ci19Ci0KLXZvaWQgSW5zdGFuY2U6OmVuZCgpCi17Ci0gICAg
dmlydHVhbEVuZCgpOwotfQotCi1SdW50aW1lT2JqZWN0SW1wKiBJbnN0YW5jZTo6Y3JlYXRlUnVu
dGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQVNTRVJUKF9yb290T2JqZWN0KTsK
LSAgICBBU1NFUlQoX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSk7Ci0gICAgaWYgKG1fcnVudGltZU9i
amVjdCkKLSAgICAgICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsKLSAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIG1fcnVudGltZU9iamVjdCA9IG5ld1J1bnRpbWVP
YmplY3QoZXhlYyk7Ci0gICAgX3Jvb3RPYmplY3QtPmFkZFJ1bnRpbWVPYmplY3QobV9ydW50aW1l
T2JqZWN0KTsKLSAgICByZXR1cm4gbV9ydW50aW1lT2JqZWN0OwotfQotCi1SdW50aW1lT2JqZWN0
SW1wKiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICByZXR1cm4gbmV3IChleGVj
KSBSdW50aW1lT2JqZWN0SW1wKGV4ZWMsIHRoaXMpOwotfQotCi12b2lkIEluc3RhbmNlOjp3aWxs
RGVzdHJveVJ1bnRpbWVPYmplY3QoKQotewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci0gICAg
QVNTRVJUKF9yb290T2JqZWN0LT5pc1ZhbGlkKCkpOwotICAgIEFTU0VSVChtX3J1bnRpbWVPYmpl
Y3QpOwotICAgIF9yb290T2JqZWN0LT5yZW1vdmVSdW50aW1lT2JqZWN0KG1fcnVudGltZU9iamVj
dCk7Ci0gICAgbV9ydW50aW1lT2JqZWN0ID0gMDsKLX0KLQotdm9pZCBJbnN0YW5jZTo6d2lsbElu
dmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQobV9ydW50aW1lT2JqZWN0KTsK
LSAgICBtX3J1bnRpbWVPYmplY3QgPSAwOwotfQotCi1Sb290T2JqZWN0KiBJbnN0YW5jZTo6cm9v
dE9iamVjdCgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gX3Jvb3RPYmplY3QgJiYgX3Jvb3RPYmpl
Y3QtPmlzVmFsaWQoKSA/IF9yb290T2JqZWN0LmdldCgpIDogMDsKLX0KLQotfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkJpbmRpbmdzCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCShyZXZpc2lvbiA1MzE4MikKKysrIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMzUgKzI2LDE0IEBACiAjaWZuZGVmIEpBVkFTQ1JJUFRDT1JFX0JJTkRJTkdTX1JV
TlRJTUVfSAogI2RlZmluZSBKQVZBU0NSSVBUQ09SRV9CSU5ESU5HU19SVU5USU1FX0gKIAotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lmIFVT
RShKU0MpCisjaW5jbHVkZSAicnVudGltZV9qc2MuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgSlND
ICB7CiAKLWNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBJZGVudGlmaWVyOwotY2xhc3MgSlNHbG9iYWxP
YmplY3Q7Ci1jbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKLWNsYXNzIFJ1bnRpbWVPYmplY3RJbXA7
Ci0KIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWNsYXNzIEluc3RhbmNlOwotY2xhc3MgTWV0aG9k
OwotY2xhc3MgUm9vdE9iamVjdDsKLQotdHlwZWRlZiBWZWN0b3I8TWV0aG9kKj4gTWV0aG9kTGlz
dDsKLQotY2xhc3MgRmllbGQgewotcHVibGljOgotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZy
b21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNl
KiwgSlNWYWx1ZSkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB+RmllbGQoKSB7IH0KLX07Ci0K
IGNsYXNzIE1ldGhvZCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0ID0gMDsKQEAgLTYyLDkwICs0MSw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5NZXRob2QoKSB7IH0KIH07CiAKLWNsYXNzIENsYXNzIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIE1ldGhvZExpc3QgbWV0aG9kc05h
bWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSopIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFu
Y2UqLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQotCi0gICAg
dmlydHVhbCB+Q2xhc3MoKSB7IH0KLX07Ci0KLXR5cGVkZWYgdm9pZCAoKktKU0RpZEV4ZWN1dGVG
dW5jdGlvblB0cikoRXhlY1N0YXRlKiwgSlNPYmplY3QqIHJvb3RPYmplY3QpOwotCi1jbGFzcyBJ
bnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3RhbmNlPiB7Ci1wdWJsaWM6Ci0gICAgSW5z
dGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXREaWRF
eGVjdXRlRnVuY3Rpb24oS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGZ1bmMpOwotICAgIHN0YXRp
YyBLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgZGlkRXhlY3V0ZUZ1bmN0aW9uKCk7Ci0KLSAgICAv
LyBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtYWluIGVu
dHJ5IHBvaW50cyBpbnRvCi0gICAgLy8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGV5
IGNhbiBiZSB1c2VkIHRvIGVzdGFibGlzaCBhbmQgY2xlYW51cAotICAgIC8vIGFueSBuZWVkZWQg
c3RhdGUuCi0gICAgdm9pZCBiZWdpbigpOwotICAgIHZvaWQgZW5kKCk7Ci0gICAgCi0gICAgdmly
dHVhbCBDbGFzcyogZ2V0Q2xhc3MoKSBjb25zdCA9IDA7Ci0gICAgUnVudGltZU9iamVjdEltcCog
Y3JlYXRlUnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKLSAgICB2b2lkIHdpbGxJbnZhbGlkYXRl
UnVudGltZU9iamVjdCgpOwotICAgIHZvaWQgd2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KCk7Ci0g
ICAgCi0gICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vz
c2Z1bGx5LgotICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IE1ldGhvZExp
c3QmLCBjb25zdCBBcmdMaXN0JiBhcmdzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQotICAgIAotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbnN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBKU1Zh
bHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JikgeyByZXR1cm4g
SlNWYWx1ZSgpOyB9Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKSB7IH0KLQotICAgIHZpcnR1YWwgSlNWYWx1ZSBk
ZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QgPSAw
OwotICAgIAotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QgPSAwOwotICAgIAotICAgIFJvb3RPYmplY3QqIHJvb3RPYmplY3QoKSBjb25zdDsKLSAgICAK
LSAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOwotCi0gICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHZpcnR1YWxC
ZWdpbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCkgeyB9Ci0gICAgdmlydHVh
bCBSdW50aW1lT2JqZWN0SW1wKiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwotCi0gICAg
UmVmUHRyPFJvb3RPYmplY3Q+IF9yb290T2JqZWN0OwotCi1wcml2YXRlOgotICAgIFJ1bnRpbWVP
YmplY3RJbXAqIG1fcnVudGltZU9iamVjdDsKLX07Ci0KLWNsYXNzIEFycmF5IDogcHVibGljIE5v
bmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBBcnJheShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsK
LSAgICB2aXJ0dWFsIH5BcnJheSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0
KEV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbmRleCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCgpIGNvbnN0ID0gMDsKLQot
cHJvdGVjdGVkOgotICAgIFJlZlB0cjxSb290T2JqZWN0PiBfcm9vdE9iamVjdDsKLX07Ci0KLWNv
bnN0IGNoYXIgKnNpZ25hdHVyZUZvclBhcmFtZXRlcnMoY29uc3QgQXJnTGlzdCYpOwotCi10eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhvZExpc3QqPiBNZXRob2RMaXN0
TWFwOwotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRob2QqPiBNZXRo
b2RNYXA7IAotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZp
ZWxkTWFwOyAKLSAgICAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiA1MzE4MikKKysrIFdl
YkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsx
MzgsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAgICAgZm9y
IChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1
ZSgmY0FyZ3NbaV0pOwogCi0gICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlh
bnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBfcm9vdE9iamVjdC5nZXQoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1
bHRWYXJpYW50LCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRW
YWx1ZSgmcmVzdWx0VmFyaWFudCk7CiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQpAQCAtMTcz
LDcgKzE3Myw3IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEUKICAg
ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFu
dFZhbHVlKCZjQXJnc1tpXSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gY29udmVydE5Q
VmFyaWFudFRvVmFsdWUoZXhlYywgJnJlc3VsdFZhcmlhbnQsIF9yb290T2JqZWN0LmdldCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywg
JnJlc3VsdFZhcmlhbnQsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgX05QTl9SZWxlYXNlVmFy
aWFudFZhbHVlKCZyZXN1bHRWYXJpYW50KTsKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7CiB9CkBA
IC0yMTIsNyArMjEyLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdChFeGVj
UwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VW
YXJpYW50VmFsdWUoJmNBcmdzW2ldKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBjb252
ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCAmcmVzdWx0VmFyaWFudCwgX3Jvb3RPYmplY3QuZ2V0
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShl
eGVjLCAmcmVzdWx0VmFyaWFudCwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICBfTlBOX1JlbGVh
c2VWYXJpYW50VmFsdWUoJnJlc3VsdFZhcmlhbnQpOwogICAgIHJldHVybiByZXN1bHRWYWx1ZTsK
IH0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9ydW50aW1lLmNwcAkocmV2aXNpb24gNTMxODIpCisr
KyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzcsNyArMzc3LDcgQEAgSmF2YUFycmF5OjpKYXZhQXJyYXkoam9iamVjdCBhcnJheSwgY29ucwog
ICAgIEpOSUVudiAqZW52ID0gZ2V0Sk5JRW52KCk7CiAgICAgX2xlbmd0aCA9IGVudi0+R2V0QXJy
YXlMZW5ndGgoKGphcnJheSlfYXJyYXktPl9pbnN0YW5jZSk7CiAgICAgX3R5cGUgPSBzdHJkdXAo
dHlwZSk7Ci0gICAgX3Jvb3RPYmplY3QgPSByb290T2JqZWN0OworICAgIG1fcm9vdE9iamVjdCA9
IHJvb3RPYmplY3Q7CiB9CiAKIEphdmFBcnJheTo6fkphdmFBcnJheSAoKSAKQEAgLTM4Nyw3ICsz
ODcsNyBAQCBKYXZhQXJyYXk6On5KYXZhQXJyYXkgKCkgCiAKIFJvb3RPYmplY3QqIEphdmFBcnJh
eTo6cm9vdE9iamVjdCgpIGNvbnN0IAogeyAKLSAgICByZXR1cm4gX3Jvb3RPYmplY3QgJiYgX3Jv
b3RPYmplY3QtPmlzVmFsaWQoKSA/IF9yb290T2JqZWN0LmdldCgpIDogMDsKKyAgICByZXR1cm4g
bV9yb290T2JqZWN0ICYmIG1fcm9vdE9iamVjdC0+aXNWYWxpZCgpID8gbV9yb290T2JqZWN0Lmdl
dCgpIDogMDsKIH0KIAogdm9pZCBKYXZhQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9qc2MvcnVudGltZV9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pz
Yy9ydW50aW1lX2pzYy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JyaWRnZS9qc2MvcnVu
dGltZV9qc2MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInJ1bnRpbWVfanNjLmgiCisK
KyNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgorI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRl
ICJxdF9pbnN0YW5jZS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQmlu
ZGluZ3MgeworCitBcnJheTo6QXJyYXkoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0
KQorICAgIDogbV9yb290T2JqZWN0KHJvb3RPYmplY3QpCit7CisgICAgQVNTRVJUKG1fcm9vdE9i
amVjdCk7Cit9CisKK0FycmF5Ojp+QXJyYXkoKQoreworfQorCitJbnN0YW5jZTo6SW5zdGFuY2Uo
UGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQorICAgIDogbV9yb290T2JqZWN0KHJv
b3RPYmplY3QpCisgICAgLCBtX3J1bnRpbWVPYmplY3QoMCkKK3sKKyAgICBBU1NFUlQobV9yb290
T2JqZWN0KTsKK30KKworSW5zdGFuY2U6On5JbnN0YW5jZSgpCit7CisgICAgQVNTRVJUKCFtX3J1
bnRpbWVPYmplY3QpOworfQorCitzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIHNfZGlk
RXhlY3V0ZUZ1bmN0aW9uOworCit2b2lkIEluc3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24o
S0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGZ1bmMpCit7CisgICAgc19kaWRFeGVjdXRlRnVuY3Rp
b24gPSBmdW5jOworfQorCitLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgSW5zdGFuY2U6OmRpZEV4
ZWN1dGVGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uOworfQor
Cit2b2lkIEluc3RhbmNlOjpiZWdpbigpCit7CisgICAgdmlydHVhbEJlZ2luKCk7Cit9CisKK3Zv
aWQgSW5zdGFuY2U6OmVuZCgpCit7CisgICAgdmlydHVhbEVuZCgpOworfQorCitSdW50aW1lT2Jq
ZWN0SW1wKiBJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdCk7CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdC0+aXNW
YWxpZCgpKTsKKyAgICBpZiAobV9ydW50aW1lT2JqZWN0KQorICAgICAgICByZXR1cm4gbV9ydW50
aW1lT2JqZWN0OworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAg
bV9ydW50aW1lT2JqZWN0ID0gbmV3UnVudGltZU9iamVjdChleGVjKTsKKyAgICBtX3Jvb3RPYmpl
Y3QtPmFkZFJ1bnRpbWVPYmplY3QobV9ydW50aW1lT2JqZWN0KTsKKyAgICByZXR1cm4gbV9ydW50
aW1lT2JqZWN0OworfQorCitSdW50aW1lT2JqZWN0SW1wKiBJbnN0YW5jZTo6bmV3UnVudGltZU9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBSdW50aW1lT2JqZWN0SW1wKGV4ZWMsIHRo
aXMpOworfQorCit2b2lkIEluc3RhbmNlOjp3aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoKQorewor
ICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOworICAgIEFTU0VSVChtX3Jvb3RPYmplY3QtPmlzVmFs
aWQoKSk7CisgICAgQVNTRVJUKG1fcnVudGltZU9iamVjdCk7CisgICAgbV9yb290T2JqZWN0LT5y
ZW1vdmVSdW50aW1lT2JqZWN0KG1fcnVudGltZU9iamVjdCk7CisgICAgbV9ydW50aW1lT2JqZWN0
ID0gMDsKK30KKwordm9pZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkK
K3sKKyAgICBBU1NFUlQobV9ydW50aW1lT2JqZWN0KTsKKyAgICBtX3J1bnRpbWVPYmplY3QgPSAw
OworfQorCitSb290T2JqZWN0KiBJbnN0YW5jZTo6cm9vdE9iamVjdCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcm9vdE9iamVjdCAmJiBtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSA/IG1fcm9vdE9i
amVjdC5nZXQoKSA6IDA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5ncwpJbmRl
eDogV2ViQ29yZS9icmlkZ2UvanNjL3J1bnRpbWVfanNjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2UvanNjL3J1bnRpbWVfanNjLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JyaWRn
ZS9qc2MvcnVudGltZV9qc2MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgcnVudGltZV9qc2NfaAorI2RlZmluZSBydW50aW1lX2pz
Y19oCisKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyAgeworCitjbGFzcyBBcmdMaXN0OworY2xhc3MgSWRlbnRpZmll
cjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CitjbGFz
cyBSdW50aW1lT2JqZWN0SW1wOworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFzcyBJbnN0
YW5jZTsKK2NsYXNzIE1ldGhvZDsKK2NsYXNzIFJvb3RPYmplY3Q7CisKK3R5cGVkZWYgVmVjdG9y
PE1ldGhvZCo+IE1ldGhvZExpc3Q7CisKK2NsYXNzIEZpZWxkIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2Uq
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
fkZpZWxkKCkgeyB9Cit9OworCitjbGFzcyBDbGFzcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlm
aWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1l
ZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBK
U1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRp
ZmllciYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KKworICAgIHZpcnR1YWwgfkNsYXNzKCkg
eyB9Cit9OworCit0eXBlZGVmIHZvaWQgKCpLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIpKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiByb290T2JqZWN0KTsKKworY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbnN0YW5jZT4geworcHVibGljOgorICAgIEluc3RhbmNlKFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4pOworCisgICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtK
U0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKKyAgICBzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1
bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbigpOworCisgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IGFyZSBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFpbiBlbnRyeSBwb2ludHMgaW50bwor
ICAgIC8vIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25zLiAgVGhleSBjYW4gYmUgdXNlZCB0byBl
c3RhYmxpc2ggYW5kIGNsZWFudXAKKyAgICAvLyBhbnkgbmVlZGVkIHN0YXRlLgorICAgIHZvaWQg
YmVnaW4oKTsKKyAgICB2b2lkIGVuZCgpOworCisgICAgdmlydHVhbCBDbGFzcyogZ2V0Q2xhc3Mo
KSBjb25zdCA9IDA7CisgICAgUnVudGltZU9iamVjdEltcCogY3JlYXRlUnVudGltZU9iamVjdChF
eGVjU3RhdGUqKTsKKyAgICB2b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOworICAg
IHZvaWQgd2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KCk7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHRoZSB2YWx1ZSB3YXMgbm90IHNldCBzdWNjZXNzZnVsbHkuCisgICAgdmlydHVhbCBib29s
IHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VN
ZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTWV0aG9kTGlzdCYsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0
TWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKSB7IHJldHVybiBqc1VuZGVmaW5lZCgp
OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJ1Y3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJuIEpTVmFsdWUoKTsgfQorCisgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKSB7IH0K
KworICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2Yo
RXhlY1N0YXRlKiBleGVjKSBjb25zdCA9IDA7CisKKyAgICBSb290T2JqZWN0KiByb290T2JqZWN0
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOworCisgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIHZpcnR1YWxCZWdpbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCkgeyB9
CisgICAgdmlydHVhbCBSdW50aW1lT2JqZWN0SW1wKiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSopOworCisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IG1fcm9vdE9iamVjdDsKKworcHJpdmF0ZToK
KyAgICBSdW50aW1lT2JqZWN0SW1wKiBtX3J1bnRpbWVPYmplY3Q7Cit9OworCitjbGFzcyBBcnJh
eSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgQXJyYXkoUGFzc1JlZlB0cjxS
b290T2JqZWN0Pik7CisgICAgdmlydHVhbCB+QXJyYXkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdCA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICBSZWZQdHI8Um9vdE9iamVjdD4gbV9yb290T2JqZWN0Owor
fTsKKworY29uc3QgY2hhciogc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25zdCBBcmdMaXN0Jik7
CisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kTGlzdCo+IE1l
dGhvZExpc3RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhv
ZCo+IE1ldGhvZE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmll
bGQqPiBGaWVsZE1hcDsKKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBydW50aW1lX2pzY19oCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiA1MzE4MikKKysrIFdlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIEpTVmFs
dWUgT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1MKIAogICAgIGlmICgqdHlwZSAhPSAn
dicpIHsKICAgICAgICAgW2ludm9jYXRpb24gZ2V0UmV0dXJuVmFsdWU6YnVmZmVyXTsKLSAgICAg
ICAgcmVzdWx0ID0gY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgYnVmZmVyLCBvYmpjVmFs
dWVUeXBlLCBfcm9vdE9iamVjdC5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpj
VmFsdWVUb1ZhbHVlKGV4ZWMsIGJ1ZmZlciwgb2JqY1ZhbHVlVHlwZSwgbV9yb290T2JqZWN0Lmdl
dCgpKTsKICAgICB9CiB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKIH0K
QEAgLTMyOSw3ICszMjksNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1l
dGhvCiAgICAgLy8gT0sgd2l0aCAzMiBoZXJlLgogICAgIGNoYXIgYnVmZmVyWzMyXTsKICAgICBb
aW52b2NhdGlvbiBnZXRSZXR1cm5WYWx1ZTpidWZmZXJdOwotICAgIHJlc3VsdCA9IGNvbnZlcnRP
YmpjVmFsdWVUb1ZhbHVlKGV4ZWMsIGJ1ZmZlciwgb2JqY1ZhbHVlVHlwZSwgX3Jvb3RPYmplY3Qu
Z2V0KCkpOworICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsIGJ1ZmZl
ciwgb2JqY1ZhbHVlVHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKIH0gQGNhdGNoKE5TRXhjZXB0
aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogfQogICAgIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNT
dGF0ZShleGVjKTsKQEAgLTM4Myw3ICszODMsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0
VmFsdWVPZlVuZGVmaW5lCiAgICAgCiAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgaWQgb2Jq
Y1ZhbHVlID0gW3RhcmdldE9iamVjdCB2YWx1ZUZvclVuZGVmaW5lZEtleTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6cHJvcGVydHkuYXNjaWkoKSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5j
b2RpbmddXTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4
ZWMsICZvYmpjVmFsdWUsIE9iamNPYmplY3RUeXBlLCBfcm9vdE9iamVjdC5nZXQoKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCAmb2JqY1ZhbHVl
LCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICAgICAgfSBAY2F0Y2go
TlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAvLyBEbyBub3RoaW5n
LiAgQ2xhc3MgZGlkIG5vdCBvdmVycmlkZSB2YWx1ZUZvclVuZGVmaW5lZEtleTouCiAgICAgICAg
IH0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiA1MzE4MikK
KysrIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsNyArMTc0LDcgQEAgSlNWYWx1ZSBPYmpjQXJyYXk6OnZhbHVlQXQoRXhlY1N0YXRlKiBl
eAogICAgIEB0cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5k
ZXg6aW5kZXhdOwogICAgICAgICBpZiAob2JqKQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRP
YmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgX3Jvb3RPYmplY3Qu
Z2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlIChleGVj
LCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICB9IEBjYXRj
aChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgR2VuZXJhbEVycm9yLCAiT2JqZWN0aXZlLUMgZXhjZXB0aW9uLiIpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46561</attachid>
            <date>2010-01-14 05:55:27 -0800</date>
            <delta_ts>2010-01-20 07:08:13 -0800</delta_ts>
            <desc>Patch 3 for Bug 33589</desc>
            <filename>runtime3.txt</filename>
            <type>text/plain</type>
            <size>38119</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzI1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMTAtMDEtMTQgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgYnJpZGdlIGludGVyZmFjZXMgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkg
ZnJvbSBydW50aW1lLmggdG8gcnVudGltZV9qc2MuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1ODkKKworICAgICAgICBUaGVzZSBpbnRlcmZhY2Vz
IHVzZSBKU0Mtc3BlY2lmaWMgdHlwZXMsIHNvIGFyZSBtb3ZlZCBvdXQgb2YgcnVudGltZS5oIHRv
IGFsbG93IHRoZSBmaWxlIHRvCisgICAgICAgIGJlIHVzZWQgd2l0aCBib3RoIEpTQyBhbmQgVjgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICog
QW5kcm9pZC5qc2NiaW5kaW5ncy5tazogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5k
IGFkZGVkIHJ1bnRpbWVfanNjLmNwcAorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBNb2RpZmll
ZC4gUmVtb3ZlZCBydW50aW1lLmNwcCBhbmQgYW5kIGFkZGVkIHJ1bnRpbWVfanNjLltjcHB8aF0K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogTW9kaWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5k
IGFuZCBhZGRlZCBydW50aW1lX2pzYy5bY3BwfGhdCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBNb2RpZmllZC4gUmVtb3ZlZCBydW50aW1lLmNwcCBhbmQgYWRk
ZWQgcnVudGltZV9qc2MuW2NwcHxoXQorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDogTW9k
aWZpZWQuIFJlbW92ZWQgcnVudGltZS5jcHAgYW5kIGFuZCBhZGRlZCBydW50aW1lX2pzYy5jcHAK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDogTW9kaWZpZWQuCisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8g
dXNlIHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAgICAqIGJyaWRnZS9qbmkv
am5pX3J1bnRpbWUuY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKEphdmFBcnJheTo6SmF2YUFycmF5
KTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8gdXNlIHJlbmFtZWQgQXJyYXk6Om1fcm9vdE9iamVjdAor
ICAgICAgICAoSmF2YUFycmF5Ojpyb290T2JqZWN0KTogVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBB
cnJheTo6bV9yb290T2JqZWN0bWVtYmVyCisgICAgICAgICogYnJpZGdlL2pzYzogQWRkZWQuCisg
ICAgICAgICogYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHA6IEFkZGVkLiBNb3ZlZCBmcm9tIHJ1
bnRpbWUuY3BwIGFuZCBmaXhlZCBzdHlsZS4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkFycmF5
OjpBcnJheSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpBcnJheTo6fkFycmF5KToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZTo6fkluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZTo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmVuZCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRp
bWVPYmplY3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnJvb3RPYmplY3Qp
OgorICAgICAgICAqIGJyaWRnZS9qc2MvcnVudGltZV9qc2MuaDogQWRkZWQuIE1vdmVkIEZpZWxk
LCBDbGFzcywgSW5zdGFuY2UgYW5kIEFycmF5IGludGVyZmFjZXMgZnJvbSBydW50aW1lLmgKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkZpZWxkOjp+RmllbGQpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Q2xhc3M6OmZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNs
YXNzOjp+Q2xhc3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnNldFZhbHVl
T2ZVbmRlZmluZWRGaWVsZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6c3Vw
cG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlOjpzdXBwb3J0c0NvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5j
ZTo6aW52b2tlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpn
ZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6
cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjp2aXJ0dWFsQmVnaW4pOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OnZpcnR1YWxFbmQpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06IE1vZGlmaWVkLgorICAgICAgICAoT2JqY0lu
c3RhbmNlOjppbnZva2VNZXRob2QpOiBNb2RpZmllZC4gVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBJ
bnN0YW5jZTo6bV9yb290T2JqZWN0CisgICAgICAgIChKYXZhQXJyYXk6OkphdmFBcnJheSk6IE1v
ZGlmaWVkLiBVcGRhdGVkIHRvIHVzZSByZW5hbWVkIEFycmF5OjptX3Jvb3RPYmplY3QKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEluc3RhbmNlOjptX3Jvb3RPYmplY3QKKyAgICAgICAgKE9iamNJbnN0
YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKTogTW9kaWZpZWQuIFVwZGF0ZWQgdG8gdXNl
IHJlbmFtZWQgSW5zdGFuY2U6Om1fcm9vdE9iamVjdAorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbTogTW9kaWZpZWQuCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQXJy
YXk6OnZhbHVlQXQpOiBNb2RpZmllZC4gVXBkYXRlZCB0byB1c2UgcmVuYW1lZCBBcnJheTo6bV9y
b290T2JqZWN0CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOiBNb2RpZmllZC4K
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ojo6cm9vdE9iamVjdCk6IE1vZGlmaWVkLiBVcGRhdGVk
IHRvIHVzZSByZW5hbWVkIEFycmF5OjptX3Jvb3RPYmplY3QKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZS5jcHA6IFJlbW92ZWQuIE1vdmVkIHRvIHJ1bnRpbWVfanNjLmNwcAorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lLmg6IE1vZGlmaWVkLiBNb3ZlZCBGaWVsZCwgQ2xhc3MsIEluc3RhbmNlIGFu
ZCBBcnJheSBpbnRlcmZhY2VzIHRvIHJ1bnRpbWVfanNjLmgKKwogMjAxMC0wMS0xNCAgQW5kcmVh
cyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawko
cmV2aXNpb24gNTMyNTkpCisrKyBXZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAgQklORElOR19DX0lOQ0xVREVTIDo9IFwKIAkkKExP
Q0FMX1BBVEgpL2JpbmRpbmdzL2pzIFwKIAkkKExPQ0FMX1BBVEgpL2JyaWRnZSBcCiAJJChMT0NB
TF9QQVRIKS9icmlkZ2UvYyBcCisJJChMT0NBTF9QQVRIKS9icmlkZ2UvanNjIFwKIAkkKExPQ0FM
X1BBVEgpL2JyaWRnZS9qbmkgXAogCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2puaS9qc2MgXAogCVwK
QEAgLTE4OCw4ICsxODksOCBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9qbmkvam5p
X3J1bnRpbWUuY3BwIFwKIAlicmlkZ2Uvam5pL2puaV91dGlsaXR5LmNwcCBcCiAJYnJpZGdlL2pu
aS9qc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgXAorCWJyaWRnZS9qc2MvcnVudGltZV9qc2Mu
Y3BwIFwKIAlicmlkZ2UvbnBydW50aW1lLmNwcCBcCi0JYnJpZGdlL3J1bnRpbWUuY3BwIFwKIAli
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAgXAogCWJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgXAog
CWJyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1MzI1OSkK
KysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDcg
QEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9iaW5kaW5ncy9q
cyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9icmlkZ2UgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUv
YnJpZGdlL2MgXAorCS1JJChzcmNkaXIpL1dlYkNvcmUvYnJpZGdlL2pzYyBcCiAJLUkkKHNyY2Rp
cikvV2ViQ29yZS9jc3MgXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvZG9tIFwKIAktSSQoc3JjZGly
KS9XZWJDb3JlL2RvbS9kZWZhdWx0IFwKQEAgLTUwNywxMyArNTA4LDE0IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5oIFwKIAlXZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2puaV91dGls
aXR5LmggXAorCVdlYkNvcmUvYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHAgXAorCVdlYkNvcmUv
YnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oIFwKIAlXZWJDb3JlL2JyaWRnZS9ucGFwaS5oIFwKIAlX
ZWJDb3JlL2JyaWRnZS9ucHJ1bnRpbWUuY3BwIFwKIAlXZWJDb3JlL2JyaWRnZS9ucHJ1bnRpbWUu
aCBcCiAJV2ViQ29yZS9icmlkZ2UvbnBydW50aW1lX2ltcGwuaCBcCiAJV2ViQ29yZS9icmlkZ2Uv
bnBydW50aW1lX2ludGVybmFsLmggXAogCVdlYkNvcmUvYnJpZGdlL25wcnVudGltZV9wcml2Lmgg
XAotCVdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3BwIFwKIAlXZWJDb3JlL2JyaWRnZS9ydW50aW1l
LmggXAogCVdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwKIAlXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1MzI1OSkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBJTkNMVURFUEFUSCA9
IFwKICAgICAkJFBXRC9iaW5kaW5ncy9qcyBcCiAgICAgJCRQV0QvYnJpZGdlIFwKICAgICAkJFBX
RC9icmlkZ2UvYyBcCisgICAgJCRQV0QvYnJpZGdlL2pzYyBcCiAgICAgJCRQV0QvY3NzIFwKICAg
ICAkJFBXRC9kb20gXAogICAgICQkUFdEL2RvbS9kZWZhdWx0IFwKQEAgLTM0MSw3ICszNDIsNiBA
QCBTT1VSQ0VTICs9IFwKICAgICBicmlkZ2UvTlBfanNvYmplY3QuY3BwIFwKICAgICBicmlkZ2Uv
bnBydW50aW1lLmNwcCBcCiAgICAgYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwKLSAgICBicmlk
Z2UvcnVudGltZS5jcHAgXAogICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgXAogICAgIGJy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAgXAogICAgIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIFwK
QEAgLTM0OSw2ICszNDksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBicmlkZ2UvYy9jX2luc3RhbmNl
LmNwcCBcCiAgICAgYnJpZGdlL2MvY19ydW50aW1lLmNwcCBcCiAgICAgYnJpZGdlL2MvY191dGls
aXR5LmNwcCBcCisgICAgYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHAgXAogICAgIGNzcy9DU1NC
b3JkZXJJbWFnZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBcCiAgICAg
Y3NzL0NTU0NoYXJzZXRSdWxlLmNwcCBcCkBAIC0xMDI5LDYgKzEwMzAsNyBAQCBIRUFERVJTICs9
IFwKICAgICBicmlkZ2UvYy9jX3J1bnRpbWUuaCBcCiAgICAgYnJpZGdlL2MvY191dGlsaXR5Lmgg
XAogICAgIGJyaWRnZS9JZGVudGlmaWVyUmVwLmggXAorICAgIGJyaWRnZS9qc2MvcnVudGltZV9q
c2MuaCBcCiAgICAgYnJpZGdlL05QX2pzb2JqZWN0LmggXAogICAgIGJyaWRnZS9ucHJ1bnRpbWUu
aCBcCiAgICAgYnJpZGdlL3F0L3F0X2NsYXNzLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291
cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlz
aW9uIDUzMjU5KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkK
QEAgLTE3MSw4ICsxNzEsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlCiAgICAgICAgIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCiAgICAgICAgIGJyaWRnZS9jL2Nf
cnVudGltZS5jcHAKICAgICAgICAgYnJpZGdlL2MvY191dGlsaXR5LmNwcAorICAgICAgICBicmlk
Z2UvanNjL3J1bnRpbWVfanNjLmNwcAogICAgICAgICBicmlkZ2UvbnBydW50aW1lLmNwcAotICAg
ICAgICBicmlkZ2UvcnVudGltZS5jcHAKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CiAgICAgICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKICAgICAgICAgYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDUzMjU5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw3ICszMzIsNiBAQAogCQkxQTU2OUQx
OTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFQTBEN0UyQjgyMDA3QzM5ODMgLyogb2Jq
Y191dGlsaXR5LmggKi87IH07CiAJCTFBNTY5RDFBMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX3V0
aWxpdHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTU2OUNFQjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5Lm1tICovOyB9OwogCQkxQTU2
OUQxQjBEN0UyQjgyMDA3QzM5ODMgLyogV2ViU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFQzBEN0UyQjgyMDA3QzM5ODMg
LyogV2ViU2NyaXB0T2JqZWN0LmggKi87IH07Ci0JCTFBNTY5RDFDMEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBNTY5Q0VEMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lLmNwcCAqLzsgfTsKIAkJMUE1
NjlEMUQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0VFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50
aW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRUYwRDdFMkI4MjAwN0Mz
OTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovOyB9OwogCQkxQTU2OUQxRjBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZV9hcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAq
LzsgfTsKQEAgLTExMTMsNiArMTExMiw4IEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4MzJBMCAv
KiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJM
aWJ4bWwyLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1OTcwREIyNDEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9qc2MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk3MERCMjIx
MEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmNwcCAqLzsgfTsKKwkJNTk3MERCMjUxMEZE
RjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTcwREIyMzEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9q
c2MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
OTlEMUUzMjEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUzMDEwQzk3RDZF
MDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi87IH07CiAJCTU5OUQxRTMzMTBD
OTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyog
am5pX3V0aWxpdHlfcHJpdmF0ZS5oICovOyB9OwogCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQg
LyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5jcHAgKi87IH07CkBAIC01NTc3LDcgKzU1NzgsNiBAQAogCQkxQTU2OUNF
QTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IG9iamNfdXRpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTU2OUNFQjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGlsaXR5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gb2JqY191dGlsaXR5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTU2OUNFQzBEN0UyQjgyMDA3QzM5ODMgLyogV2ViU2NyaXB0
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTU2OUNFRDBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBy
dW50aW1lLmNwcDsgcGF0aCA9IGJyaWRnZS9ydW50aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE1NjlDRUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZS5oOyBwYXRoID0gYnJpZGdlL3J1bnRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDRUYwRDdFMkI4MjAwN0Mz
OTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gcnVudGltZV9hcnJheS5jcHA7IHBhdGggPSBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0YwMEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX2FycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ1bnRp
bWVfYXJyYXkuaDsgcGF0aCA9IGJyaWRnZS9ydW50aW1lX2FycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NDYzLDYgKzY0NjMsOCBAQAogCQk1NEM1MEY3QTBFODAxREYzMDA5
ODMyQTAgLyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OworCQk1OTcwREIyMjEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9q
c2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcnVudGltZV9qc2Mu
Y3BwOyBwYXRoID0gYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU5NzBEQjIzMTBGREY4MjkwMEQ0RTJEMyAvKiBydW50aW1lX2pzYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1lX2pzYy5oOyBwYXRoID0gYnJp
ZGdlL2pzYy9ydW50aW1lX2pzYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlE
MUUzMDEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcDsgcGF0
aCA9IGpzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTk5RDFFMzExMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gam5pX3V0aWxpdHlfcHJpdmF0ZS5oOyBw
YXRoID0ganNjL2puaV91dGlsaXR5X3ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHA7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyOTQsNiArMTAyOTYsNyBAQAogCQkxQTU2OUND
NDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1OTcwREIyMTEwRkRGODBCMDBENEUyRDMgLyoganNjICovLAog
CQkJCTFBNTY5Q0M1MEQ3RTJCODIwMDdDMzk4MyAvKiBjICovLAogCQkJCTFBNTY5Q0NFMEQ3RTJC
ODIwMDdDMzk4MyAvKiBqbmkgKi8sCiAJCQkJMUE1NjlDRTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9i
amMgKi8sCkBAIC0xMDMwNyw3ICsxMDMxMCw2IEBACiAJCQkJMUE1NjlDREYwRDdFMkI4MjAwN0Mz
OTgzIC8qIG5wcnVudGltZV9pbXBsLmggKi8sCiAJCQkJMUE1NjlDRTAwRDdFMkI4MjAwN0MzOTgz
IC8qIG5wcnVudGltZV9pbnRlcm5hbC5oICovLAogCQkJCTFBNTY5Q0UxMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfcHJpdi5oICovLAotCQkJCTFBNTY5Q0VEMEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lLmNwcCAqLywKIAkJCQkxQTU2OUNFRTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZS5oICovLAogCQkJCTFBNTY5Q0VGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNw
cCAqLywKIAkJCQkxQTU2OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oICov
LApAQCAtMTEwNTQsNiArMTEwNTYsMTUgQEAKIAkJCXBhdGggPSB3ZWJzb2NrZXRzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTk3MERCMjExMEZERjgwQjAwRDRFMkQzIC8q
IGpzYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTk3
MERCMjIxMEZERjgyOTAwRDRFMkQzIC8qIHJ1bnRpbWVfanNjLmNwcCAqLywKKwkJCQk1OTcwREIy
MzEwRkRGODI5MDBENEUyRDMgLyogcnVudGltZV9qc2MuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
anNjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTk5RDFFMkYxMEM5N0Q0
QzAwRTBFRjEyIC8qIGpzYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xODM0OSw2ICsxODM2MCw3IEBACiAJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlD
IC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFB
RjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk3MERCMjUxMEZERjgyOTAwRDRFMkQzIC8qIHJ1
bnRpbWVfanNjLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMDMxLDcgKzIwMDQzLDYgQEAKIAkJCQlB
OENGRjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUU5MTFDODBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNjNBMjQ5MEY3MTY0NjYwMEMwOUQ1QSAvKiBS
dW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTU2OUQxQzBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxRTBEN0UyQjgy
MDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
MDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjA1MTMsNiArMjA1MjQsNyBAQAogCQkJCTZFNEU5MUFDMTBGN0ZCMzEwMEEy
Nzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
RTRFOTFBRTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5NzBEQjI0MTBGREY4MjkwMEQ0
RTJEMyAvKiBydW50aW1lX2pzYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYnJp
ZGdlL3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3Bw
CShyZXZpc2lvbiA1MzI1OSkKKysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgInJ1bnRpbWUuaCIKLQotI2luY2x1ZGUgInJ1bnRpbWVfb2Jq
ZWN0LmgiCi0jaW5jbHVkZSAicnVudGltZV9yb290LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KLQotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgInF0X2luc3RhbmNlLmgiCi0jZW5k
aWYKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7Ci0KLUFycmF5OjpBcnJh
eShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCi0gICAgOiBfcm9vdE9iamVjdChy
b290T2JqZWN0KQotewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci19Ci0KLUFycmF5Ojp+QXJy
YXkoKQotewotfQotCi1JbnN0YW5jZTo6SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0KQotICAgIDogX3Jvb3RPYmplY3Qocm9vdE9iamVjdCkKLSAgICAsIG1fcnVudGlt
ZU9iamVjdCgwKQotewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7Ci19Ci0KLUluc3RhbmNlOjp+
SW5zdGFuY2UoKQotewotICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0KTsKLX0KLQotc3RhdGlj
IEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKLQotdm9pZCBJ
bnN0YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBm
dW5jKQotewotICAgIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uID0gZnVuYzsKLX0KLQotS0pTRGlkRXhl
Y3V0ZUZ1bmN0aW9uUHRyIEluc3RhbmNlOjpkaWRFeGVjdXRlRnVuY3Rpb24oKQotewotICAgIHJl
dHVybiBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKLX0KLQotdm9pZCBJbnN0YW5jZTo6YmVnaW4oKQot
ewotICAgIHZpcnR1YWxCZWdpbigpOwotfQotCi12b2lkIEluc3RhbmNlOjplbmQoKQotewotICAg
IHZpcnR1YWxFbmQoKTsKLX0KLQotUnVudGltZU9iamVjdEltcCogSW5zdGFuY2U6OmNyZWF0ZVJ1
bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEFTU0VSVChfcm9vdE9iamVjdCk7
Ci0gICAgQVNTRVJUKF9yb290T2JqZWN0LT5pc1ZhbGlkKCkpOwotICAgIGlmIChtX3J1bnRpbWVP
YmplY3QpCi0gICAgICAgIHJldHVybiBtX3J1bnRpbWVPYmplY3Q7Ci0gICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBtX3J1bnRpbWVPYmplY3QgPSBuZXdSdW50aW1l
T2JqZWN0KGV4ZWMpOwotICAgIF9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KG1fcnVudGlt
ZU9iamVjdCk7Ci0gICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsKLX0KLQotUnVudGltZU9iamVj
dEltcCogSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgcmV0dXJuIG5ldyAoZXhl
YykgUnVudGltZU9iamVjdEltcChleGVjLCB0aGlzKTsKLX0KLQotdm9pZCBJbnN0YW5jZTo6d2ls
bERlc3Ryb3lSdW50aW1lT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQoX3Jvb3RPYmplY3QpOwotICAg
IEFTU0VSVChfcm9vdE9iamVjdC0+aXNWYWxpZCgpKTsKLSAgICBBU1NFUlQobV9ydW50aW1lT2Jq
ZWN0KTsKLSAgICBfcm9vdE9iamVjdC0+cmVtb3ZlUnVudGltZU9iamVjdChtX3J1bnRpbWVPYmpl
Y3QpOwotICAgIG1fcnVudGltZU9iamVjdCA9IDA7Ci19Ci0KLXZvaWQgSW5zdGFuY2U6OndpbGxJ
bnZhbGlkYXRlUnVudGltZU9iamVjdCgpCi17Ci0gICAgQVNTRVJUKG1fcnVudGltZU9iamVjdCk7
Ci0gICAgbV9ydW50aW1lT2JqZWN0ID0gMDsKLX0KLQotUm9vdE9iamVjdCogSW5zdGFuY2U6OnJv
b3RPYmplY3QoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIF9yb290T2JqZWN0ICYmIF9yb290T2Jq
ZWN0LT5pc1ZhbGlkKCkgPyBfcm9vdE9iamVjdC5nZXQoKSA6IDA7Ci19Ci0KLX0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCaW5kaW5ncwpJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuaAkocmV2aXNpb24gNTMyNTkpCisrKyBX
ZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDM1ICsyNiwxNCBAQAogI2lmbmRlZiBKQVZBU0NSSVBUQ09SRV9CSU5ESU5HU19S
VU5USU1FX0gKICNkZWZpbmUgSkFWQVNDUklQVENPUkVfQklORElOR1NfUlVOVElNRV9ICiAKLSNp
bmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpZiBV
U0UoSlNDKQorI2luY2x1ZGUgInJ1bnRpbWVfanNjLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIEpT
QyAgewogCi1jbGFzcyBBcmdMaXN0OwotY2xhc3MgSWRlbnRpZmllcjsKLWNsYXNzIEpTR2xvYmFs
T2JqZWN0OwotY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7Ci1jbGFzcyBSdW50aW1lT2JqZWN0SW1w
OwotCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1jbGFzcyBJbnN0YW5jZTsKLWNsYXNzIE1ldGhv
ZDsKLWNsYXNzIFJvb3RPYmplY3Q7Ci0KLXR5cGVkZWYgVmVjdG9yPE1ldGhvZCo+IE1ldGhvZExp
c3Q7Ci0KLWNsYXNzIEZpZWxkIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5j
ZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgfkZpZWxkKCkgeyB9Ci19Owot
CiBjbGFzcyBNZXRob2QgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHZpcnR1
YWwgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCA9IDA7CkBAIC02Miw5MCArNDEsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TWV0aG9kKCkgeyB9CiB9OwogCi1jbGFzcyBDbGFzcyA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNO
YW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBGaWVsZCogZmllbGROYW1lZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3Rh
bmNlKiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KLQotICAg
IHZpcnR1YWwgfkNsYXNzKCkgeyB9Ci19OwotCi10eXBlZGVmIHZvaWQgKCpLSlNEaWRFeGVjdXRl
RnVuY3Rpb25QdHIpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiByb290T2JqZWN0KTsKLQotY2xhc3Mg
SW5zdGFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnN0YW5jZT4gewotcHVibGljOgotICAgIElu
c3RhbmNlKFBhc3NSZWZQdHI8Um9vdE9iamVjdD4pOwotCi0gICAgc3RhdGljIHZvaWQgc2V0RGlk
RXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKLSAgICBzdGF0
aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbigpOwotCi0gICAg
Ly8gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFpbiBl
bnRyeSBwb2ludHMgaW50bwotICAgIC8vIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25zLiAgVGhl
eSBjYW4gYmUgdXNlZCB0byBlc3RhYmxpc2ggYW5kIGNsZWFudXAKLSAgICAvLyBhbnkgbmVlZGVk
IHN0YXRlLgotICAgIHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGVuZCgpOwotICAgIAotICAgIHZp
cnR1YWwgQ2xhc3MqIGdldENsYXNzKCkgY29uc3QgPSAwOwotICAgIFJ1bnRpbWVPYmplY3RJbXAq
IGNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7Ci0gICAgdm9pZCB3aWxsSW52YWxpZGF0
ZVJ1bnRpbWVPYmplY3QoKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95UnVudGltZU9iamVjdCgpOwot
ICAgIAotICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHZhbHVlIHdhcyBub3Qgc2V0IHN1Y2Nl
c3NmdWxseS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBjb25zdCBNZXRob2RM
aXN0JiwgY29uc3QgQXJnTGlzdCYgYXJncykgPSAwOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlz
dCYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNDb25zdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgSlNW
YWx1ZSBpbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJu
IEpTVmFsdWUoKTsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JikgeyB9Ci0KLSAgICB2aXJ0dWFsIEpTVmFsdWUg
ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0ID0g
MDsKLSAgICAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0ID0gMDsKLSAgICAKLSAgICBSb290T2JqZWN0KiByb290T2JqZWN0KCkgY29uc3Q7Ci0gICAg
Ci0gICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKSB7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFs
QmVnaW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEVuZCgpIHsgfQotICAgIHZpcnR1
YWwgUnVudGltZU9iamVjdEltcCogbmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqKTsKLQotICAg
IFJlZlB0cjxSb290T2JqZWN0PiBfcm9vdE9iamVjdDsKLQotcHJpdmF0ZToKLSAgICBSdW50aW1l
T2JqZWN0SW1wKiBtX3J1bnRpbWVPYmplY3Q7Ci19OwotCi1jbGFzcyBBcnJheSA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgQXJyYXkoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7
Ci0gICAgdmlydHVhbCB+QXJyYXkoKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
dChFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIEpTVmFsdWUgdmFsdWVBdChFeGVjU3RhdGUgKiwgdW5zaWduZWQgaW5kZXgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdCA9IDA7Ci0K
LXByb3RlY3RlZDoKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gX3Jvb3RPYmplY3Q7Ci19OwotCi1j
b25zdCBjaGFyICpzaWduYXR1cmVGb3JQYXJhbWV0ZXJzKGNvbnN0IEFyZ0xpc3QmKTsKLQotdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlz
dE1hcDsKLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0
aG9kTWFwOyAKLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmllbGQqPiBG
aWVsZE1hcDsgCi0gICAgCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gNTMyNTkpCisrKyBX
ZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyAr
MTM4LDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdAogICAgIGZv
ciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUoJmNBcmdzW2ldKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJp
YW50VG9WYWx1ZShleGVjLCAmcmVzdWx0VmFyaWFudCwgX3Jvb3RPYmplY3QuZ2V0KCkpOworICAg
IEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCAmcmVz
dWx0VmFyaWFudCwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICBfTlBOX1JlbGVhc2VWYXJpYW50
VmFsdWUoJnJlc3VsdFZhcmlhbnQpOwogICAgIHJldHVybiByZXN1bHRWYWx1ZTsKIH0KQEAgLTE3
Myw3ICsxNzMsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFCiAg
ICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlh
bnRWYWx1ZSgmY0FyZ3NbaV0pOwogCi0gICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnRO
UFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBfcm9vdE9iamVjdC5nZXQoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMs
ICZyZXN1bHRWYXJpYW50LCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZh
cmlhbnRWYWx1ZSgmcmVzdWx0VmFyaWFudCk7CiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQpA
QCAtMjEyLDcgKzIxMiw3IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhl
Y1MKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNl
VmFyaWFudFZhbHVlKCZjQXJnc1tpXSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gY29u
dmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywgJnJlc3VsdFZhcmlhbnQsIF9yb290T2JqZWN0Lmdl
dCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUo
ZXhlYywgJnJlc3VsdFZhcmlhbnQsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgX05QTl9SZWxl
YXNlVmFyaWFudFZhbHVlKCZyZXN1bHRWYXJpYW50KTsKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7
CiB9CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAJKHJldmlzaW9uIDUzMjU5KQor
KysgV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc5LDcgKzM3OSw3IEBAIEphdmFBcnJheTo6SmF2YUFycmF5KGpvYmplY3QgYXJyYXksIGNvbnMK
ICAgICBKTklFbnYgKmVudiA9IGdldEpOSUVudigpOwogICAgIF9sZW5ndGggPSBlbnYtPkdldEFy
cmF5TGVuZ3RoKChqYXJyYXkpX2FycmF5LT5faW5zdGFuY2UpOwogICAgIF90eXBlID0gc3RyZHVw
KHR5cGUpOwotICAgIF9yb290T2JqZWN0ID0gcm9vdE9iamVjdDsKKyAgICBtX3Jvb3RPYmplY3Qg
PSByb290T2JqZWN0OwogfQogCiBKYXZhQXJyYXk6On5KYXZhQXJyYXkgKCkgCkBAIC0zODksNyAr
Mzg5LDcgQEAgSmF2YUFycmF5Ojp+SmF2YUFycmF5ICgpIAogCiBSb290T2JqZWN0KiBKYXZhQXJy
YXk6OnJvb3RPYmplY3QoKSBjb25zdCAKIHsgCi0gICAgcmV0dXJuIF9yb290T2JqZWN0ICYmIF9y
b290T2JqZWN0LT5pc1ZhbGlkKCkgPyBfcm9vdE9iamVjdC5nZXQoKSA6IDA7CisgICAgcmV0dXJu
IG1fcm9vdE9iamVjdCAmJiBtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSA/IG1fcm9vdE9iamVjdC5n
ZXQoKSA6IDA7CiB9CiAKIHZvaWQgSmF2YUFycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBjb25zdApJbmRleDogV2ViQ29yZS9i
cmlkZ2UvanNjL3J1bnRpbWVfanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9q
c2MvcnVudGltZV9qc2MuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlkZ2UvanNjL3J1
bnRpbWVfanNjLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJydW50aW1lX2pzYy5oIgor
CisjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKKyNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVk
ZSAicXRfaW5zdGFuY2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEJp
bmRpbmdzIHsKKworQXJyYXk6OkFycmF5KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVj
dCkKKyAgICA6IG1fcm9vdE9iamVjdChyb290T2JqZWN0KQoreworICAgIEFTU0VSVChtX3Jvb3RP
YmplY3QpOworfQorCitBcnJheTo6fkFycmF5KCkKK3sKK30KKworSW5zdGFuY2U6Okluc3RhbmNl
KFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKKyAgICA6IG1fcm9vdE9iamVjdChy
b290T2JqZWN0KQorICAgICwgbV9ydW50aW1lT2JqZWN0KDApCit7CisgICAgQVNTRVJUKG1fcm9v
dE9iamVjdCk7Cit9CisKK0luc3RhbmNlOjp+SW5zdGFuY2UoKQoreworICAgIEFTU0VSVCghbV9y
dW50aW1lT2JqZWN0KTsKK30KKworc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2Rp
ZEV4ZWN1dGVGdW5jdGlvbjsKKwordm9pZCBJbnN0YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9u
KEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKQoreworICAgIHNfZGlkRXhlY3V0ZUZ1bmN0
aW9uID0gZnVuYzsKK30KKworS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIEluc3RhbmNlOjpkaWRF
eGVjdXRlRnVuY3Rpb24oKQoreworICAgIHJldHVybiBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKK30K
Kwordm9pZCBJbnN0YW5jZTo6YmVnaW4oKQoreworICAgIHZpcnR1YWxCZWdpbigpOworfQorCit2
b2lkIEluc3RhbmNlOjplbmQoKQoreworICAgIHZpcnR1YWxFbmQoKTsKK30KKworUnVudGltZU9i
amVjdEltcCogSW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOworICAgIEFTU0VSVChtX3Jvb3RPYmplY3QtPmlz
VmFsaWQoKSk7CisgICAgaWYgKG1fcnVudGltZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fcnVu
dGltZU9iamVjdDsKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAg
IG1fcnVudGltZU9iamVjdCA9IG5ld1J1bnRpbWVPYmplY3QoZXhlYyk7CisgICAgbV9yb290T2Jq
ZWN0LT5hZGRSdW50aW1lT2JqZWN0KG1fcnVudGltZU9iamVjdCk7CisgICAgcmV0dXJuIG1fcnVu
dGltZU9iamVjdDsKK30KKworUnVudGltZU9iamVjdEltcCogSW5zdGFuY2U6Om5ld1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgUnVudGltZU9iamVjdEltcChleGVjLCB0
aGlzKTsKK30KKwordm9pZCBJbnN0YW5jZTo6d2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KCkKK3sK
KyAgICBBU1NFUlQobV9yb290T2JqZWN0KTsKKyAgICBBU1NFUlQobV9yb290T2JqZWN0LT5pc1Zh
bGlkKCkpOworICAgIEFTU0VSVChtX3J1bnRpbWVPYmplY3QpOworICAgIG1fcm9vdE9iamVjdC0+
cmVtb3ZlUnVudGltZU9iamVjdChtX3J1bnRpbWVPYmplY3QpOworICAgIG1fcnVudGltZU9iamVj
dCA9IDA7Cit9CisKK3ZvaWQgSW5zdGFuY2U6OndpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgp
Cit7CisgICAgQVNTRVJUKG1fcnVudGltZU9iamVjdCk7CisgICAgbV9ydW50aW1lT2JqZWN0ID0g
MDsKK30KKworUm9vdE9iamVjdCogSW5zdGFuY2U6OnJvb3RPYmplY3QoKSBjb25zdAoreworICAg
IHJldHVybiBtX3Jvb3RPYmplY3QgJiYgbV9yb290T2JqZWN0LT5pc1ZhbGlkKCkgPyBtX3Jvb3RP
YmplY3QuZ2V0KCkgOiAwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QmluZGluZ3MKSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYnJpZGdlL2pzYy9ydW50aW1lX2pzYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlk
Z2UvanNjL3J1bnRpbWVfanNjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIHJ1bnRpbWVfanNjX2gKKyNkZWZpbmUgcnVudGltZV9q
c2NfaAorCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBKU0MgIHsKKworY2xhc3MgQXJnTGlzdDsKK2NsYXNzIElkZW50aWZp
ZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFByb3BlcnR5TmFtZUFycmF5OworY2xh
c3MgUnVudGltZU9iamVjdEltcDsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKKworY2xhc3MgSW5z
dGFuY2U7CitjbGFzcyBNZXRob2Q7CitjbGFzcyBSb290T2JqZWN0OworCit0eXBlZGVmIFZlY3Rv
cjxNZXRob2QqPiBNZXRob2RMaXN0OworCitjbGFzcyBGaWVsZCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNl
KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0
YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IH5GaWVsZCgpIHsgfQorfTsKKworY2xhc3MgQ2xhc3MgOiBwdWJsaWMgTm9uY29weWFibGUgewor
cHVibGljOgorICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFtZWQoY29uc3QgSWRlbnRp
ZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRmllbGQqIGZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmllciYsIEluc3RhbmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
SlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIGNvbnN0IElkZW50
aWZpZXImKSB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CisKKyAgICB2aXJ0dWFsIH5DbGFzcygp
IHsgfQorfTsKKwordHlwZWRlZiB2b2lkICgqS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyKShFeGVj
U3RhdGUqLCBKU09iamVjdCogcm9vdE9iamVjdCk7CisKK2NsYXNzIEluc3RhbmNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKK3B1YmxpYzoKKyAgICBJbnN0YW5jZShQYXNzUmVmUHRy
PFJvb3RPYmplY3Q+KTsKKworICAgIHN0YXRpYyB2b2lkIHNldERpZEV4ZWN1dGVGdW5jdGlvbihL
SlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgZnVuYyk7CisgICAgc3RhdGljIEtKU0RpZEV4ZWN1dGVG
dW5jdGlvblB0ciBkaWRFeGVjdXRlRnVuY3Rpb24oKTsKKworICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBhcmUgY2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1haW4gZW50cnkgcG9pbnRzIGludG8K
KyAgICAvLyB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9ucy4gIFRoZXkgY2FuIGJlIHVzZWQgdG8g
ZXN0YWJsaXNoIGFuZCBjbGVhbnVwCisgICAgLy8gYW55IG5lZWRlZCBzdGF0ZS4KKyAgICB2b2lk
IGJlZ2luKCk7CisgICAgdm9pZCBlbmQoKTsKKworICAgIHZpcnR1YWwgQ2xhc3MqIGdldENsYXNz
KCkgY29uc3QgPSAwOworICAgIFJ1bnRpbWVPYmplY3RJbXAqIGNyZWF0ZVJ1bnRpbWVPYmplY3Qo
RXhlY1N0YXRlKik7CisgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKTsKKyAg
ICB2b2lkIHdpbGxEZXN0cm95UnVudGltZU9iamVjdCgpOworCisgICAgLy8gUmV0dXJucyBmYWxz
ZSBpZiB0aGUgdmFsdWUgd2FzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5LgorICAgIHZpcnR1YWwgYm9v
bCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IE1ldGhvZExpc3QmLCBjb25zdCBBcmdMaXN0JiBhcmdz
KSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVs
dE1ldGhvZChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JikgeyByZXR1cm4ganNVbmRlZmluZWQo
KTsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlQ29uc3RydWN0KEV4ZWNTdGF0
ZSosIGNvbnN0IEFyZ0xpc3QmKSB7IHJldHVybiBKU1ZhbHVlKCk7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JikgeyB9
CisKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QgPSAwOworCisgICAgUm9vdE9iamVjdCogcm9vdE9iamVj
dCgpIGNvbnN0OworCisgICAgdmlydHVhbCB+SW5zdGFuY2UoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIHB1dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
dm9pZCB2aXJ0dWFsQmVnaW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEVuZCgpIHsg
fQorICAgIHZpcnR1YWwgUnVudGltZU9iamVjdEltcCogbmV3UnVudGltZU9iamVjdChFeGVjU3Rh
dGUqKTsKKworICAgIFJlZlB0cjxSb290T2JqZWN0PiBtX3Jvb3RPYmplY3Q7CisKK3ByaXZhdGU6
CisgICAgUnVudGltZU9iamVjdEltcCogbV9ydW50aW1lT2JqZWN0OworfTsKKworY2xhc3MgQXJy
YXkgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEFycmF5KFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4pOworICAgIHZpcnR1YWwgfkFycmF5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Qg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IG1fcm9vdE9iamVjdDsK
K307CisKK2NvbnN0IGNoYXIqIHNpZ25hdHVyZUZvclBhcmFtZXRlcnMoY29uc3QgQXJnTGlzdCYp
OworCit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhvZExpc3QqPiBN
ZXRob2RMaXN0TWFwOwordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRo
b2QqPiBNZXRob2RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIEZp
ZWxkKj4gRmllbGRNYXA7CisKK30gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gcnVudGltZV9qc2NfaApJbmRleDogV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gNTMyNTkpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBKU1Zh
bHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTCiAKICAgICBpZiAoKnR5cGUgIT0g
J3YnKSB7CiAgICAgICAgIFtpbnZvY2F0aW9uIGdldFJldHVyblZhbHVlOmJ1ZmZlcl07Ci0gICAg
ICAgIHJlc3VsdCA9IGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsIGJ1ZmZlciwgb2JqY1Zh
bHVlVHlwZSwgX3Jvb3RPYmplY3QuZ2V0KCkpOworICAgICAgICByZXN1bHQgPSBjb252ZXJ0T2Jq
Y1ZhbHVlVG9WYWx1ZShleGVjLCBidWZmZXIsIG9iamNWYWx1ZVR5cGUsIG1fcm9vdE9iamVjdC5n
ZXQoKSk7CiAgICAgfQogfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiB9
CkBAIC0zMjksNyArMzI5LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZURlZmF1bHRN
ZXRobwogICAgIC8vIE9LIHdpdGggMzIgaGVyZS4KICAgICBjaGFyIGJ1ZmZlclszMl07CiAgICAg
W2ludm9jYXRpb24gZ2V0UmV0dXJuVmFsdWU6YnVmZmVyXTsKLSAgICByZXN1bHQgPSBjb252ZXJ0
T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCBidWZmZXIsIG9iamNWYWx1ZVR5cGUsIF9yb290T2JqZWN0
LmdldCgpKTsKKyAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVjLCBidWZm
ZXIsIG9iamNWYWx1ZVR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiB9IEBjYXRjaChOU0V4Y2Vw
dGlvbiogbG9jYWxFeGNlcHRpb24pIHsKIH0KICAgICBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVj
U3RhdGUoZXhlYyk7CkBAIC0zODMsNyArMzgzLDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZQogICAgIAogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGlkIG9i
amNWYWx1ZSA9IFt0YXJnZXRPYmplY3QgdmFsdWVGb3JVbmRlZmluZWRLZXk6W05TU3RyaW5nIHN0
cmluZ1dpdGhDU3RyaW5nOnByb3BlcnR5LmFzY2lpKCkgZW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0Vu
Y29kaW5nXV07Ci0gICAgICAgICAgICByZXN1bHQgPSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShl
eGVjLCAmb2JqY1ZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgX3Jvb3RPYmplY3QuZ2V0KCkpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJm9iamNWYWx1
ZSwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0gQGNhdGNo
KE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gRG8gbm90aGlu
Zy4gIENsYXNzIGRpZCBub3Qgb3ZlcnJpZGUgdmFsdWVGb3JVbmRlZmluZWRLZXk6LgogICAgICAg
ICB9CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gNTMyNTkp
CisrKyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTc0LDcgKzE3NCw3IEBAIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSog
ZXgKICAgICBAdHJ5IHsKICAgICAgICAgaWQgb2JqID0gW19hcnJheS5nZXQoKSBvYmplY3RBdElu
ZGV4OmluZGV4XTsKICAgICAgICAgaWYgKG9iaikKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
T2JqY1ZhbHVlVG9WYWx1ZSAoZXhlYywgJm9iaiwgT2JqY09iamVjdFR5cGUsIF9yb290T2JqZWN0
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZSAoZXhl
YywgJm9iaiwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgfSBAY2F0
Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKTsKICAgICB9
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkocmV2aXNpb24gNTMyNTkpCisrKyBXZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0NCw3ICsx
NzQ0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFF0QXJyYXk8VD46On5RdEFycgogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gUm9vdE9iamVjdCogUXRBcnJheTxUPjo6cm9vdE9iamVjdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIF9yb290T2JqZWN0ICYmIF9yb290T2JqZWN0LT5pc1ZhbGlkKCkg
PyBfcm9vdE9iamVjdC5nZXQoKSA6IDA7CisgICAgcmV0dXJuIG1fcm9vdE9iamVjdCAmJiBtX3Jv
b3RPYmplY3QtPmlzVmFsaWQoKSA/IG1fcm9vdE9iamVjdC5nZXQoKSA6IDA7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIFF0QXJyYXk8VD46OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47023</attachid>
            <date>2010-01-20 07:08:13 -0800</date>
            <delta_ts>2010-01-20 22:49:46 -0800</delta_ts>
            <desc>Patch 4 for Bug 33589</desc>
            <filename>runtime4.txt</filename>
            <type>text/plain</type>
            <size>29284</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzU0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMjAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgYnJpZGdlIGludGVyZmFjZXMgRmllbGQsIENsYXNzLCBJbnN0YW5jZSBhbmQgQXJyYXkg
ZnJvbSBCcmlkZ2UgdG8gQnJpZGdlSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzU4OQorCisgICAgICAgIFRoZXNlIGludGVyZmFjZXMgdXNlIEpT
Qy1zcGVjaWZpYyB0eXBlcywgc28gYXJlIG1vdmVkIG91dCBvZiBCcmlkZ2UuaCB0byBhbGxvdyB0
aGUgZmlsZSB0bworICAgICAgICBiZSB1c2VkIHdpdGggYm90aCBKU0MgYW5kIFY4LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIEFuZHJvaWQu
anNjYmluZGluZ3MubWs6IE1vZGlmaWVkLiBSZW1vdmVkIEJyaWRnZS5jcHAgYW5kIGFkZGVkIEJy
aWRnZUpTQy5jcHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogTW9kaWZpZWQuIFJlbW92ZWQg
QnJpZGdlLmNwcCBhbmQgYWRkZWQgQnJpZGdlSlNDLltjcHB8aF0KKyAgICAgICAgKiBXZWJDb3Jl
LnBybzogTW9kaWZpZWQuIFJlbW92ZWQgQnJpZGdlLmNwcCBhbmQgYWRkZWQgQnJpZGdlSlNDLltj
cHB8aF0KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE1vZGlm
aWVkLiBSZW1vdmVkIEJyaWRnZS5jcHAgYW5kIGFkZGVkIEJyaWRnZUpTQy5bY3BwfGhdCisgICAg
ICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOiBNb2RpZmllZC4gUmVtb3ZlZCBCcmlkZ2UuY3BwIGFu
ZCBhZGRlZCBCcmlkZ2VKU0MuY3BwCisgICAgICAgICogYnJpZGdlL0JyaWRnZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnJpZGdlL0JyaWRnZS5oOiBNb2RmaWVkLiBNb3ZlZCBGaWVsZCwgQ2xh
c3MsIEluc3RhbmNlIGFuZCBBcnJheSBpbnRlcmZhY2VzIHRvIEJyaWRnZUpTQy5oCisgICAgICAg
ICogYnJpZGdlL2pzYzogQWRkZWQuCisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3Bw
OiBDb3BpZWQgZnJvbSBXZWJDb3JlL2JyaWRnZS9CcmlkZ2UuY3BwLgorICAgICAgICAqIGJyaWRn
ZS9qc2MvQnJpZGdlSlNDLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvYnJpZGdlL0JyaWRnZS5oLgor
CiAyMDEwLTAxLTIwICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUv
QW5kcm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQuanNj
YmluZGluZ3MubWsJKHJldmlzaW9uIDUzNTQxKQorKysgV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRp
bmdzLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBAIEJJTkRJTkdfQ19JTkNMVURF
UyA6PSBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2UvYyBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2Uv
am5pIFwKIAkkKExPQ0FMX1BBVEgpL2JyaWRnZS9qbmkvanNjIFwKKwkkKExPQ0FMX1BBVEgpL2Jy
aWRnZS9qc2MgXAogCVwKIAkkKEpBVkFTQ1JJUFRDT1JFX1BBVEgpL0FQSSBcCiAJJChKQVZBU0NS
SVBUQ09SRV9QQVRIKS9hc3NlbWJsZXIgXApAQCAtMTc3LDcgKzE3OCw2IEBAIExPQ0FMX1NSQ19G
SUxFUyArPSBcCiAJXAogCWJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBcCiAJXAot
CWJyaWRnZS9CcmlkZ2UuY3BwIFwKIAlicmlkZ2UvSWRlbnRpZmllclJlcC5jcHAgXAogCWJyaWRn
ZS9OUF9qc29iamVjdC5jcHAgXAogCWJyaWRnZS9jL2NfY2xhc3MuY3BwIFwKQEAgLTE4OSw2ICsx
ODksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQ
cml2YXRlLmNwcCBcCiAJYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcCBcCiAJYnJpZGdl
L2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBcCisJYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3Bw
IFwKIAlicmlkZ2UvbnBydW50aW1lLmNwcCBcCiAJYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwK
IAlicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNTM1NDEp
CisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3Zp
ZGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIFwKLQlX
ZWJDb3JlL2JyaWRnZS9CcmlkZ2UuY3BwIFwKIAlXZWJDb3JlL2JyaWRnZS9CcmlkZ2UuaCBcCiAJ
V2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAgXAogCVdlYkNvcmUvYnJpZGdlL0lkZW50
aWZpZXJSZXAuaCBcCkBAIC01MTcsNiArNTE2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX3J1bnRpbWUuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhQ2xhc3NKU0MuaCBcCiAJV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VK
U0MuaCBcCisJV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIFwKKwlXZWJDb3JlL2JyaWRn
ZS9qc2MvQnJpZGdlSlNDLmNwcCBcCiAJV2ViQ29yZS9icmlkZ2UvbnBhcGkuaCBcCiAJV2ViQ29y
ZS9icmlkZ2UvbnBydW50aW1lLmNwcCBcCiAJV2ViQ29yZS9icmlkZ2UvbnBydW50aW1lLmggXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
cHJvCShyZXZpc2lvbiA1MzU0MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29w
eSkKQEAgLTM0Myw3ICszNDMsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIFwKICAgICBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgXAotICAgIGJyaWRn
ZS9CcmlkZ2UuY3BwIFwKICAgICBicmlkZ2UvSWRlbnRpZmllclJlcC5jcHAgXAogICAgIGJyaWRn
ZS9OUF9qc29iamVjdC5jcHAgXAogICAgIGJyaWRnZS9ucHJ1bnRpbWUuY3BwIFwKQEAgLTM1NSw2
ICszNTQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBcCiAg
ICAgYnJpZGdlL2MvY19ydW50aW1lLmNwcCBcCiAgICAgYnJpZGdlL2MvY191dGlsaXR5LmNwcCBc
CisgICAgYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwIFwKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VW
YWx1ZS5jcHAgXAogICAgIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NDaGFy
c2V0UnVsZS5jcHAgXApAQCAtMTAzNSw2ICsxMDM1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYnJp
ZGdlL2MvY19pbnN0YW5jZS5oIFwKICAgICBicmlkZ2UvYy9jX3J1bnRpbWUuaCBcCiAgICAgYnJp
ZGdlL2MvY191dGlsaXR5LmggXAorICAgIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmggXAogICAgIGJy
aWRnZS9JZGVudGlmaWVyUmVwLmggXAogICAgIGJyaWRnZS9OUF9qc29iamVjdC5oIFwKICAgICBi
cmlkZ2UvbnBydW50aW1lLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDUzNTQxKQor
KysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTE2NSwxMyAr
MTY1LDEzIEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICA8
L3NldD4KIAogICAgIDxzZXQgYXBwZW5kPSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19CUklER0Ui
PgotICAgICAgICBicmlkZ2UvQnJpZGdlLmNwcAogICAgICAgICBicmlkZ2UvSWRlbnRpZmllclJl
cC5jcHAKICAgICAgICAgYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogICAgICAgICBicmlkZ2UvYy9j
X2NsYXNzLmNwcAogICAgICAgICBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcAogICAgICAgICBicmlk
Z2UvYy9jX3J1bnRpbWUuY3BwCiAgICAgICAgIGJyaWRnZS9jL2NfdXRpbGl0eS5jcHAKKyAgICAg
ICAgYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCiAgICAgICAgIGJyaWRnZS9ucHJ1bnRpbWUuY3Bw
CiAgICAgICAgIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcAogICAgICAgICBicmlkZ2UvcnVudGlt
ZV9tZXRob2QuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNTM1NDEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwOSw4ICsxMTA5LDkgQEAKIAkJNTRDNTBG
N0IwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgz
MkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBB
MEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5NUJGQkI0MTEwNzRFNTQwMEE1NjFD
QyAvKiBCcmlkZ2VKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5NUJGQkIzMTEwNzRFNTQwMEE1NjFDQyAvKiBCcmlkZ2VKU0MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1OTVCRkJCNjExMDc0RTYz
MDBBNTYxQ0MgLyogQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5NUJGQkI1MTEwNzRFNjMwMEE1NjFDQyAvKiBCcmlkZ2VKU0MuY3Bw
ICovOyB9OwogCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlFNzU4RjExMDU1QTFGMDBE
OTA0RkEgLyogQnJpZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTk5RTc1OTIxMTA1NUEyQTAwRDkwNEZBIC8qIEJyaWRnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlFNzU5MTExMDU1QTJB
MDBEOTA0RkEgLyogQnJpZGdlLmNwcCAqLzsgfTsKIAkJNTlBOUU3QjAxMTA0NzU4ODAwREZCNEMx
IC8qIEphdmFJbnN0YW5jZUpTQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUE5RTdBRjExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlND
LmNwcCAqLzsgfTsKIAkJNTlBOUU3QjIxMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpT
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOUU3
QjExMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpTQy5oICovOyB9OwogCQk1OUJDMzkz
RjExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlCQzM5M0UxMTA1NEExMzAwRkQ4NURCIC8qIEph
dmFTdHJpbmdKU0MuaCAqLzsgfTsKQEAgLTY0NzMsOCArNjQ3NCw5IEBACiAJCTU0QzUwRjdBMEU4
MDFERjMwMDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRva2VuaXplckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU5NUJGQkIzMTEwNzRFNTQwMEE1NjFDQyAvKiBC
cmlkZ2VKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnJpZGdlSlNDLmg7
IHBhdGggPSBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1OTVCRkJCNTExMDc0RTYzMDBBNTYxQ0MgLyogQnJpZGdlSlNDLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJyaWRnZUpTQy5jcHA7IHBhdGggPSBicmlkZ2Uv
anNjL0JyaWRnZUpTQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OUU3NThG
MTEwNTVBMUYwMEQ5MDRGQSAvKiBCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQnJpZGdlLmg7IHBhdGggPSBicmlkZ2UvQnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU5OUU3NTkxMTEwNTVBMkEwMEQ5MDRGQSAvKiBCcmlkZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQnJpZGdlLmNwcDsgcGF0aCA9IGJyaWRn
ZS9CcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OUE5RTdBRjExMDQ3
NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEphdmFJbnN0YW5jZUpTQy5jcHA7IHBhdGggPSBqc2MvSmF2YUluc3Rh
bmNlSlNDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlBOUU3QjExMTA0NzU5
NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpTQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKYXZhSW5zdGFuY2VKU0MuaDsgcGF0aCA9IGpzYy9KYXZhSW5zdGFuY2VKU0MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlCQzM5M0UxMTA1NEExMzAwRkQ4NURCIC8q
IEphdmFTdHJpbmdKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSmF2YVN0
cmluZ0pTQy5oOyBwYXRoID0ganNjL0phdmFTdHJpbmdKU0MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwMzIxLDcgKzEwMzIzLDcgQEAKIAkJMUE1NjlDQzQwRDdFMkI2MDAwN0Mz
OTgzIC8qIGJyaWRnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNTk5RTc1OTExMTA1NUEyQTAwRDkwNEZBIC8qIEJyaWRnZS5jcHAgKi8sCisJCQkJNTk1
QkZCQjIxMTA3NEU0MDAwQTU2MUNDIC8qIGpzYyAqLywKIAkJCQk1OTlFNzU4RjExMDU1QTFGMDBE
OTA0RkEgLyogQnJpZGdlLmggKi8sCiAJCQkJMUE1NjlDQzUwRDdFMkI4MjAwN0MzOTgzIC8qIGMg
Ki8sCiAJCQkJMUE1NjlDQ0UwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaSAqLywKQEAgLTExMDgzLDYg
KzExMDg1LDE1IEBACiAJCQlwYXRoID0gd2Vic29ja2V0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTU5NUJGQkIyMTEwNzRFNDAwMEE1NjFDQyAvKiBqc2MgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTU5NUJGQkI1MTEwNzRFNjMw
MEE1NjFDQyAvKiBCcmlkZ2VKU0MuY3BwICovLAorCQkJCTU5NUJGQkIzMTEwNzRFNTQwMEE1NjFD
QyAvKiBCcmlkZ2VKU0MuaCAqLywKKwkJCSk7CisJCQluYW1lID0ganNjOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTk5RDFFMkYxMEM5N0Q0QzAwRTBFRjEyIC8qIGpzYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODM5Nyw2ICsx
ODQwOCw3IEBACiAJCQkJNzZDREQyRjMxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjUxMTAzREE2NjAwNjgwNTIxIC8q
IEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJG
NzExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1OTVCRkJCNDExMDc0RTU0MDBBNTYxQ0MgLyogQnJpZGdlSlNDLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIwNTYxLDEyICsyMDU3MywxMiBAQAogCQkJCUUxNUEzNkQ5MTEwNDU3
MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5QTlFN0Iw
MTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTlFNTYwQTkxMTA1MzM2RjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1OTlFNzU5MjExMDU1QTJBMDBEOTA0RkEgLyogQnJpZGdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU5RUUxMjJDMTEwNjA4MDUwMDg4NTExNiAvKiBKTklVdGlsaXR5UHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OUVFMTIzMDExMDYwODFGMDA4ODUxMTYgLyogSk5J
VXRpbGl0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkNERDJGMjExMDNEQTY2MDA2ODA1MjEg
LyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2Q0REMkY0
MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3NkNERDJGNjExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1l
bnVMaXN0T3B0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5NUJGQkI2MTEwNzRFNjMwMEE1
NjFDQyAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9CcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL0JyaWRnZS5jcHAJKHJl
dmlzaW9uIDUzNTQxKQorKysgV2ViQ29yZS9icmlkZ2UvQnJpZGdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkJyaWRnZS5oIgotCi0jaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIK
LSNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgot
Ci0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKLSNlbmRpZgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEJpbmRpbmdzIHsKLQotQXJyYXk6OkFycmF5KFBh
c3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKLSAgICA6IG1fcm9vdE9iamVjdChyb290
T2JqZWN0KQotewotICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwotfQotCi1BcnJheTo6fkFycmF5
KCkKLXsKLX0KLQotSW5zdGFuY2U6Okluc3RhbmNlKFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9v
dE9iamVjdCkKLSAgICA6IG1fcm9vdE9iamVjdChyb290T2JqZWN0KQotICAgICwgbV9ydW50aW1l
T2JqZWN0KDApCi17Ci0gICAgQVNTRVJUKG1fcm9vdE9iamVjdCk7Ci19Ci0KLUluc3RhbmNlOjp+
SW5zdGFuY2UoKQotewotICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0KTsKLX0KLQotc3RhdGlj
IEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKLQotdm9pZCBJ
bnN0YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBm
dW5jKQotewotICAgIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uID0gZnVuYzsKLX0KLQotS0pTRGlkRXhl
Y3V0ZUZ1bmN0aW9uUHRyIEluc3RhbmNlOjpkaWRFeGVjdXRlRnVuY3Rpb24oKQotewotICAgIHJl
dHVybiBzX2RpZEV4ZWN1dGVGdW5jdGlvbjsKLX0KLQotdm9pZCBJbnN0YW5jZTo6YmVnaW4oKQot
ewotICAgIHZpcnR1YWxCZWdpbigpOwotfQotCi12b2lkIEluc3RhbmNlOjplbmQoKQotewotICAg
IHZpcnR1YWxFbmQoKTsKLX0KLQotUnVudGltZU9iamVjdEltcCogSW5zdGFuY2U6OmNyZWF0ZVJ1
bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEFTU0VSVChtX3Jvb3RPYmplY3Qp
OwotICAgIEFTU0VSVChtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSk7Ci0gICAgaWYgKG1fcnVudGlt
ZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsKLSAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIG1fcnVudGltZU9iamVjdCA9IG5ld1J1bnRp
bWVPYmplY3QoZXhlYyk7Ci0gICAgbV9yb290T2JqZWN0LT5hZGRSdW50aW1lT2JqZWN0KG1fcnVu
dGltZU9iamVjdCk7Ci0gICAgcmV0dXJuIG1fcnVudGltZU9iamVjdDsKLX0KLQotUnVudGltZU9i
amVjdEltcCogSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgcmV0dXJuIG5ldyAo
ZXhlYylSdW50aW1lT2JqZWN0SW1wKGV4ZWMsIHRoaXMpOwotfQotCi12b2lkIEluc3RhbmNlOjp3
aWxsRGVzdHJveVJ1bnRpbWVPYmplY3QoKQotewotICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwot
ICAgIEFTU0VSVChtX3Jvb3RPYmplY3QtPmlzVmFsaWQoKSk7Ci0gICAgQVNTRVJUKG1fcnVudGlt
ZU9iamVjdCk7Ci0gICAgbV9yb290T2JqZWN0LT5yZW1vdmVSdW50aW1lT2JqZWN0KG1fcnVudGlt
ZU9iamVjdCk7Ci0gICAgbV9ydW50aW1lT2JqZWN0ID0gMDsKLX0KLQotdm9pZCBJbnN0YW5jZTo6
d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKLXsKLSAgICBBU1NFUlQobV9ydW50aW1lT2Jq
ZWN0KTsKLSAgICBtX3J1bnRpbWVPYmplY3QgPSAwOwotfQotCi1Sb290T2JqZWN0KiBJbnN0YW5j
ZTo6cm9vdE9iamVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcm9vdE9iamVjdCAmJiBtX3Jv
b3RPYmplY3QtPmlzVmFsaWQoKSA/IG1fcm9vdE9iamVjdC5nZXQoKSA6IDA7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEJpbmRpbmdzCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogV2ViQ29yZS9i
cmlkZ2UvQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvQnJpZGdlLmgJKHJl
dmlzaW9uIDUzNTQxKQorKysgV2ViQ29yZS9icmlkZ2UvQnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1ICsyNiwxNCBAQAogI2lmbmRlZiBCcmlkZ2Vf
aAogI2RlZmluZSBCcmlkZ2VfaAogCi0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaWYgVVNFKEpTQykKKyNpbmNsdWRlICJCcmlkZ2VKU0MuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDICB7CiAKLWNsYXNzIEFyZ0xpc3Q7Ci1jbGFzcyBJZGVu
dGlmaWVyOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci1jbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsK
LWNsYXNzIFJ1bnRpbWVPYmplY3RJbXA7Ci0KIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWNsYXNz
IEluc3RhbmNlOwotY2xhc3MgTWV0aG9kOwotY2xhc3MgUm9vdE9iamVjdDsKLQotdHlwZWRlZiBW
ZWN0b3I8TWV0aG9kKj4gTWV0aG9kTGlzdDsKLQotY2xhc3MgRmllbGQgewotcHVibGljOgotICAg
IHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0
YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwotCi0gICAgdmly
dHVhbCB+RmllbGQoKSB7IH0KLX07Ci0KIGNsYXNzIE1ldGhvZCA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0ID0gMDsK
QEAgLTYyLDkwICs0MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZXRob2QoKSB7IH0KIH07
CiAKLWNsYXNzIENsYXNzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIE1ldGhvZExpc3QgbWV0aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImLCBJbnN0YW5jZSop
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKGNvbnN0IElkZW50aWZp
ZXImLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZmFsbGJhY2tP
YmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4g
anNVbmRlZmluZWQoKTsgfQotCi0gICAgdmlydHVhbCB+Q2xhc3MoKSB7IH0KLX07Ci0KLXR5cGVk
ZWYgdm9pZCAoKktKU0RpZEV4ZWN1dGVGdW5jdGlvblB0cikoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
IHJvb3RPYmplY3QpOwotCi1jbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3Rh
bmNlPiB7Ci1wdWJsaWM6Ci0gICAgSW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7Ci0K
LSAgICBzdGF0aWMgdm9pZCBzZXREaWRFeGVjdXRlRnVuY3Rpb24oS0pTRGlkRXhlY3V0ZUZ1bmN0
aW9uUHRyIGZ1bmMpOwotICAgIHN0YXRpYyBLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgZGlkRXhl
Y3V0ZUZ1bmN0aW9uKCk7Ci0KLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBiZWZv
cmUgYW5kIGFmdGVyIHRoZSBtYWluIGVudHJ5IHBvaW50cyBpbnRvCi0gICAgLy8gdGhlIG5hdGl2
ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGV5IGNhbiBiZSB1c2VkIHRvIGVzdGFibGlzaCBhbmQgY2xl
YW51cAotICAgIC8vIGFueSBuZWVkZWQgc3RhdGUuCi0gICAgdm9pZCBiZWdpbigpOwotICAgIHZv
aWQgZW5kKCk7Ci0KLSAgICB2aXJ0dWFsIENsYXNzKiBnZXRDbGFzcygpIGNvbnN0ID0gMDsKLSAg
ICBSdW50aW1lT2JqZWN0SW1wKiBjcmVhdGVSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSopOwotICAg
IHZvaWQgd2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCk7Ci0gICAgdm9pZCB3aWxsRGVzdHJv
eVJ1bnRpbWVPYmplY3QoKTsKLQotICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHZhbHVlIHdh
cyBub3Qgc2V0IHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKSB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUq
LCBjb25zdCBNZXRob2RMaXN0JiwgY29uc3QgQXJnTGlzdCYgYXJncykgPSAwOwotCi0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KLQotICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0NvbnN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JikgeyByZXR1cm4gSlNWYWx1ZSgpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpIHsgfQotCi0gICAgdmlydHVhbCBK
U1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0ID0gMDsKLQotICAgIFJvb3RPYmplY3QqIHJvb3RPYmplY3QoKSBjb25zdDsKLQotICAg
IHZpcnR1YWwgfkluc3RhbmNlKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgdmlydHVhbEJlZ2lu
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHZpcnR1YWxFbmQoKSB7IH0KLSAgICB2aXJ0dWFsIFJ1
bnRpbWVPYmplY3RJbXAqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKik7Ci0KLSAgICBSZWZQ
dHI8Um9vdE9iamVjdD4gbV9yb290T2JqZWN0OwotCi1wcml2YXRlOgotICAgIFJ1bnRpbWVPYmpl
Y3RJbXAqIG1fcnVudGltZU9iamVjdDsKLX07Ci0KLWNsYXNzIEFycmF5IDogcHVibGljIE5vbmNv
cHlhYmxlIHsKLXB1YmxpYzoKLSAgICBBcnJheShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsKLSAg
ICB2aXJ0dWFsIH5BcnJheSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXQoRXhlY1N0
YXRlKiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEpT
VmFsdWUgdmFsdWVBdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCgpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVk
OgotICAgIFJlZlB0cjxSb290T2JqZWN0PiBtX3Jvb3RPYmplY3Q7Ci19OwotCi1jb25zdCBjaGFy
KiBzaWduYXR1cmVGb3JQYXJhbWV0ZXJzKGNvbnN0IEFyZ0xpc3QmKTsKLQotdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBNZXRob2RMaXN0Kj4gTWV0aG9kTGlzdE1hcDsKLXR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kKj4gTWV0aG9kTWFwOwot
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBGaWVsZCo+IEZpZWxkTWFwOwot
CiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCShyZXZpc2lvbiA1MzU0MSkJKGZyb20gV2ViQ29yZS9icmlk
Z2UvQnJpZGdlLmNwcDo1MzU0MSkKKysrIFdlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJpZGdlLmgiCisKKyNpbmNsdWRlICJydW50
aW1lX29iamVjdC5oIgorI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJxdF9pbnN0YW5jZS5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitB
cnJheTo6QXJyYXkoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQorICAgIDogbV9y
b290T2JqZWN0KHJvb3RPYmplY3QpCit7CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdCk7Cit9CisK
K0FycmF5Ojp+QXJyYXkoKQoreworfQorCitJbnN0YW5jZTo6SW5zdGFuY2UoUGFzc1JlZlB0cjxS
b290T2JqZWN0PiByb290T2JqZWN0KQorICAgIDogbV9yb290T2JqZWN0KHJvb3RPYmplY3QpCisg
ICAgLCBtX3J1bnRpbWVPYmplY3QoMCkKK3sKKyAgICBBU1NFUlQobV9yb290T2JqZWN0KTsKK30K
KworSW5zdGFuY2U6On5JbnN0YW5jZSgpCit7CisgICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3Qp
OworfQorCitzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIHNfZGlkRXhlY3V0ZUZ1bmN0
aW9uOworCit2b2lkIEluc3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24oS0pTRGlkRXhlY3V0
ZUZ1bmN0aW9uUHRyIGZ1bmMpCit7CisgICAgc19kaWRFeGVjdXRlRnVuY3Rpb24gPSBmdW5jOwor
fQorCitLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgSW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlv
bigpCit7CisgICAgcmV0dXJuIHNfZGlkRXhlY3V0ZUZ1bmN0aW9uOworfQorCit2b2lkIEluc3Rh
bmNlOjpiZWdpbigpCit7CisgICAgdmlydHVhbEJlZ2luKCk7Cit9CisKK3ZvaWQgSW5zdGFuY2U6
OmVuZCgpCit7CisgICAgdmlydHVhbEVuZCgpOworfQorCitSdW50aW1lT2JqZWN0SW1wKiBJbnN0
YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNTRVJU
KG1fcm9vdE9iamVjdCk7CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdC0+aXNWYWxpZCgpKTsKKyAg
ICBpZiAobV9ydW50aW1lT2JqZWN0KQorICAgICAgICByZXR1cm4gbV9ydW50aW1lT2JqZWN0Owor
ICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgbV9ydW50aW1lT2Jq
ZWN0ID0gbmV3UnVudGltZU9iamVjdChleGVjKTsKKyAgICBtX3Jvb3RPYmplY3QtPmFkZFJ1bnRp
bWVPYmplY3QobV9ydW50aW1lT2JqZWN0KTsKKyAgICByZXR1cm4gbV9ydW50aW1lT2JqZWN0Owor
fQorCitSdW50aW1lT2JqZWN0SW1wKiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAg
ICByZXR1cm4gbmV3IChleGVjKVJ1bnRpbWVPYmplY3RJbXAoZXhlYywgdGhpcyk7Cit9CisKK3Zv
aWQgSW5zdGFuY2U6OndpbGxEZXN0cm95UnVudGltZU9iamVjdCgpCit7CisgICAgQVNTRVJUKG1f
cm9vdE9iamVjdCk7CisgICAgQVNTRVJUKG1fcm9vdE9iamVjdC0+aXNWYWxpZCgpKTsKKyAgICBB
U1NFUlQobV9ydW50aW1lT2JqZWN0KTsKKyAgICBtX3Jvb3RPYmplY3QtPnJlbW92ZVJ1bnRpbWVP
YmplY3QobV9ydW50aW1lT2JqZWN0KTsKKyAgICBtX3J1bnRpbWVPYmplY3QgPSAwOworfQorCit2
b2lkIEluc3RhbmNlOjp3aWxsSW52YWxpZGF0ZVJ1bnRpbWVPYmplY3QoKQoreworICAgIEFTU0VS
VChtX3J1bnRpbWVPYmplY3QpOworICAgIG1fcnVudGltZU9iamVjdCA9IDA7Cit9CisKK1Jvb3RP
YmplY3QqIEluc3RhbmNlOjpyb290T2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yb290
T2JqZWN0ICYmIG1fcm9vdE9iamVjdC0+aXNWYWxpZCgpID8gbV9yb290T2JqZWN0LmdldCgpIDog
MDsKK30KKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJyaWRnZS5oIgorI2luY2x1ZGUg
IkJyaWRnZUpTQy5oIgogCiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKICNpbmNsdWRlICJy
dW50aW1lX3Jvb3QuaCIKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgJKHJldmlzaW9uIDUzNTQx
KQkoZnJvbSBXZWJDb3JlL2JyaWRnZS9CcmlkZ2UuaDo1MzU0MSkKKysrIFdlYkNvcmUvYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBCcmlkZ2VfaAorI2RlZmluZSBCcmlkZ2VfaAorCisjaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBKU0MgIHsKKworY2xhc3MgQXJnTGlzdDsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBK
U0dsb2JhbE9iamVjdDsKK2NsYXNzIFByb3BlcnR5TmFtZUFycmF5OworY2xhc3MgUnVudGltZU9i
amVjdEltcDsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKKworY2xhc3MgSW5zdGFuY2U7CitjbGFz
cyBNZXRob2Q7CitjbGFzcyBSb290T2JqZWN0OworCit0eXBlZGVmIFZlY3RvcjxNZXRob2QqPiBN
ZXRob2RMaXN0OworCitjbGFzcyBGaWVsZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBKU1ZhbHVl
IHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3Qg
SW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIH5GaWVsZCgpIHsg
fQorfTsKKworY2xhc3MgTWV0aG9kIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB+
TWV0aG9kKCkgeyB9Cit9OworCitjbGFzcyBDbGFzcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBJZGVudGlm
aWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGaWVsZCogZmllbGROYW1l
ZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBK
U1ZhbHVlIGZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIEluc3RhbmNlKiwgY29uc3QgSWRlbnRp
ZmllciYpIHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KKworICAgIHZpcnR1YWwgfkNsYXNzKCkg
eyB9Cit9OworCit0eXBlZGVmIHZvaWQgKCpLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIpKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiByb290T2JqZWN0KTsKKworY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbnN0YW5jZT4geworcHVibGljOgorICAgIEluc3RhbmNlKFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4pOworCisgICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtK
U0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBmdW5jKTsKKyAgICBzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1
bmN0aW9uUHRyIGRpZEV4ZWN1dGVGdW5jdGlvbigpOworCisgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IGFyZSBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFpbiBlbnRyeSBwb2ludHMgaW50bwor
ICAgIC8vIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb25zLiAgVGhleSBjYW4gYmUgdXNlZCB0byBl
c3RhYmxpc2ggYW5kIGNsZWFudXAKKyAgICAvLyBhbnkgbmVlZGVkIHN0YXRlLgorICAgIHZvaWQg
YmVnaW4oKTsKKyAgICB2b2lkIGVuZCgpOworCisgICAgdmlydHVhbCBDbGFzcyogZ2V0Q2xhc3Mo
KSBjb25zdCA9IDA7CisgICAgUnVudGltZU9iamVjdEltcCogY3JlYXRlUnVudGltZU9iamVjdChF
eGVjU3RhdGUqKTsKKyAgICB2b2lkIHdpbGxJbnZhbGlkYXRlUnVudGltZU9iamVjdCgpOworICAg
IHZvaWQgd2lsbERlc3Ryb3lSdW50aW1lT2JqZWN0KCk7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHRoZSB2YWx1ZSB3YXMgbm90IHNldCBzdWNjZXNzZnVsbHkuCisgICAgdmlydHVhbCBib29s
IHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VN
ZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTWV0aG9kTGlzdCYsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0
TWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKSB7IHJldHVybiBqc1VuZGVmaW5lZCgp
OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJ1Y3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpIHsgcmV0dXJuIEpTVmFsdWUoKTsgfQorCisgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKSB7IH0K
KworICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2Yo
RXhlY1N0YXRlKiBleGVjKSBjb25zdCA9IDA7CisKKyAgICBSb290T2JqZWN0KiByb290T2JqZWN0
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOworCisgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcHV0KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIHZpcnR1YWxCZWdpbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCkgeyB9
CisgICAgdmlydHVhbCBSdW50aW1lT2JqZWN0SW1wKiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSopOworCisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IG1fcm9vdE9iamVjdDsKKworcHJpdmF0ZToK
KyAgICBSdW50aW1lT2JqZWN0SW1wKiBtX3J1bnRpbWVPYmplY3Q7Cit9OworCitjbGFzcyBBcnJh
eSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgQXJyYXkoUGFzc1JlZlB0cjxS
b290T2JqZWN0Pik7CisgICAgdmlydHVhbCB+QXJyYXkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZUF0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlQXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgoKSBjb25zdCA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICBSZWZQdHI8Um9vdE9iamVjdD4gbV9yb290T2JqZWN0Owor
fTsKKworY29uc3QgY2hhciogc2lnbmF0dXJlRm9yUGFyYW1ldGVycyhjb25zdCBBcmdMaXN0Jik7
CisKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgTWV0aG9kTGlzdCo+IE1l
dGhvZExpc3RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIE1ldGhv
ZCo+IE1ldGhvZE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgRmll
bGQqPiBGaWVsZE1hcDsKKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5
LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIEJyaWRnZV9oCi0jZGVmaW5lIEJyaWRnZV9oCisjaWZuZGVmIEJyaWRnZUpTQ19oCisj
ZGVmaW5lIEJyaWRnZUpTQ19oCiAKICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU1LDEzICs1NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5GaWVsZCgpIHsgfQogfTsKIAotY2xhc3MgTWV0aG9kIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgPSAwOwot
Ci0gICAgdmlydHVhbCB+TWV0aG9kKCkgeyB9Ci19OwotCiBjbGFzcyBDbGFzcyA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChjb25zdCBJZGVudGlmaWVyJiwgSW5zdGFuY2UqKSBjb25zdCA9IDA7Cg==
</data>
<flag name="review"
          id="29378"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="29476"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>