<?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>120093</bug_id>
          
          <creation_ts>2013-08-20 14:56:45 -0700</creation_ts>
          <short_desc>Remove getOwnPropertyDescriptor trap</short_desc>
          <delta_ts>2021-05-15 11:10:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>919248</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-08-20 14:56:45 -0700</bug_when>
    <thetext>All implementations of this method are now called via the method table, and equivalent in behaviour.
Remove all duplicate implementations (and the method table trap), and add a single member function implementation on JSObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919259</commentid>
    <comment_count>1</comment_count>
      <attachid>209233</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-08-20 15:17:52 -0700</bug_when>
    <thetext>Created attachment 209233
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919262</commentid>
    <comment_count>2</comment_count>
      <attachid>209233</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-20 15:29:17 -0700</bug_when>
    <thetext>Comment on attachment 209233
Fix

Attachment 209233 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1523249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919263</commentid>
    <comment_count>3</comment_count>
      <attachid>209234</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-08-20 15:32:32 -0700</bug_when>
    <thetext>Created attachment 209234
Complete patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919277</commentid>
    <comment_count>4</comment_count>
      <attachid>209234</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-20 16:37:30 -0700</bug_when>
    <thetext>Comment on attachment 209234
Complete patch!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919279</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-08-20 16:46:12 -0700</bug_when>
    <thetext>Committed revision 154373.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760430</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-15 11:10:03 -0700</bug_when>
    <thetext>*** Bug 107420 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209233</attachid>
            <date>2013-08-20 15:17:52 -0700</date>
            <delta_ts>2013-08-20 15:32:32 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>120093.1.patch</filename>
            <type>text/plain</type>
            <size>109238</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxMy0wOC0yMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA5
MworICAgICAgICBSZW1vdmUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHRyYXAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgaW1wbGVtZW50YXRp
b25zIG9mIHRoaXMgbWV0aG9kIGFyZSBub3cgY2FsbGVkIHZpYSB0aGUgbWV0aG9kIHRhYmxlLCBh
bmQgZXF1aXZhbGVudCBpbiBiZWhhdmlvdXIuCisgICAgICAgIFJlbW92ZSBhbGwgZHVwbGljYXRl
IGltcGxlbWVudGF0aW9ucyAoYW5kIHRoZSBtZXRob2QgdGFibGUgdHJhcCksIGFuZCBhZGQgYSBz
aW5nbGUgbWVtYmVyIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIG9uIEpTT2JqZWN0LgorCisgICAg
ICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHA6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRvcgorICAg
ICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICAgICAtIHJlbW92ZSBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IgZnJvbSBNZXRob2RUYWJsZQorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9E
YXRlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
T05PYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAgICAgLSBzd2l0Y2ggdG8gY2FsbCBu
ZXcgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG1lbWJlciBmdW5jdGlvbgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgICAgIC0gbmV3
LCBiYXNlZCBvbiBpbWxlbWVudGF0aW9uIGZyb20gR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9S
X0lNUEwKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkp
OgorICAgICAgICAgICAgLSBzd2l0Y2ggdG8gY2FsbCBuZXcgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yIG1lbWJlciBmdW5jdGlvbgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9O
YW1lUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlw
ZS5oOgorICAgICAgICAgICAgLSByZW1vdmUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisgICAg
ICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVl
emUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbik6CisgICAgICAgICAgICAtIHN3aXRjaCB0
byBjYWxsIG5ldyBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgbWVtYmVyIGZ1bmN0aW9uCisgICAg
ICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAgICAgLSByZW1vdmUg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIEdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRP
Ul9JTVBMCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
TWF0Y2hlc0FycmF5LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcgorCiAyMDEzLTA4LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwMDc2PiBNb3Jl
IHdvcmsgdG93YXJkcyBhIFdpbjY0IGJ1aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw3ICsxNzgsNiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSArMjEzLDYgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+KQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgogdm9pZCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdCo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw4ICs5NSw2IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRP
d25Qcm9wZXJ0eU4KICAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lN
UEwoRGVidWdnZXJBY3RpdmF0aW9uKQotCiBib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxNTQz
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw2IEBAIGJv
b2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmoKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChBcmd1bWVudHMpCi0K
IHZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1
bWVudHMqPihvYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw2IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgYm9vbCBBcnJheUNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsbwogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjphcnJheUNvbnN0cnVjdG9y
VGFibGUoZXhlYyksIGpzQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoQXJyYXlD
b25zdHJ1Y3RvcikKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHBy
b2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVuZ3RoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIHByaXZhdGU6
CiAgICAgQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwotCiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsOCArMTQxLDYgQEAgYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4o
ZXhlYywgRXhlY1N0YXRlOjphcnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQ
cm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BS
T1BFUlRZX0RFU0NSSVBUT1JfSU1QTChBcnJheVByb3RvdHlwZSkKLQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIC8vIEhlbHBlciBmdW5jdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBERUNMQVJFX0lORk87CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsNiBAQCBib29sIEJvb2xlYW5Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxCb29sZWFuT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Qcm90b3R5cGVUYWJs
ZShleGVjKSwganNDYXN0PEJvb2xlYW5Qcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChCb29sZWFuUHJv
dG90eXBlKQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZToKICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDkgKzk1LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgRGVmaW5lT3duUHJvcGVy
dHlGdW5jdGlvblB0ciBkZWZpbmVPd25Qcm9wZXJ0eTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKkdl
dE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwotICAgIAogICAg
IHR5cGVkZWYgdm9pZCAoKlNsb3dEb3duQW5kV2FzdGVNZW1vcnkpKEpTQXJyYXlCdWZmZXJWaWV3
Kik7CiAgICAgU2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSBzbG93RG93bkFuZFdhc3RlTWVtb3J5Owog
ICAgIApAQCAtMTQ1LDcgKzE0Miw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZD
bGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OnB1dERp
cmVjdFZpcnR1YWwsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwK
LSAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnksIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6Z2V0VHlwZWRBcnJheUltcGwgXAogICAgIH0sIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmRhdGVDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBq
c0Nhc3Q8RGF0ZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoRGF0ZUNvbnN0cnVjdG9yKQotCiAv
LyBFQ01BIDE1LjkuMwogSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotCi0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTksOCArNTE5LDYg
QEAgYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxl
KGV4ZWMpLCBqc0Nhc3Q8RGF0ZVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKERhdGVQcm90b3R5cGUp
Ci0KIC8vIEZ1bmN0aW9ucwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDggKzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwotCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBAQCBib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxFcnJvckluc3RhbmNl
PihleGVjLCBFeGVjU3RhdGU6OmVycm9yUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxFcnJv
clByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05f
UFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEVycm9yUHJvdG90eXBlKQotCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw3ICs1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAko
cmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDggKzE3OCw2IEBAIGJvb2wgSlNBY3Rp
dmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdF
VF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTQWN0aXZhdGlvbikKLQogdm9pZCBKU0Fj
dGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxs
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5o
CShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDggKzE4OSw2IEBA
IGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWMKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU0FycmF5KQot
CiAvLyBFQ01BIDE1LjQuNS4xCiB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsOCArNzgsNiBAQCBib29sIEpTQXJyYXlCdWZmZXI6OmdldE93blByb3BlcnR5U2xvdCgKICAg
ICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpT
QXJyYXlCdWZmZXIpCi0KIHZvaWQgSlNBcnJheUJ1ZmZlcjo6cHV0KAogICAgIEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAko
cmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOCArMTM5LDYgQEAgYm9vbCBK
U0FycmF5QnVmZmVyVmlldzo6Z2V0T3duUHJvcGVydHlTbAogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNBcnJheUJ1ZmZlclZpZXcpCi0K
IHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDggKzIxOCw2
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCoKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTQ2VsbCkKLQog
dm9pZCBKU0NlbGw6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9t
SGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggdm9pZCBzbG93RG93bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3Kik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDYgQEAgYm9vbCBKU0RhdGFWaWV3OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZ
X0RFU0NSSVBUT1JfSU1QTChKU0RhdGFWaWV3KQotCiB2b2lkIEpTRGF0YVZpZXc6OnNsb3dEb3du
QW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKQogewogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHNsb3dE
b3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDggKzkwLDYgQEAgYm9vbCBKU0RhdGFWaWV3UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eQog
ICAgICAgICBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChKU0RhdGFWaWV3UHJvdG90eXBlKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCi0gICAgICAgIEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMiw4ICszMDIsNiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChKU0Z1bmN0aW9uKQotCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24g
MTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3Rh
dGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsNiBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+Ci1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPikKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKICAgICBKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQz
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0MSw4ICs2NDEsNiBAQCBib29sIEpTR2xvYmFsT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKEpTR2xvYmFsT2JqZWN0KQotCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjbGVhclJhcmVEYXRh
KEpTQ2VsbCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+bV9y
YXJlRGF0YS5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyAr
MjQ4LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBib29sIGhhc093blByb3BlcnR5
Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw4ICs1OCw2IEBAIGJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
QnkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKEpTTm90QW5PYmplY3QpCi0KIHZvaWQgSlNOb3RBbk9iamVjdDo6cHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lICwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsOCArNTk2LDYgQEAg
Ym9vbCBKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8SlNPTk9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTT05PYmplY3QpCi0KIGNsYXNz
IFdhbGtlciB7CiBwdWJsaWM6CiAgICAgV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYywgSGFuZGxlPEpT
T2JqZWN0PiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIENhbGxEYXRhIGNhbGxEYXRhKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQxMCw3ICsxNDEwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdAogYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhp
cyktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCisgICAgaWYg
KCFjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogfQpAQCAtMjM4MSw3ICsyMzgxLDIw
IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWcKICAgICByZXR1cm4g
bV9idXR0ZXJmbHktPmdyb3dQcm9wZXJ0eVN0b3JhZ2Uodm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBv
bGRTaXplLCBuZXdTaXplKTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwo
SlNPYmplY3QpCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCit7CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKKyAgICBp
ZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLyogV29ya2Fyb3VuZCwg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCBzZWFyY2hlcyB0aGUgcHJvdG90eXBlIGNo
YWluLiA6LSggKi8KKyAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IHRoaXMgJiYgc2xvdC5zbG90
QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Quc2xv
dEJhc2UoKSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gdGhpcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkKKyAgICAgICAgZGVzY3JpcHRvci5zZXRB
Y2Nlc3NvckRlc2NyaXB0b3Ioc2xvdC5nZXR0ZXJTZXR0ZXIoKSwgc2xvdC5hdHRyaWJ1dGVzKCkp
OworICAgIGVsc2UKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdC5hdHRyaWJ1dGVzKCkpOworICAgIHJldHVybiB0
cnVlOworfQogCiBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRhcmdldCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CkBAIC0yNDU3LDcgKzI0NzAsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBh
IG5ldyBwcm9wZXJ0eSB3ZSBjYW4ganVzdCBwdXQgaXQgb24gbm9ybWFsbHkKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgY3VycmVudDsKLSAgICBpZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnQpKSB7CisgICAg
aWYgKCFnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBjdXJyZW50
KSkgewogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVkIQogICAgICAg
ICBpZiAoIWlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw4ICs4Miw2IEBAIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCgKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTUHJv
eHkpCi0KIHZvaWQgSlNQcm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDggKzYzLDYgQEAgYm9vbCBOYW1lUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSgogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgRXhlY1N0
YXRlOjpwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TmFtZVByb3RvdHlw
ZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlf
REVTQ1JJUFRPUl9JTVBMKE5hbWVQcm90b3R5cGUpCi0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZU5hbWVQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFt
ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw4ICs3Nyw2IEBAIGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2wK
ICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKE51bWJlckNvbnN0cnVjdG9y
KQotCiB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8TnVtYmVyQ29uc3RydWN0b3IsIEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVy
Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4oY2VsbCks
IHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIAogICAgICAgICBERUNMQVJFX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDYgQEAg
Ym9vbCBOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdAogICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclBy
b3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwo
TnVtYmVyUHJvdG90eXBlKQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVu
Y3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBib29sIHRvVGhpc051bWJlcihKU1ZhbHVlIHRoaXNWYWx1ZSwgZG91YmxlJiB4KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByaXZhdGU6CiAgICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTksOCArOTksNiBAQCBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsCiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3Iq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChPYmplY3RDb25zdHJ1Y3RvcikKLQogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsK
QEAgLTE1NCw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJv
cGVydHlOYW1lKSwgZGVzY3JpcHRvcikpCisgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5TmFtZSksIGRlc2NyaXB0
b3IpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM3OSw3ICszNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MpKQor
ICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsICppdGVy
LCBkZXNjKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBiLiBJZiBkZXNjLltb
Q29uZmlndXJhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tDb25maWd1cmFibGVdXSB0byBmYWxz
ZS4KICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOwpAQCAtNDE2LDcgKzQxNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBmb3IgKFBy
b3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBPIHdpdGggUC4KICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAgICAgIGlm
ICghb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBleGVjLCAqaXRlciwgZGVzYykpCisgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgKml0ZXIsIGRlc2MpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIC8vIGIuIElmIElzRGF0YURlc2NyaXB0b3IoZGVzYykgaXMgdHJ1ZSwgdGhlbgogICAg
ICAgICAvLyBpLiBJZiBkZXNjLltbV3JpdGFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW1dyaXRh
YmxlXV0gdG8gZmFsc2UuCkBAIC00NjQsNyArNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdAogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dl
dE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgogICAgICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzYzsKLSAgICAgICAgaWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjKSkKKyAg
ICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCAqaXRlciwg
ZGVzYykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLy8gYi4gSWYgZGVzYy5bW0Nv
bmZpZ3VyYWJsZV1dIGlzIHRydWUsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgICAgICBpZiAoZGVz
Yy5jb25maWd1cmFibGUoKSkKQEAgLTQ5NCw3ICs0OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MpKQor
ICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsICppdGVy
LCBkZXNjKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBiLiBJZiBJc0RhdGFE
ZXNjcmlwdG9yKGRlc2MpIGlzIHRydWUgdGhlbgogICAgICAgICAvLyBpLiBJZiBkZXNjLltbV3Jp
dGFibGVdXSBpcyB0cnVlLCByZXR1cm4gZmFsc2UuIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVd
XSBpcyB0cnVlLCB0aGVuIHJldHVybiBmYWxzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgREVDTEFSRV9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDIwICs4NSw0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiB9CiAKLSNkZWZpbmUgR0VUX09XTl9QUk9QRVJUWV9E
RVNDUklQVE9SX0lNUEwoQ2xhc3NOYW1lKSBcCi1ib29sIENsYXNzTmFtZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpIFwKLXsgXAotICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsg
XAotICAgIGlmICghZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KSkgXAotICAgICAgICByZXR1cm4gZmFsc2U7IFwKLSAgICAvKiBXb3JrYXJvdW5kLCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHNlYXJjaGVzIHRoZSBwcm90b3R5cGUgY2hh
aW4uIDotKCAqLyBcCi0gICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBvYmplY3QgJiYgc2xvdC5z
bG90QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Qu
c2xvdEJhc2UoKSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gb2JqZWN0KSBcCi0gICAgICAgIHJl
dHVybiBmYWxzZTsgXAotICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkgXAotICAgICAgICBkZXNj
cmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihzbG90LmdldHRlclNldHRlcigpLCBzbG90LmF0
dHJpYnV0ZXMoKSk7IFwKLSAgICBlbHNlIFwKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdC5hdHRyaWJ1dGVzKCkp
OyBcCi0gICAgcmV0dXJuIHRydWU7IFwKLX0KLQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsNiBAQCBib29sIFJlZ0V4cENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xv
dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpy
ZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChSZWdFeHBDb25zdHJ1Y3RvcikKLQogSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjEoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVm
KGV4ZWMsIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1
Nyw2IEBAIHZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlvbigKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKFJlZ0V4cE1hdGNoZXNBcnJheSkKLQogdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBSZWdF
eHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4o
Y2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDgg
Kzg0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsNiBAQCBib29sIFJlZ0V4cE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxS
ZWdFeHBPYmplY3QsIEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlKGV4ZWMp
LCBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoUmVnRXhwT2JqZWN0KQotCiBib29s
IFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWMo
RXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw2IEBA
IGJvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQ
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBM
KFJlZ0V4cFByb3RvdHlwZSkKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZp
c2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDggKzY1LDYgQEAgYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4o
ZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3Ry
aW5nQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChTdHJpbmdDb25zdHJ1Y3RvcikKLQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgTkVWRVJfSU5MSU5FIEpTVmFsdWUgc3RyaW5nRnJvbUNo
YXJDb2RlU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAgICAgCiAgICAgSlNDZWxsKiBKU0NfSE9TVF9D
QUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24g
MTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsNiBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoU3RyaW5nT2Jq
ZWN0KQotCiB2b2lkIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDM2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTA4LTIwICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMDkzCisgICAgICAgIFJlbW92
ZSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgdHJhcAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRo
b2QgYXJlIG5vdyBjYWxsZWQgdmlhIHRoZSBtZXRob2QgdGFibGUsIGFuZCBlcXVpdmFsZW50IGlu
IGJlaGF2aW91ci4KKyAgICAgICAgUmVtb3ZlIGFsbCBkdXBsaWNhdGUgaW1wbGVtZW50YXRpb25z
IChhbmQgdGhlIG1ldGhvZCB0YWJsZSB0cmFwKSwgYW5kIGFkZCBhIHNpbmdsZSBtZW1iZXIgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24gb24gSlNPYmplY3QuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuaDoKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3Qu
aDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRvcgorCiAyMDEz
LTA4LTIwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTIwMDg4PiBEZWZpbmUgQ2xpcGJvYXJkOjpoYXNEYXRhKCkgb25s
eSB3aGVuIGJ1aWxkaW5nIHdpdGggZHJhZyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTI2MzUsNyArMjYzNSw2IEBAIF9fWk43V2ViQ29yZTRQYWdlMThzZXRW
aXNpYmlsaXR5U3RhdGVFTlMKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVQ
TlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlz
aENyZWF0aW9uRVJOU18yVk1FUktOM1dURjZTdHJpbmdFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhv
ZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kNnNfaW5mb0UKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9i
YWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUE5TXzhCaW5kaW5nczZNZXRob2RFCiBfX1pOM0pTQzhC
aW5kaW5nczEwUm9vdE9iamVjdEQxRXYKQEAgLTI2NDYsNyArMjY0NSw2IEBAIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2gKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1l
T2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFF
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBO
U184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJh
eUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVO
U18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3Q2c19pbmZvRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMxLDggKzMzMSw2IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdEJ5SW4KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVT
Q1JJUFRPUl9JTVBMKEpTRE9NV2luZG93KQotCiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDYgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgIyBHZXR0ZXJzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICgkaGFzQ29tcGxleEdl
dHRlcik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwogICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwpAQCAt
OTczLDcgKzk3Miw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgREVDTEFSRV9JTkZPO1xuIik7CiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwIHx8
ICRudW1Db25zdGFudHMgPiAwKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTE2NTcsOCArMTY1NSw2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSwgSlNP
YmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJHRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTCgke2NsYXNzTmFtZX1Qcm90b3R5
cGUpXG5cbiIpOwogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKQEAgLTE3ODQsNyArMTc4
MCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJHRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTCgke2NsYXNzTmFtZX0pXG5cbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRp
bmRleGVkR2V0dGVyRnVuY3Rpb24gfHwgJG5hbWVkR2V0dGVyRnVuY3Rpb24KQEAgLTM3NTEsNyAr
Mzc0Niw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIERFQ0xBUkVfSU5GTztcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKQEAgLTQxMTMsOCArNDEwNyw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9U2xvdDwke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFi
bGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1Rh
YmxlcyJ9LCAkY29uc3RydWN0b3JDbGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwotCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIkdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKCR7Y29uc3RydWN0b3JDbGFzc05h
bWV9KVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2Up
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgYm9vbCBK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZwogICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4o
ZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdEFjdGl2ZURP
TU9iamVjdENvbnN0cnVjdG9yKQotCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQpAQCAtOTYsOCArOTQsNiBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZTo6Z2V0CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRhYmxlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTChKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUpCi0KIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RBY3RpdmVET01PYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUsIDAgLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEFjdGl2ZURPTU9iamVjdCkgfTsKIAogSlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjpKU1Rlc3RBY3RpdmVET01PYmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEFjdGl2ZURPTU9iamVj
dD4gaW1wbCkKQEAgLTEzNSw4ICsxMzEsNiBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6
Z2V0T3duUHJvcGVyCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QsIEJhc2U+KGV4ZWMsICZKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZSwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQ
VE9SX0lNUEwoSlNUZXN0QWN0aXZlRE9NT2JqZWN0KQotCiBKU1ZhbHVlIGpzVGVzdEFjdGl2ZURP
TU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
ICAgIH5KU1Rlc3RBY3RpdmVET01PYmplY3QoKTsKICAgICBERUNMQVJFX0lORk87CkBAIC0xMDQs
NyArMTAzLDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKQEAgLTEzMSw3ICsxMjksNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBERUNMQVJF
X0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDggKzY5LDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOgogICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJ
UFRPUl9JTVBMKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpCi0KIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KQEAgLTkzLDggKzkx
LDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZTo6ZwogICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclByb3RvdHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIpIH07CiAKIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IGltcGwpCkBA
IC0xMzYsOCArMTMyLDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJv
cAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIs
IEJhc2U+KGV4ZWMsICZKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1Q
TChKU1Rlc3RDdXN0b21OYW1lZEdldHRlcikKLQogYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqPihvYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5
cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKCk7CkBAIC0xMDgsNyArMTA3LDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZP
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTEzNSw3ICsxMzMsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwOSw4ICsxMDksNiBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9Q
Uk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KQotCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewog
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvcjsKQEAgLTE2OSw4ICsxNjcsNiBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I6OmdldE93blByb3BlCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLCBCYXNlPihleGVjLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclRhYmxlLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudENvbnN0cnVjdG9yKQotCiBKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFzZSkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CiAgICAgfkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoKTsKICAgICBERUNMQVJFX0lORk87CkBA
IC0xMzEsNyArMTMwLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAxNTQzNTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSw2IEBAIGJvb2wgSlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3Rvcjo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BS
T1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKQotCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC0xMDIsOCAr
MTAwLDYgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Z2V0T3duUAogICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGFyZ2V0OjpzX2luZm8gPSB7ICJU
ZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwg
MCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRUYXJnZXQpIH07CiAKIEpTVGVzdEV2
ZW50VGFyZ2V0OjpKU1Rlc3RFdmVudFRhcmdldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+IGlt
cGwpCkBAIC0xNTYsOCArMTUyLDYgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJv
cGVydHlTbAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXQs
IEJhc2U+KGV4ZWMsICZKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rl
c3RFdmVudFRhcmdldCkKLQogYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdEV2
ZW50VGFyZ2V0KCk7CkBAIC0xMTMsNyArMTEyLDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9J
TkZPOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTE0MCw3ICsxMzgsNiBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDgg
KzY4LDYgQEAgYm9vbCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3duUAogICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IsIEpTRE9N
V3JhcHBlcj4oZXhlYywgJkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxK
U1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdEV4Y2VwdGlvbkNv
bnN0cnVjdG9yKQotCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQpAQCAtMTIyLDggKzEyMCw2IEBAIGJvb2wgSlNUZXN0RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEV4Y2VwdGlvbiwgQmFz
ZT4oZXhlYywgJkpTVGVzdEV4Y2VwdGlvblRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFeGNl
cHRpb24pCi0KIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RF
eGNlcHRpb24oKTsKICAgICBERUNMQVJFX0lORk87CkBAIC0xMjksNyArMTI4LDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzUsOCArMTc1LDYgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUAog
ICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUs
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKQotCiAjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNFKQogQ29uc3Ry
dWN0VHlwZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewpAQCAtMjM2LDggKzIzNCw2IEBA
IGJvb2wgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpnZXRPd25Qcm8KICAgICByZXR1cm4gZ2V0
U3RhdGljUHJvcGVydHlTbG90PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4
ZWMsICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKQotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlOjpz
X2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFj
ZVRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2UpIH07CiAKIEpT
VGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+IGlt
cGwpCkBAIC0yNzUsOCArMjcxLDYgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OmdldE93blByb3Bl
cnR5U2xvdAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0SW50ZXJmYWNlLCBC
YXNlPihleGVjLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdElu
dGVyZmFjZSkKLQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNSZWFk
T25seUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CkBAIC0xMzEsNyArMTMw
LDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
QEAgLTE1OCw3ICsxNTYsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBERUNMQVJFX0lORk87
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDggKzY5LDYgQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydQogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvcikKLQogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC05Myw4ICs5MSw2IEBAIGJvb2wgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHkKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90
PEpTT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRh
YmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BF
UlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
KQotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZv
ID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyPiBpbXBsKQpAQCAtMTMyLDggKzEyOCw2IEBAIGJvb2wgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIEJhc2U+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIpCi0KIEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKCk7CiAgICAg
REVDTEFSRV9JTkZPOwpAQCAtMTA0LDcgKzEwMyw2IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVf
SU5GTzsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CkBAIC0xMzEsNyArMTI5LDYgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw2IEBAIGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjoKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dO
X1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3IpCi0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9y
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVj
dG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwpAQCAtMTY2LDggKzE2NCw2IEBAIGJvb2wgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGUKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IsIEJhc2U+KGV4ZWMsICZKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05f
UFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpCi0KIEpTVmFs
dWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7CiAgICAg
REVDTEFSRV9JTkZPOwpAQCAtMTMwLDcgKzEyOSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IERFQ0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDE1NDM1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNiBAQCBib29sIEpTVGVzdE5vZGVDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVyCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rl
c3ROb2RlQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE5vZGVDb25zdHJ1
Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNU
ZXN0Tm9kZUNvbnN0cnVjdG9yKQotCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0
Tm9kZTsKQEAgLTEyMyw4ICsxMjEsNiBAQCBib29sIEpTVGVzdE5vZGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3ROb2RlLCBCYXNl
PihleGVjLCAmSlNUZXN0Tm9kZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3ROb2RlKQotCiBK
U1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3ROb2RlKiBkb21PYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC05Niw3
ICs5NSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQw
LDggKzI0MCw2IEBAIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3BlcnQKICAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PEpTVGVzdE9iakNvbnN0cnVjdG9yLCBKU0RP
TVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0
T2JqQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RPYmpDb25zdHJ1Y3RvcikKLQogQ29u
c3RydWN0VHlwZSBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T2JqOwpAQCAtMzQ5LDggKzM0Nyw2IEBAIGJv
b2wgSlNUZXN0T2JqUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVMKICAgICByZXR1cm4gZ2V0U3Rh
dGljUHJvcGVydHlTbG90PEpTVGVzdE9ialByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICZKU1Rl
c3RPYmpQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0T2JqUHJvdG90eXBlKQot
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPYmopIH07CiAKIEpTVGVzdE9iajo6SlNUZXN0T2JqKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwp
CkBAIC0zODgsOCArMzg0LDYgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChK
U09iagogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T2JqLCBCYXNlPihleGVj
LCAmSlNUZXN0T2JqVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE9iaikKLQogSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAg
IH5KU1Rlc3RPYmooKTsKQEAgLTExOCw3ICsxMTcsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw2IEBAIGJvb2wg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnUKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVTbG90PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciwgSlNET01X
cmFwcGVyPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUsIGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpCi0KIENvbnN0
cnVjdFR5cGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOwpAQCAtMTk0LDggKzE5Miw2IEBAIGJvb2wgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9P
V05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
Ci0KIEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7CiAgICAgREVDTEFS
RV9JTkZPOwpAQCAtMTI5LDcgKzEyOCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xB
UkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBib29s
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
R0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpCi0KIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC0xMzEsOCArMTI5LDYgQEAg
Ym9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhYwogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLCBCYXNl
PihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGFibGUsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJ
UFRPUl9JTVBMKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSkKLQogSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCk7CkBAIC0xMzYsNyArMTM1LDYgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAx
LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpnZXRPd25QcgogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciwgSlNET01XcmFw
cGVyPihleGVjLCAmSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3IpCi0KIENvbnN0cnVjdFR5cGUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0VHlwZWRlZnM7CkBA
IC0xMzksOCArMTM3LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6Z2V0T3duUHJv
cAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzOjpzX2luZm8gPSB7ICJU
ZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0VHlwZWRlZnNUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnMpIH07CiAKIEpTVGVzdFR5cGVkZWZzOjpK
U1Rlc3RUeXBlZGVmcyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0VHlwZWRlZnM+IGltcGwpCkBAIC0xNzgsOCArMTc0
LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0VHlwZWRlZnMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RU
eXBlZGVmc1RhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RUeXBlZGVmcykKLQogSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+SlNUZXN0VHlwZWRlZnMoKTsKQEAg
LTEwNSw3ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwpAQCAtMTMyLDcgKzEzMCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERF
Q0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw2IEBAIGJvb2wgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChSdW50aW1lQXJyYXkpCi0KIGJv
b2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4o
b2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDgg
KzcyLDYgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJl
dHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9S
X0lNUEwoUnVudGltZU1ldGhvZCkKLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFJ1bnRpbWVNZXRo
b2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiBw
cml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsOCArMTYxLDYgQEAgYm9vbCBS
dW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBpbnN0YW5jZS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKFJ1bnRpbWVPYmplY3QpCi0K
IHZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1l
T2JqZWN0Kj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
aAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkocmV2aXNpb24gMTU0MzU5
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOwog
CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw3ICsxMjUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTUsOCArMjE1LDYgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChPYmpjRmFsbGJhY2tPYmplY3RJbXApCi0KIHZvaWQgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogfQo=
</data>
<flag name="commit-queue"
          id="231222"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209234</attachid>
            <date>2013-08-20 15:32:32 -0700</date>
            <delta_ts>2013-08-20 16:37:30 -0700</delta_ts>
            <desc>Complete patch!</desc>
            <filename>120093.2.patch</filename>
            <type>text/plain</type>
            <size>111611</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxMy0wOC0yMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA5
MworICAgICAgICBSZW1vdmUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHRyYXAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgaW1wbGVtZW50YXRp
b25zIG9mIHRoaXMgbWV0aG9kIGFyZSBub3cgY2FsbGVkIHZpYSB0aGUgbWV0aG9kIHRhYmxlLCBh
bmQgZXF1aXZhbGVudCBpbiBiZWhhdmlvdXIuCisgICAgICAgIFJlbW92ZSBhbGwgZHVwbGljYXRl
IGltcGxlbWVudGF0aW9ucyAoYW5kIHRoZSBtZXRob2QgdGFibGUgdHJhcCksIGFuZCBhZGQgYSBz
aW5nbGUgbWVtYmVyIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIG9uIEpTT2JqZWN0LgorCisgICAg
ICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHA6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5
cGUuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRvcgorICAg
ICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICAgICAtIHJlbW92ZSBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IgZnJvbSBNZXRob2RUYWJsZQorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9E
YXRlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
T05PYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAgICAgLSBzd2l0Y2ggdG8gY2FsbCBu
ZXcgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG1lbWJlciBmdW5jdGlvbgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgICAgIC0gbmV3
LCBiYXNlZCBvbiBpbWxlbWVudGF0aW9uIGZyb20gR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9S
X0lNUEwKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkp
OgorICAgICAgICAgICAgLSBzd2l0Y2ggdG8gY2FsbCBuZXcgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yIG1lbWJlciBmdW5jdGlvbgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9O
YW1lUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlw
ZS5oOgorICAgICAgICAgICAgLSByZW1vdmUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisgICAg
ICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVl
emUpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbik6CisgICAgICAgICAgICAtIHN3aXRjaCB0
byBjYWxsIG5ldyBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgbWVtYmVyIGZ1bmN0aW9uCisgICAg
ICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAgICAgLSByZW1vdmUg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIEdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRP
Ul9JTVBMCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
TWF0Y2hlc0FycmF5LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcgorCiAyMDEzLTA4LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwMDc2PiBNb3Jl
IHdvcmsgdG93YXJkcyBhIFdpbjY0IGJ1aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw3ICsxNzgsNiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSArMjEzLDYgQEAgSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+KQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgogdm9pZCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdCo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw4ICs5NSw2IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRP
d25Qcm9wZXJ0eU4KICAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCkt
PmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lN
UEwoRGVidWdnZXJBY3RpdmF0aW9uKQotCiBib29sIERlYnVnZ2VyQWN0aXZhdGlvbjo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgRGVidWdnZXJBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PERlYnVnZ2VyQWN0aXZhdGlvbio+KG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxNTQz
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw2IEBAIGJv
b2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmoKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChBcmd1bWVudHMpCi0K
IHZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1
bWVudHMqPihvYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw2IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgYm9vbCBBcnJheUNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsbwogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjphcnJheUNvbnN0cnVjdG9y
VGFibGUoZXhlYyksIGpzQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoQXJyYXlD
b25zdHJ1Y3RvcikKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHBy
b2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVuZ3RoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIHByaXZhdGU6
CiAgICAgQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwotCiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsOCArMTQxLDYgQEAgYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3du
UHJvcGVydHlTbG90KAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4o
ZXhlYywgRXhlY1N0YXRlOjphcnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlQ
cm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BS
T1BFUlRZX0RFU0NSSVBUT1JfSU1QTChBcnJheVByb3RvdHlwZSkKLQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIC8vIEhlbHBlciBmdW5jdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBERUNMQVJFX0lORk87CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsNiBAQCBib29sIEJvb2xlYW5Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxCb29sZWFuT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Qcm90b3R5cGVUYWJs
ZShleGVjKSwganNDYXN0PEJvb2xlYW5Qcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChCb29sZWFuUHJv
dG90eXBlKQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZToKICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDkgKzk1LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgRGVmaW5lT3duUHJvcGVy
dHlGdW5jdGlvblB0ciBkZWZpbmVPd25Qcm9wZXJ0eTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKkdl
dE93blByb3BlcnR5RGVzY3JpcHRvckZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRnVuY3Rpb25QdHIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwotICAgIAogICAg
IHR5cGVkZWYgdm9pZCAoKlNsb3dEb3duQW5kV2FzdGVNZW1vcnkpKEpTQXJyYXlCdWZmZXJWaWV3
Kik7CiAgICAgU2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSBzbG93RG93bkFuZFdhc3RlTWVtb3J5Owog
ICAgIApAQCAtMTQ1LDcgKzE0Miw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZD
bGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OnB1dERp
cmVjdFZpcnR1YWwsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwK
LSAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnksIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6Z2V0VHlwZWRBcnJheUltcGwgXAogICAgIH0sIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OmRhdGVDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBq
c0Nhc3Q8RGF0ZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoRGF0ZUNvbnN0cnVjdG9yKQotCiAv
LyBFQ01BIDE1LjkuMwogSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotCi0gICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTksOCArNTE5LDYg
QEAgYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxl
KGV4ZWMpLCBqc0Nhc3Q8RGF0ZVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKERhdGVQcm90b3R5cGUp
Ci0KIC8vIEZ1bmN0aW9ucwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDggKzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwotCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBAQCBib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxFcnJvckluc3RhbmNl
PihleGVjLCBFeGVjU3RhdGU6OmVycm9yUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxFcnJv
clByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05f
UFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEVycm9yUHJvdG90eXBlKQotCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw3ICs1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAko
cmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDggKzE3OCw2IEBAIGJvb2wgSlNBY3Rp
dmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdF
VF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTQWN0aXZhdGlvbikKLQogdm9pZCBKU0Fj
dGl2YXRpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihjZWxs
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5o
CShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDggKzE4OSw2IEBA
IGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWMKICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU0FycmF5KQot
CiAvLyBFQ01BIDE1LjQuNS4xCiB2b2lkIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsOCArNzgsNiBAQCBib29sIEpTQXJyYXlCdWZmZXI6OmdldE93blByb3BlcnR5U2xvdCgKICAg
ICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpT
QXJyYXlCdWZmZXIpCi0KIHZvaWQgSlNBcnJheUJ1ZmZlcjo6cHV0KAogICAgIEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLAogICAgIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAko
cmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOCArMTM5LDYgQEAgYm9vbCBK
U0FycmF5QnVmZmVyVmlldzo6Z2V0T3duUHJvcGVydHlTbAogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNBcnJheUJ1ZmZlclZpZXcpCi0K
IHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKICAgICBKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwKICAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDggKzIxOCw2
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCoKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTQ2VsbCkKLQog
dm9pZCBKU0NlbGw6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9t
SGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggdm9pZCBzbG93RG93bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3Kik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDYgQEAgYm9vbCBKU0RhdGFWaWV3OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZ
X0RFU0NSSVBUT1JfSU1QTChKU0RhdGFWaWV3KQotCiB2b2lkIEpTRGF0YVZpZXc6OnNsb3dEb3du
QW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKQogewogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIHNsb3dE
b3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDggKzkwLDYgQEAgYm9vbCBKU0RhdGFWaWV3UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eQog
ICAgICAgICBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChKU0RhdGFWaWV3UHJvdG90eXBlKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCi0gICAgICAgIEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMiw4ICszMDIsNiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChKU0Z1bmN0aW9uKQotCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24g
MTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3Rh
dGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsNiBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+Ci1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPikKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKICAgICBKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwKICAgICBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTQz
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0MSw4ICs2NDEsNiBAQCBib29sIEpTR2xvYmFsT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKEpTR2xvYmFsT2JqZWN0KQotCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjbGVhclJhcmVEYXRh
KEpTQ2VsbCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+bV9y
YXJlRGF0YS5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyAr
MjQ4LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBib29sIGhhc093blByb3BlcnR5
Rm9yV3JpdGUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw4ICs1OCw2IEBAIGJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
QnkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKEpTTm90QW5PYmplY3QpCi0KIHZvaWQgSlNOb3RBbk9iamVjdDo6cHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lICwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsOCArNTk2LDYgQEAg
Ym9vbCBKU09OT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6anNvblRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8SlNPTk9iamVjdCo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTT05PYmplY3QpCi0KIGNsYXNz
IFdhbGtlciB7CiBwdWJsaWM6CiAgICAgV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYywgSGFuZGxlPEpT
T2JqZWN0PiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIENhbGxEYXRhIGNhbGxEYXRhKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQxMCw3ICsxNDEwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdAogYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhp
cyktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpCisgICAgaWYg
KCFjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogfQpAQCAtMjM4MSw3ICsyMzgxLDIw
IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWcKICAgICByZXR1cm4g
bV9idXR0ZXJmbHktPmdyb3dQcm9wZXJ0eVN0b3JhZ2Uodm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBv
bGRTaXplLCBuZXdTaXplKTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwo
SlNPYmplY3QpCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCit7CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKKyAgICBp
ZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLyogV29ya2Fyb3VuZCwg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCBzZWFyY2hlcyB0aGUgcHJvdG90eXBlIGNo
YWluLiA6LSggKi8KKyAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IHRoaXMgJiYgc2xvdC5zbG90
QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Quc2xv
dEJhc2UoKSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gdGhpcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkKKyAgICAgICAgZGVzY3JpcHRvci5zZXRB
Y2Nlc3NvckRlc2NyaXB0b3Ioc2xvdC5nZXR0ZXJTZXR0ZXIoKSwgc2xvdC5hdHRyaWJ1dGVzKCkp
OworICAgIGVsc2UKKyAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdC5hdHRyaWJ1dGVzKCkpOworICAgIHJldHVybiB0
cnVlOworfQogCiBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRhcmdldCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CkBAIC0yNDU3LDcgKzI0NzAsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBh
IG5ldyBwcm9wZXJ0eSB3ZSBjYW4ganVzdCBwdXQgaXQgb24gbm9ybWFsbHkKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgY3VycmVudDsKLSAgICBpZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnQpKSB7CisgICAg
aWYgKCFnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBjdXJyZW50
KSkgewogICAgICAgICAvLyB1bmxlc3MgZXh0ZW5zaW9ucyBhcmUgcHJldmVudGVkIQogICAgICAg
ICBpZiAoIWlzRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw4ICs4Miw2IEBAIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCgKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTUHJv
eHkpCi0KIHZvaWQgSlNQcm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDggKzYzLDYgQEAgYm9vbCBOYW1lUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSgogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgRXhlY1N0
YXRlOjpwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TmFtZVByb3RvdHlw
ZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlf
REVTQ1JJUFRPUl9JTVBMKE5hbWVQcm90b3R5cGUpCi0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZU5hbWVQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFt
ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw4ICs3Nyw2IEBAIGJvb2wgTnVtYmVyQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2wK
ICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5h
bEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyks
IGpzQ2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKE51bWJlckNvbnN0cnVjdG9y
KQotCiB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBsb29rdXBQdXQ8TnVtYmVyQ29uc3RydWN0b3IsIEludGVy
bmFsRnVuY3Rpb24+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIEV4ZWNTdGF0ZTo6bnVtYmVy
Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE51bWJlckNvbnN0cnVjdG9yKj4oY2VsbCks
IHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIAogICAgICAgICBERUNMQVJFX0lORk87
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDYgQEAg
Ym9vbCBOdW1iZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdAogICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8TnVtYmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclBy
b3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwo
TnVtYmVyUHJvdG90eXBlKQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVu
Y3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBib29sIHRvVGhpc051bWJlcihKU1ZhbHVlIHRoaXNWYWx1ZSwgZG91YmxlJiB4KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByaXZhdGU6CiAgICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTksOCArOTksNiBAQCBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsCiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRl
OjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3Iq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChPYmplY3RDb25zdHJ1Y3RvcikKLQogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsK
QEAgLTE1NCw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJv
cGVydHlOYW1lKSwgZGVzY3JpcHRvcikpCisgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5TmFtZSksIGRlc2NyaXB0
b3IpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM3OSw3ICszNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MpKQor
ICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsICppdGVy
LCBkZXNjKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBiLiBJZiBkZXNjLltb
Q29uZmlndXJhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tDb25maWd1cmFibGVdXSB0byBmYWxz
ZS4KICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOwpAQCAtNDE2LDcgKzQxNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBmb3IgKFBy
b3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBPIHdpdGggUC4KICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAgICAgIGlm
ICghb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBleGVjLCAqaXRlciwgZGVzYykpCisgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZXhlYywgKml0ZXIsIGRlc2MpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIC8vIGIuIElmIElzRGF0YURlc2NyaXB0b3IoZGVzYykgaXMgdHJ1ZSwgdGhlbgogICAg
ICAgICAvLyBpLiBJZiBkZXNjLltbV3JpdGFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW1dyaXRh
YmxlXV0gdG8gZmFsc2UuCkBAIC00NjQsNyArNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdAogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dl
dE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgogICAgICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzYzsKLSAgICAgICAgaWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjKSkKKyAg
ICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCAqaXRlciwg
ZGVzYykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLy8gYi4gSWYgZGVzYy5bW0Nv
bmZpZ3VyYWJsZV1dIGlzIHRydWUsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgICAgICBpZiAoZGVz
Yy5jb25maWd1cmFibGUoKSkKQEAgLTQ5NCw3ICs0OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCiAgICAgICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgICAgICBpZiAoIW9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MpKQor
ICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsICppdGVy
LCBkZXNjKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBiLiBJZiBJc0RhdGFE
ZXNjcmlwdG9yKGRlc2MpIGlzIHRydWUgdGhlbgogICAgICAgICAvLyBpLiBJZiBkZXNjLltbV3Jp
dGFibGVdXSBpcyB0cnVlLCByZXR1cm4gZmFsc2UuIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVd
XSBpcyB0cnVlLCB0aGVuIHJldHVybiBmYWxzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgREVDTEFSRV9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDIwICs4NSw0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiB9CiAKLSNkZWZpbmUgR0VUX09XTl9QUk9QRVJUWV9E
RVNDUklQVE9SX0lNUEwoQ2xhc3NOYW1lKSBcCi1ib29sIENsYXNzTmFtZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpIFwKLXsgXAotICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsg
XAotICAgIGlmICghZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KSkgXAotICAgICAgICByZXR1cm4gZmFsc2U7IFwKLSAgICAvKiBXb3JrYXJvdW5kLCBK
U0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHNlYXJjaGVzIHRoZSBwcm90b3R5cGUgY2hh
aW4uIDotKCAqLyBcCi0gICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBvYmplY3QgJiYgc2xvdC5z
bG90QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Qu
c2xvdEJhc2UoKSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gb2JqZWN0KSBcCi0gICAgICAgIHJl
dHVybiBmYWxzZTsgXAotICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkgXAotICAgICAgICBkZXNj
cmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihzbG90LmdldHRlclNldHRlcigpLCBzbG90LmF0
dHJpYnV0ZXMoKSk7IFwKLSAgICBlbHNlIFwKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdC5hdHRyaWJ1dGVzKCkp
OyBcCi0gICAgcmV0dXJuIHRydWU7IFwKLX0KLQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsNiBAQCBib29sIFJlZ0V4cENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xv
dDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpy
ZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NS
SVBUT1JfSU1QTChSZWdFeHBDb25zdHJ1Y3RvcikKLQogSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjEoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGFzUmVnRXhwQ29uc3RydWN0b3Ioc2xvdEJhc2UpLT5nZXRCYWNrcmVm
KGV4ZWMsIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1
Nyw2IEBAIHZvaWQgUmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlvbigKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9J
TVBMKFJlZ0V4cE1hdGNoZXNBcnJheSkKLQogdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBSZWdF
eHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4o
Y2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDgg
Kzg0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJheTo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdiwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsNiBAQCBib29sIFJlZ0V4cE9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxS
ZWdFeHBPYmplY3QsIEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlKGV4ZWMp
LCBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoUmVnRXhwT2JqZWN0KQotCiBib29s
IFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGFzdEluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWMo
RXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw2IEBA
IGJvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQ
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBM
KFJlZ0V4cFByb3RvdHlwZSkKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUZXN0KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZp
c2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDggKzY1LDYgQEAgYm9vbCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4o
ZXhlYywgRXhlY1N0YXRlOjpzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3Ry
aW5nQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChTdHJpbmdDb25zdHJ1Y3RvcikKLQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgTkVWRVJfSU5MSU5FIEpTVmFsdWUgc3RyaW5nRnJvbUNo
YXJDb2RlU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAgICAgCiAgICAgSlNDZWxsKiBKU0NfSE9TVF9D
QUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24g
MTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsNiBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoU3RyaW5nT2Jq
ZWN0KQotCiB2b2lkIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDM2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTA4LTIwICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMDkzCisgICAgICAgIFJlbW92
ZSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgdHJhcAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRo
b2QgYXJlIG5vdyBjYWxsZWQgdmlhIHRoZSBtZXRob2QgdGFibGUsIGFuZCBlcXVpdmFsZW50IGlu
IGJlaGF2aW91ci4KKyAgICAgICAgUmVtb3ZlIGFsbCBkdXBsaWNhdGUgaW1wbGVtZW50YXRpb25z
IChhbmQgdGhlIG1ldGhvZCB0YWJsZSB0cmFwKSwgYW5kIGFkZCBhIHNpbmdsZSBtZW1iZXIgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24gb24gSlNPYmplY3QuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuaDoKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3Qu
aDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRvcgorCiAyMDEz
LTA4LTIwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTIwMDg4PiBEZWZpbmUgQ2xpcGJvYXJkOjpoYXNEYXRhKCkgb25s
eSB3aGVuIGJ1aWxkaW5nIHdpdGggZHJhZyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTI2MzUsNyArMjYzNSw2IEBAIF9fWk43V2ViQ29yZTRQYWdlMThzZXRW
aXNpYmlsaXR5U3RhdGVFTlMKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVQ
TlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlz
aENyZWF0aW9uRVJOU18yVk1FUktOM1dURjZTdHJpbmdFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhv
ZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2Qy
NGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5T
XzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kNnNfaW5mb0UKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzE0SlNHbG9i
YWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUE5TXzhCaW5kaW5nczZNZXRob2RFCiBfX1pOM0pTQzhC
aW5kaW5nczEwUm9vdE9iamVjdEQxRXYKQEAgLTI2NDYsNyArMjY0NSw2IEBAIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTRmaW5pc2gKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1l
T2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlNDZWxsRVJOU18xM0NvbnN0cnVjdERhdGFF
CiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBO
U184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJh
eUVOU18xNUVudW1lcmF0aW9uTW9kZUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0
MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVO
U18xMlByb3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQ
cm9wZXJ0eU5hbWVFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3Q2c19pbmZvRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMxLDggKzMzMSw2IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdEJ5SW4KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0
aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVT
Q1JJUFRPUl9JTVBMKEpTRE9NV2luZG93KQotCiB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDYgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgIyBHZXR0ZXJzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICgkaGFzQ29tcGxleEdl
dHRlcik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwogICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwpAQCAt
OTczLDcgKzk3Miw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgREVDTEFSRV9JTkZPO1xuIik7CiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwIHx8
ICRudW1Db25zdGFudHMgPiAwKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CiAgICAgfQogICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKQEAgLTE2NTcsOCArMTY1NSw2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSwgSlNP
YmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJHRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTCgke2NsYXNzTmFtZX1Qcm90b3R5
cGUpXG5cbiIpOwogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsKQEAgLTE3ODQsNyArMTc4
MCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJHRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTCgke2NsYXNzTmFtZX0pXG5cbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRp
bmRleGVkR2V0dGVyRnVuY3Rpb24gfHwgJG5hbWVkR2V0dGVyRnVuY3Rpb24KQEAgLTM3NTEsNyAr
Mzc0Niw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIERFQ0xBUkVfSU5GTztcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
KTsKQEAgLTQxMTMsOCArNDEwNyw2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWMke2tpbmR9U2xvdDwke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAiIC4gY29uc3RydWN0b3JIYXNoVGFi
bGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1Rh
YmxlcyJ9LCAkY29uc3RydWN0b3JDbGFzc05hbWUpIC4gIiwganNDYXN0PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwotCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIkdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKCR7Y29uc3RydWN0b3JDbGFzc05h
bWV9KVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2Up
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgYm9vbCBK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZwogICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4o
ZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdEFjdGl2ZURP
TU9iamVjdENvbnN0cnVjdG9yKQotCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQpAQCAtOTYsOCArOTQsNiBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZTo6Z2V0CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgJkpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRhYmxlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTChKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUpCi0KIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RBY3RpdmVET01PYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUsIDAgLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEFjdGl2ZURPTU9iamVjdCkgfTsKIAogSlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjpKU1Rlc3RBY3RpdmVET01PYmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEFjdGl2ZURPTU9iamVj
dD4gaW1wbCkKQEAgLTEzNSw4ICsxMzEsNiBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6
Z2V0T3duUHJvcGVyCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QsIEJhc2U+KGV4ZWMsICZKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZSwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQ
VE9SX0lNUEwoSlNUZXN0QWN0aXZlRE9NT2JqZWN0KQotCiBKU1ZhbHVlIGpzVGVzdEFjdGl2ZURP
TU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
ICAgIH5KU1Rlc3RBY3RpdmVET01PYmplY3QoKTsKICAgICBERUNMQVJFX0lORk87CkBAIC0xMDQs
NyArMTAzLDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKQEAgLTEzMSw3ICsxMjksNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBERUNMQVJF
X0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDggKzY5LDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOgogICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJ
UFRPUl9JTVBMKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpCi0KIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KQEAgLTkzLDggKzkx
LDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZTo6ZwogICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclByb3RvdHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUYWJsZSwgMCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIpIH07CiAKIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IGltcGwpCkBA
IC0xMzYsOCArMTMyLDYgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJv
cAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIs
IEJhc2U+KGV4ZWMsICZKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1Q
TChKU1Rlc3RDdXN0b21OYW1lZEdldHRlcikKLQogYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqPihvYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5
cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKCk7CkBAIC0xMDgsNyArMTA3LDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZP
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTEzNSw3ICsxMzMsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwOSw4ICsxMDksNiBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9Q
Uk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KQotCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewog
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvcjsKQEAgLTE2OSw4ICsxNjcsNiBAQCBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I6OmdldE93blByb3BlCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLCBCYXNlPihleGVjLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclRhYmxlLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudENvbnN0cnVjdG9yKQotCiBKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFzZSkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CiAgICAgfkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoKTsKICAgICBERUNMQVJFX0lORk87CkBA
IC0xMzEsNyArMTMwLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAxNTQzNTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSw2IEBAIGJvb2wgSlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3Rvcjo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BS
T1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKQotCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC0xMDIsOCAr
MTAwLDYgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Z2V0T3duUAogICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
Ci1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGFyZ2V0OjpzX2luZm8gPSB7ICJU
ZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwg
MCAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRUYXJnZXQpIH07CiAKIEpTVGVzdEV2
ZW50VGFyZ2V0OjpKU1Rlc3RFdmVudFRhcmdldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+IGlt
cGwpCkBAIC0xNTYsOCArMTUyLDYgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJv
cGVydHlTbAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRUYXJnZXQs
IEJhc2U+KGV4ZWMsICZKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rl
c3RFdmVudFRhcmdldCkKLQogYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdEV2
ZW50VGFyZ2V0KCk7CkBAIC0xMTMsNyArMTEyLDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9J
TkZPOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTE0MCw3ICsxMzgsNiBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDgg
KzY4LDYgQEAgYm9vbCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3duUAogICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IsIEpTRE9N
V3JhcHBlcj4oZXhlYywgJkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxK
U1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdEV4Y2VwdGlvbkNv
bnN0cnVjdG9yKQotCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQpAQCAtMTIyLDggKzEyMCw2IEBAIGJvb2wgSlNUZXN0RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEV4Y2VwdGlvbiwgQmFz
ZT4oZXhlYywgJkpTVGVzdEV4Y2VwdGlvblRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RFeGNl
cHRpb24pCi0KIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RF
eGNlcHRpb24oKTsKICAgICBERUNMQVJFX0lORk87CkBAIC0xMjksNyArMTI4LDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzUsOCArMTc1LDYgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUAog
ICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUs
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKQotCiAjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNFKQogQ29uc3Ry
dWN0VHlwZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewpAQCAtMjM2LDggKzIzNCw2IEBA
IGJvb2wgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpnZXRPd25Qcm8KICAgICByZXR1cm4gZ2V0
U3RhdGljUHJvcGVydHlTbG90PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4
ZWMsICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKQotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlOjpz
X2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFj
ZVRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2UpIH07CiAKIEpT
VGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+IGlt
cGwpCkBAIC0yNzUsOCArMjcxLDYgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OmdldE93blByb3Bl
cnR5U2xvdAogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0SW50ZXJmYWNlLCBC
YXNlPihleGVjLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdElu
dGVyZmFjZSkKLQogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNSZWFk
T25seUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUp
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CkBAIC0xMzEsNyArMTMw
LDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
QEAgLTE1OCw3ICsxNTYsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBERUNMQVJFX0lORk87
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDggKzY5LDYgQEAgYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydQogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvcikKLQogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC05Myw4ICs5MSw2IEBAIGJvb2wgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHkKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90
PEpTT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRh
YmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BF
UlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
KQotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZv
ID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyPiBpbXBsKQpAQCAtMTMyLDggKzEyOCw2IEBAIGJvb2wgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIEJhc2U+KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIpCi0KIEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKCk7CiAgICAg
REVDTEFSRV9JTkZPOwpAQCAtMTA0LDcgKzEwMyw2IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVf
SU5GTzsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CkBAIC0xMzEsNyArMTI5LDYgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw2IEBAIGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjoKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dO
X1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3IpCi0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9y
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVj
dG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwpAQCAtMTY2LDggKzE2NCw2IEBAIGJvb2wgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGUKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IsIEJhc2U+KGV4ZWMsICZKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05f
UFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpCi0KIEpTVmFs
dWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7CiAgICAg
REVDTEFSRV9JTkZPOwpAQCAtMTMwLDcgKzEyOSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IERFQ0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDE1NDM1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNiBAQCBib29sIEpTVGVzdE5vZGVDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVyCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rl
c3ROb2RlQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE5vZGVDb25zdHJ1
Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNU
ZXN0Tm9kZUNvbnN0cnVjdG9yKQotCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdE5vZGVDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQogewogICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0
Tm9kZTsKQEAgLTEyMyw4ICsxMjEsNiBAQCBib29sIEpTVGVzdE5vZGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3ROb2RlLCBCYXNl
PihleGVjLCAmSlNUZXN0Tm9kZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3ROb2RlKQotCiBK
U1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3ROb2RlKiBkb21PYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJKHJldmlz
aW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC05Niw3
ICs5NSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQw
LDggKzI0MCw2IEBAIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3BlcnQKICAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PEpTVGVzdE9iakNvbnN0cnVjdG9yLCBKU0RP
TVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0
T2JqQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RPYmpDb25zdHJ1Y3RvcikKLQogQ29u
c3RydWN0VHlwZSBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0T2JqOwpAQCAtMzQ5LDggKzM0Nyw2IEBAIGJv
b2wgSlNUZXN0T2JqUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVMKICAgICByZXR1cm4gZ2V0U3Rh
dGljUHJvcGVydHlTbG90PEpTVGVzdE9ialByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICZKU1Rl
c3RPYmpQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0T2JqUHJvdG90eXBlKQot
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPYmopIH07CiAKIEpTVGVzdE9iajo6SlNUZXN0T2JqKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwp
CkBAIC0zODgsOCArMzg0LDYgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdChK
U09iagogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0T2JqLCBCYXNlPihleGVj
LCAmSlNUZXN0T2JqVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE9iaikKLQogSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAg
IH5KU1Rlc3RPYmooKTsKQEAgLTExOCw3ICsxMTcsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpAQCAtMTQ1LDcgKzE0Myw2IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIERFQ0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw2IEBAIGJvb2wg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnUKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVTbG90PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciwgSlNET01X
cmFwcGVyPihleGVjLCAmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yVGFi
bGUsIGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBU
T1JfSU1QTChKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpCi0KIENvbnN0
cnVjdFR5cGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7CiAgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOwpAQCAtMTk0LDggKzE5Miw2IEBAIGJvb2wgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Z2V0T3cKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9P
V05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
Ci0KIEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7CiAgICAgREVDTEFS
RV9JTkZPOwpAQCAtMTI5LDcgKzEyOCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERFQ0xB
UkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBib29s
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
R0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9SX0lNUEwoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpCi0KIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CkBAIC0xMzEsOCArMTI5LDYgQEAg
Ym9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhYwogICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLCBCYXNl
PihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGFibGUsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJ
UFRPUl9JTVBMKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSkKLQogSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJ
KHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCk7CkBAIC0xMzYsNyArMTM1LDYgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgREVDTEFSRV9JTkZPOwogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAx
LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpnZXRPd25QcgogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciwgSlNET01XcmFw
cGVyPihleGVjLCAmSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3IpCi0KIENvbnN0cnVjdFR5cGUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNUZXN0VHlwZWRlZnM7CkBA
IC0xMzksOCArMTM3LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6Z2V0T3duUHJv
cAogICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZSkKLQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzOjpzX2luZm8gPSB7ICJU
ZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0VHlwZWRlZnNUYWJsZSwgMCAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnMpIH07CiAKIEpTVGVzdFR5cGVkZWZzOjpK
U1Rlc3RUeXBlZGVmcyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0VHlwZWRlZnM+IGltcGwpCkBAIC0xNzgsOCArMTc0
LDYgQEAgYm9vbCBKU1Rlc3RUeXBlZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KAogICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0VHlwZWRlZnMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RU
eXBlZGVmc1RhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1HRVRf
T1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChKU1Rlc3RUeXBlZGVmcykKLQogSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5oCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKICAgICB+SlNUZXN0VHlwZWRlZnMoKTsKQEAg
LTEwNSw3ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwpAQCAtMTMyLDcgKzEzMCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIERF
Q0xBUkVfSU5GTzsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw2IEBAIGJvb2wgUnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCi1HRVRfT1dOX1BST1BFUlRZX0RFU0NSSVBUT1JfSU1QTChSdW50aW1lQXJyYXkpCi0KIGJv
b2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSAqZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4o
b2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNp
b24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHJldmlzaW9uIDE1NDM1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDgg
KzcyLDYgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJl
dHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotR0VUX09XTl9QUk9QRVJUWV9ERVNDUklQVE9S
X0lNUEwoUnVudGltZU1ldGhvZCkKLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFJ1bnRpbWVNZXRo
b2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiBw
cml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCShyZXZpc2lvbiAxNTQzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsOCArMTYxLDYgQEAgYm9vbCBS
dW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBpbnN0YW5jZS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLUdFVF9PV05fUFJPUEVSVFlfREVTQ1JJUFRPUl9JTVBMKFJ1bnRpbWVPYmplY3QpCi0K
IHZvaWQgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1l
T2JqZWN0Kj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
aAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkocmV2aXNpb24gMTU0MzU5
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnN0YW5jZSgpOwog
CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpIHsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMTU0MzU5KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw3ICsxMjUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMTU0
MzU5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTUsOCArMjE1LDYgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmdldE93blByb3BlcgogICAgIHJldHVybiB0cnVlOwogfQogCi1HRVRfT1dOX1BST1BFUlRZX0RF
U0NSSVBUT1JfSU1QTChPYmpjRmFsbGJhY2tPYmplY3RJbXApCi0KIHZvaWQgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzYw
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTMtMDgtMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjAwOTMKKyAgICAgICAgUmVtb3ZlIGdldE93blByb3BlcnR5RGVzY3JpcHRvciB0cmFwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIGltcGxlbWVu
dGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBhcmUgbm93IGNhbGxlZCB2aWEgdGhlIG1ldGhvZCB0YWJs
ZSwgYW5kIGVxdWl2YWxlbnQgaW4gYmVoYXZpb3VyLgorICAgICAgICBSZW1vdmUgYWxsIGR1cGxp
Y2F0ZSBpbXBsZW1lbnRhdGlvbnMgKGFuZCB0aGUgbWV0aG9kIHRhYmxlIHRyYXApLCBhbmQgYWRk
IGEgc2luZ2xlIG1lbWJlciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBvbiBKU09iamVjdC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAg
ICAgICAgLSByZW1vdmUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisKIDIwMTMtMDgtMjAgIFBy
YXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMjAwMjk+IERvY3VtZW50OjptYXJrZXJzKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMTU0MzU5KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODksOCArMjg5LDYgQEAgYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotR0VUX09XTl9QUk9QRVJU
WV9ERVNDUklQVE9SX0lNUEwoSlNOUE9iamVjdCkKLQogdm9pZCBKU05QT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7CiAgICAgSlNOUE9iamVjdCogdGhpc09i
amVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAkocmV2aXNpb24gMTU0MzU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0M6OkpTQ2VsbCosIEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwo=
</data>
<flag name="review"
          id="231223"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>