<?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>224247</bug_id>
          
          <creation_ts>2021-04-06 13:59:17 -0700</creation_ts>
          <short_desc>Remove className() and toStringName() from the method table</short_desc>
          <delta_ts>2021-04-09 18:00:25 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=199138</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>smoley</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747624</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-06 13:59:17 -0700</bug_when>
    <thetext>Remove className() and toStringName() from the method table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747626</commentid>
    <comment_count>1</comment_count>
      <attachid>425324</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-06 14:01:56 -0700</bug_when>
    <thetext>Created attachment 425324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748085</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 14:55:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/76366903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748091</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 15:06:18 -0700</bug_when>
    <thetext>That&apos;s awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748504</commentid>
    <comment_count>4</comment_count>
      <attachid>425548</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-08 15:24:41 -0700</bug_when>
    <thetext>Created attachment 425548
Patch

Fix testapi and iOS build, add missing exception check and tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748519</commentid>
    <comment_count>5</comment_count>
      <attachid>425548</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-08 15:43:55 -0700</bug_when>
    <thetext>Comment on attachment 425548
Patch

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

&gt; Source/JavaScriptCore/runtime/ObjectPrototype.cpp:329
&gt; +inline const char* getBuiltinTag(JSGlobalObject* globalObject, JSObject* object)

WebKit coding style discourages use of the word &quot;get&quot; in the name of a function like this.

&gt; Source/JavaScriptCore/runtime/ObjectPrototype.cpp:390
&gt; +        jsTag = jsNontrivialString(vm, String(tag));

I am slightly surprised that an explicit cast to String is needed here. Can we try this without the function-style cast to String?

Seems slightly unfortunate that we always have to pay the price of allocating a StringImpl every time this code is called, given that there is a small fixed set of strings this can ever return. Probably OK that we copy the characters into the StringImpl and don’t do the ASCIILiteral optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748556</commentid>
    <comment_count>6</comment_count>
      <attachid>425564</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-08 17:16:48 -0700</bug_when>
    <thetext>Created attachment 425564
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748557</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-08 17:17:28 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)

Thank you for review, Darin!

&gt; WebKit coding style discourages use of the word &quot;get&quot; in the name of a
&gt; function like this.

Renamed to &quot;inferBuiltinTag&quot;.

&gt; I am slightly surprised that an explicit cast to String is needed here. Can
&gt; we try this without the function-style cast to String?

Implicit cast works.

&gt; Seems slightly unfortunate that we always have to pay the price of
&gt; allocating a StringImpl every time this code is called, given that there is
&gt; a small fixed set of strings this can ever return.

Great suggestion! Changed to AtomStringImpl so StringImpl allocation can be avoided.
Also, removed jsNontrivialString() because its assumption of the string length can be broken in case of iOS hack + API object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748931</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-09 18:00:23 -0700</bug_when>
    <thetext>Committed r275788 (236359@main): &lt;https://commits.webkit.org/236359@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425564.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425324</attachid>
            <date>2021-04-06 14:01:56 -0700</date>
            <delta_ts>2021-04-08 15:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224247-20210407000154.patch</filename>
            <type>text/plain</type>
            <size>29815</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDIxLTA0LTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgY2xhc3NOYW1lKCkgYW5kIHRvU3RyaW5nTmFtZSgpIGZyb20gdGhlIG1l
dGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjbGFzc05hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OnRvU3RyaW5nTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvQm9vbGVhbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5PYmplY3Q6OnRv
U3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9DbGFzc0lu
Zm8uaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkRhdGVJbnN0YW5jZTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzTmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpTQ2VsbDo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6
CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYWxj
dWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNsYXNzTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OmlzUG9rZXJCcm9zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6
OkpTUHJveHk6OmNsYXNzTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTUHJveHk6OnRv
U3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0Ojp0b1N0cmluZ05hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51
bWJlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmlzUG9rZXJCcm9zKToKKyAgICAgICAgKEpTQzo6
Z2V0QnVpbHRpblRhZyk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvdHlwZVRvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4
cE9iamVjdDo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6U3RyaW5nT2JqZWN0Ojp0b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisKIDIwMjEtMDQtMDYgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFycmF5J3MgdG9TdHJpbmcoKSBpcyBpbmNv
cnJlY3QgaWYgam9pbigpIGlzIG5vbi1jYWxsYWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTksOSArMTk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CiAKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChWTSYsIFN1YnNwYWNl
QWNjZXNzKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZN
Jik7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopOwotCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lv
biAyNzU1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDI2ICsxMzEsNiBAQCB2b2lkIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdChKU0dsCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+Ci1TdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjbGFzc05hbWUoY29uc3QgSlNP
YmplY3QqIG9iamVjdCwgVk0mIHZtKQotewotICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7Ci0gICAg
U3RyaW5nIHRoaXNDbGFzc05hbWUgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpLT5jbGFzc05hbWUo
KTsKLSAgICBpZiAoIXRoaXNDbGFzc05hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhp
c0NsYXNzTmFtZTsKLSAgICAKLSAgICByZXR1cm4gUGFyZW50OjpjbGFzc05hbWUob2JqZWN0LCB2
bSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1TdHJpbmcgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
OwotICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAg
ICBBU1NFUlQoaW5mbyk7Ci0gICAgcmV0dXJuIGluZm8tPm1ldGhvZFRhYmxlLmNsYXNzTmFtZShv
YmplY3QsIHZtKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CkBA
IC0yMTMsNyArMTkzLDIwIEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Q
cm8KICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgUGFy
ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKTsKKyAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAoZm91bmQpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKHByb3BlcnR5TmFtZS51aWQoKSA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbC5pbXBsKCkpIHsKKyAgICAgICAgU3RyaW5nIGNsYXNz
TmFtZSA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCktPmNsYXNzTmFtZSgpOworICAgICAgICBpZiAo
IWNsYXNzTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IGpzU3RyaW5nKHZtLCBXVEZNb3ZlKGNsYXNzTmFtZSkpKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkocmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OCwyOCArNjgsNiBAQCB2b2lkIERlYnVnZ2VyU2NvcGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTCiAK
IERFRklORV9WSVNJVF9DSElMRFJFTihEZWJ1Z2dlclNjb3BlKTsKIAotU3RyaW5nIERlYnVnZ2Vy
U2NvcGU6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCi17Ci0gICAg
Y29uc3QgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+
KG9iamVjdCk7Ci0gICAgLy8gV2UgY2Fubm90IGFzc2VydCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkg
YmVjYXVzZSB0aGUgVHlwZVByb2ZpbGVyIG1heSBlbmNvdW50ZXIgYW4gaW52YWxpZGF0ZWQKLSAg
ICAvLyBEZWJ1Z2dlclNjb3BlIGluIGl0cyBsb2cgZW50cmllcy4gV2UganVzdCBuZWVkIHRvIGhh
bmRsZSBpdCBhcHByb3ByaWF0ZWx5IGFzIGJlbG93LgotICAgIGlmICghc2NvcGUtPmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
SlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pOwotfQot
Ci1TdHJpbmcgRGVidWdnZXJTY29wZTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgY29uc3QgRGVidWdnZXJT
Y29wZSogc2NvcGUgPSBqc0Nhc3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+KG9iamVjdCk7Ci0gICAg
Ly8gV2UgY2Fubm90IGFzc2VydCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkgYmVjYXVzZSB0aGUgVHlw
ZVByb2ZpbGVyIG1heSBlbmNvdW50ZXIgYW4gaW52YWxpZGF0ZWQKLSAgICAvLyBEZWJ1Z2dlclNj
b3BlIGluIGl0cyBsb2cgZW50cmllcy4gV2UganVzdCBuZWVkIHRvIGhhbmRsZSBpdCBhcHByb3By
aWF0ZWx5IGFzIGJlbG93LgotICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0
QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+dG9TdHJpbmdOYW1lKHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCk7Ci19Ci0KIGJvb2wgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3Bl
KiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4ob2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAkocmV2aXNpb24gMjc1
NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIERlYnVnZ2VyU2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTU2NvcGUqIHNjb3Bl
KTsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47Ci0gICAgc3RhdGljIFN0cmluZyBjbGFz
c05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdO
YW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1NTQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDkgKzQwLDQgQEAgdm9pZCBCb29sZWFuT2JqZWN0OjpmaW5pc2hDcmVhdGlv
bihWTSYgdgogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9CiAKLVN0cmluZyBC
b29sZWFuT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopCi17Ci0gICAgcmV0dXJuICJCb29sZWFuIl9zOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJ
KHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDggQEAgcHVibGljOgogICAg
ICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQm9vbGVhbk9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9
Ci0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0Kik7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQm9vbGVhbk9iamVjdCkgPT0g
c2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lvbiAyNzU1NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJvb2xlYW5PYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3NTU0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MSwxMiArODEsNiBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIEdldE93blByb3BlcnR5
TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7
CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShn
ZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyk7CiAKLSAgICB1c2luZyBDbGFzc05hbWVGdW5jdGlv
blB0ciA9IFN0cmluZyAoKikoY29uc3QgSlNPYmplY3QqLCBWTSYpOwotICAgIENsYXNzTmFtZUZ1
bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShjbGFzc05hbWUpOwotCi0gICAgdXNpbmcgVG9T
dHJpbmdOYW1lRnVuY3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKTsKLSAgICBUb1N0cmluZ05hbWVGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5U
UlkodG9TdHJpbmdOYW1lKTsKLQogICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAg
Q3VzdG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFz
SW5zdGFuY2UpOwogCkBAIC0xNjksOCArMTYzLDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICAgICAgJkNsYXNzTmFtZTo6ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFzc05hbWU6Omdl
dE93blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duU3BlY2lhbFBy
b3BlcnR5TmFtZXMsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6Y2xhc3NOYW1lLCBcCi0gICAgICAg
ICZDbGFzc05hbWU6OnRvU3RyaW5nTmFtZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpjdXN0b21I
YXNJbnN0YW5jZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVPd25Qcm9wZXJ0eSwgXAog
ICAgICAgICAmQ2xhc3NOYW1lOjpwcmV2ZW50RXh0ZW5zaW9ucywgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNzU1
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsNiBAQCB2b2lkIERhdGVJbnN0YW5jZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtCiAgICAgbV9pbnRlcm5hbE51bWJlciA9IHRpbWVDbGlwKHRpbWUpOwog
fQogCi1TdHJpbmcgRGF0ZUluc3RhbmNlOjp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJEYXRlIl9zOwotfQotCiBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogRGF0ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShE
YXRlQ2FjaGUmIGNhY2hlKSBjb25zdAogewogICAgIGRvdWJsZSBtaWxsaSA9IGludGVybmFsTnVt
YmVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaAkocmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIGRvdWJsZSBp
bnRlcm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxOdW1iZXI7IH0KICAgICB2
b2lkIHNldEludGVybmFsTnVtYmVyKGRvdWJsZSB2YWx1ZSkgeyBtX2ludGVybmFsTnVtYmVyID0g
dmFsdWU7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksOSArMzE5
LDQgQEAgYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbAogICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKLVN0cmluZyBFcnJvckluc3RhbmNlOjp0b1N0cmluZ05hbWUoY29u
c3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJFcnJvciJfczsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiAyNzU1NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw3ICsxMDEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwog
CiAgICAgdm9pZCBjb21wdXRlRXJyb3JJbmZvKFZNJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDE4
ICsyMTYsNiBAQCB2b2lkIEpTQ2VsbDo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotU3RyaW5nIEpTQ2VsbDo6Y2xhc3NO
YW1lKGNvbnN0IEpTT2JqZWN0KiwgVk0mKQotewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgSlNDZWxsOjp0b1N0cmlu
Z05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIGNvbnN0IGNo
YXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKFZNJiB2bSkgY29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJ
bmZvKHZtKS0+Y2xhc3NOYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsOCArMjUzLDYgQEAgcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90eXBlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKTsKICAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0Kik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCos
IFZNJik7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3Rv
bUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcAkocmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSwxMSArMjM5
LDYgQEAgc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudAogICAgIHJldHVy
biBjb3VudDsKIH0KIAotU3RyaW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFt
ZShjb25zdCBKU0M6OkpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIHJldHVybiAi
T2JqZWN0Il9zOwotfQotCiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaAkocmV2aXNpb24gMjc1NTQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw2IEBAIHByaXZhdGU6CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogY2FsbGJhY2spOwogCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29u
c3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwotCiAgICAgc3RydWN0IFJlZ2lzdHJhdGlv
biB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQ7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiBob2xkaW5nczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgpAQCAtNDg1LDQ2ICs0ODQsNiBA
QCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTCiAKIERFRklORV9WSVNJ
VF9DSElMRFJFTl9XSVRIX01PRElGSUVSKEpTX0VYUE9SVF9QUklWQVRFLCBKU0ZpbmFsT2JqZWN0
KTsKIAotU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwg
Vk0mIHZtKQotewotICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZv
KHZtKTsKLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgcmV0dXJuIGluZm8tPmNsYXNzTmFtZTsKLX0K
LQotI2lmIFBMQVRGT1JNKElPUykKLWlubGluZSBzdGF0aWMgYm9vbCBpc1Bva2VyQnJvcygpCi17
Ci0gICAgYXV0byBidW5kbGVJRCA9IENGQnVuZGxlR2V0SWRlbnRpZmllcihDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSk7Ci0gICAgcmV0dXJuIGJ1bmRsZUlECi0gICAgICAgICYmIENGRXF1YWwoYnVu
ZGxlSUQsIENGU1RSKCJjb20ua3BnYW1lLlBva2VyQnJvcyIpKQotICAgICAgICAmJiBkeWxkX2dl
dF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzE0XzA7Ci19Ci0jZW5k
aWYKLQotU3RyaW5nIEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyBib29sIG5lZWRzT2xk
U3RyaW5nTmFtZSA9IGlzUG9rZXJCcm9zKCk7Ci0gICAgaWYgKFVOTElLRUxZKG5lZWRzT2xkU3Ry
aW5nTmFtZSkpIHsKLSAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFz
c0luZm8odm0pOwotICAgICAgICBBU1NFUlQoaW5mbyk7Ci0gICAgICAgIHJldHVybiBpbmZvLT5j
bGFzc05hbWU7Ci0gICAgfQotI2VuZGlmCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGJvb2wgb2JqZWN0SXNBcnJheSA9IGlzQXJyYXkoZ2xvYmFsT2JqZWN0
LCBvYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKLSAg
ICBpZiAob2JqZWN0SXNBcnJheSkKLSAgICAgICAgcmV0dXJuICJBcnJheSJfczsKLSAgICBpZiAo
VHlwZUluZm86OmlzQXJndW1lbnRzVHlwZShvYmplY3QtPnR5cGUoKSkpCi0gICAgICAgIHJldHVy
biAiQXJndW1lbnRzIl9zOwotICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4ob2JqZWN0KS0+
aXNDYWxsYWJsZSh2bSkpCi0gICAgICAgIHJldHVybiAiRnVuY3Rpb24iX3M7Ci0gICAgcmV0dXJu
ICJPYmplY3QiX3M7Ci19Ci0KIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShK
U09iamVjdCogb2JqZWN0KQogewogICAgIFN0cmluZyBjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZTsK
QEAgLTU4MCw5ICs1MzksMTkgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1l
KEpTTwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCiAgICAgaWYgKGNvbnN0cnVj
dG9yRnVuY3Rpb25OYW1lLmlzTnVsbCgpIHx8IGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID09ICJP
YmplY3QiKSB7Ci0gICAgICAgIFN0cmluZyB0YWJsZUNsYXNzTmFtZSA9IG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5jbGFzc05hbWUob2JqZWN0LCB2bSk7Ci0gICAgICAgIGlmICghdGFibGVDbGFz
c05hbWUuaXNOdWxsKCkgJiYgdGFibGVDbGFzc05hbWUgIT0gIk9iamVjdCIpCi0gICAgICAgICAg
ICByZXR1cm4gdGFibGVDbGFzc05hbWU7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKKyAg
ICAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIHNsb3QpKSB7CisgICAgICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICBpZiAoc2xvdC5pc1Zh
bHVlKCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sKTsKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgdGFnID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRhZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAogICAgICAgICBTdHJpbmcgY2xhc3NJbmZvTmFtZSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZt
KS0+Y2xhc3NOYW1lOwogICAgICAgICBpZiAoIWNsYXNzSW5mb05hbWUuaXNOdWxsKCkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI3NTU0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMywxNSArMTEzLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEhlYXBBbmFseXplciYp
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3Qg
SlNPYmplY3QqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2Fs
Y3VsYXRlZENsYXNzTmFtZShKU09iamVjdCopOwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB3
aGF0IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSB3aWxsIHVzZSB0byBnZXQgdGhlIG5hbWUg
b2YKLSAgICAvLyBhbiBvYmplY3Qgd2hlbiB1c2luZyBTeW1ib2wudG9TdHJpbmdUYWcgZmFpbHMu
IEZvciB0aGUgbW9zdCBwYXJ0IHRoZXJlIGlzIG5vCi0gICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVu
IHRoaXMgYW5kIGNsYXNzTmFtZSgpLiBUaGUgbWFpbiB1c2UgY2FzZSBpcyBmb3IgbmV3IEpTIGxh
bmd1YWdlCi0gICAgLy8gb2JqZWN0cyB0byBzZXQgdGhlIGRlZmF1bHQgdGFnIHRvICJPYmplY3Qi
LgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0
IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKLQogICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5
IHZpcnR1YWwgW1tHZXRQcm90b3R5cGVPZl1dIGludGVybmFsIGZ1bmN0aW9uIGRlZmluZWQKICAg
ICAvLyBpbiB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmljYXRpb24uIFVzZSB0aGlzIHdoZW4gZG9p
bmcgYSBbW0dldFByb3RvdHlwZU9mXV0gCiAgICAgLy8gb3BlcmF0aW9uIGFzIGRpY3RhdGVkIGlu
IHRoZSBzcGVjaWZpY2F0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOCArNTIsNiBAQCB2b2lk
IEpTUHJveHk6OnNldFRhcmdldChWTSYgdm0sIEpTR2xvYmFsCiAgICAgc2V0UHJvdG90eXBlRGly
ZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogfQogCi1TdHJp
bmcgSlNQcm94eTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFZNJiB2bSkKLXsK
LSAgICBjb25zdCBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTUHJveHkqPihv
YmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUodm0p
LT5jbGFzc05hbWUodGhpc09iamVjdC0+dGFyZ2V0KCksIHZtKTsKLX0KLQotU3RyaW5nIEpTUHJv
eHk6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQotewotICAgIGNvbnN0IEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Y29uc3QgSlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT50b1N0cmluZ05hbWUodGhpc09iamVj
dC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCk7Ci19Ci0KIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjc1NTQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw4ICs4Niw2IEBAIHByb3RlY3RlZDoKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU5f
V0lUSF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cAkocmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDCiAgICAgQ0FTRShKU0Z1bmN0aW9uVHlwZSkKICAgICBD
QVNFKEludGVybmFsRnVuY3Rpb25UeXBlKQogICAgIENBU0UoTnVsbFNldHRlckZ1bmN0aW9uVHlw
ZSkKKyAgICBDQVNFKEJvb2xlYW5PYmplY3RUeXBlKQogICAgIENBU0UoTnVtYmVyT2JqZWN0VHlw
ZSkKICAgICBDQVNFKEVycm9ySW5zdGFuY2VUeXBlKQogICAgIENBU0UoUHVyZUZvcndhcmRpbmdQ
cm94eVR5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2
aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsK
ICAgICBKU0Z1bmN0aW9uVHlwZSwKICAgICBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwKICAgICBOdWxs
U2V0dGVyRnVuY3Rpb25UeXBlLAorICAgIEJvb2xlYW5PYmplY3RUeXBlLAogICAgIE51bWJlck9i
amVjdFR5cGUsCiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAgICAgUHVyZUZvcndhcmRpbmdQcm94
eVR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5jcHAJKHJldmlzaW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBAIHZv
aWQgTnVtYmVyT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0KICAgICBBU1NFUlQodHlwZSgp
ID09IE51bWJlck9iamVjdFR5cGUpOwogfQogCi1TdHJpbmcgTnVtYmVyT2JqZWN0Ojp0b1N0cmlu
Z05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJO
dW1iZXIiX3M7Ci19Ci0KIE51bWJlck9iamVjdCogY29uc3RydWN0TnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbnVtYmVyKQogewogICAgIE51bWJlck9iamVjdCog
b2JqZWN0ID0gTnVtYmVyT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxP
YmplY3QtPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyNzU1NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhOdW1iZXJPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQotCi0gICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogfTsK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKE51bWJlck9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9i
amVjdCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3NTU0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKIAorI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hlLmgiCiAjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgpAQCAtMzExLDYgKzMxMiw0NCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0UHJvdG9GdW5jCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIHRvU3RyaW5nLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCAqdm0uZW1wdHlMaXN0KSkpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQoraW5saW5lIHN0YXRp
YyBib29sIGlzUG9rZXJCcm9zKCkKK3sKKyAgICBhdXRvIGJ1bmRsZUlEID0gQ0ZCdW5kbGVHZXRJ
ZGVudGlmaWVyKENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKTsKKyAgICByZXR1cm4gYnVuZGxlSUQK
KyAgICAgICAgJiYgQ0ZFcXVhbChidW5kbGVJRCwgQ0ZTVFIoImNvbS5rcGdhbWUuUG9rZXJCcm9z
IikpCisgICAgICAgICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9T
X1ZFUlNJT05fMTRfMDsKK30KKyNlbmRpZgorCitpbmxpbmUgY29uc3QgY2hhciogZ2V0QnVpbHRp
blRhZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
c3RhdGljIGJvb2wgbmVlZHNPbGRCdWlsdGluVGFnID0gaXNQb2tlckJyb3MoKTsKKyAgICBpZiAo
VU5MSUtFTFkobmVlZHNPbGRCdWlsdGluVGFnKSkKKyAgICAgICAgcmV0dXJuIG9iamVjdC0+Y2xh
c3NOYW1lKHZtKTsKKyNlbmRpZgorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBib29sIG9iamVjdElzQXJyYXkgPSBpc0FycmF5KGdsb2JhbE9iamVjdCwgb2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAo
b2JqZWN0SXNBcnJheSkKKyAgICAgICAgcmV0dXJuICJBcnJheSI7CisgICAgaWYgKG9iamVjdC0+
aXNDYWxsYWJsZSh2bSkpCisgICAgICAgIHJldHVybiAiRnVuY3Rpb24iOworICAgIEpTVHlwZSB0
eXBlID0gb2JqZWN0LT50eXBlKCk7CisgICAgaWYgKFR5cGVJbmZvOjppc0FyZ3VtZW50c1R5cGUo
dHlwZSkKKyAgICAgICAgfHwgdHlwZSA9PSBFcnJvckluc3RhbmNlVHlwZQorICAgICAgICB8fCB0
eXBlID09IEJvb2xlYW5PYmplY3RUeXBlCisgICAgICAgIHx8IHR5cGUgPT0gTnVtYmVyT2JqZWN0
VHlwZQorICAgICAgICB8fCB0eXBlID09IFN0cmluZ09iamVjdFR5cGUKKyAgICAgICAgfHwgdHlw
ZSA9PSBEZXJpdmVkU3RyaW5nT2JqZWN0VHlwZQorICAgICAgICB8fCB0eXBlID09IEpTRGF0ZVR5
cGUKKyAgICAgICAgfHwgdHlwZSA9PSBSZWdFeHBPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4g
b2JqZWN0LT5jbGFzc05hbWUodm0pOworICAgIHJldHVybiAiT2JqZWN0IjsKK30KKwogSlNTdHJp
bmcqIG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
QEAgLTMyOCw3ICszNjcsNyBAQCBKU1N0cmluZyogb2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoSlNH
bG9iCiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHJlc3VsdCk7CiAK
LSAgICBTdHJpbmcgdGFnID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1N0cmluZ05h
bWUodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0KTsKKyAgICBjb25zdCBjaGFyKiB0YWcgPSBnZXRC
dWlsdGluVGFnKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgSlNTdHJpbmcqIGpzVGFnID0gbnVsbHB0cjsKIApA
QCAtMzQzLDggKzM4Miw4IEBAIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmluZyhKU0ds
b2IKICAgICB9CiAKICAgICBpZiAoIWpzVGFnKSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodGFnLmxlbmd0aCgpID4gMSwgInRvU3RyaW5nTmFtZSgpIHNob3VsZCByZXR1cm4gc3RyaW5n
cyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuIik7Ci0gICAgICAgIGpzVGFnID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCBXVEZNb3ZlKHRhZykpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHN0cmxlbih0YWcpID4gMSwgImdldEJ1aWx0aW5UYWcoKSBzaG91bGQgcmV0dXJuIHN0cmlu
Z3MgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nLiIpOworICAgICAgICBqc1RhZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nKHRhZykpOwogICAgIH0KIAogICAgIEpTU3RyaW5nKiBq
c1Jlc3VsdCA9IGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgdm0uc21hbGxTdHJpbmdzLm9iamVjdFN0
cmluZ1N0YXJ0KCksIGpzVGFnLCB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KCddJykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzU1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTEgKzE0OSw2IEBA
IGJvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0cKICAgICByZXR1cm4gQmFz
ZTo6cHV0KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9
CiAKLVN0cmluZyBSZWdFeHBPYmplY3Q6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikKLXsKLSAgICByZXR1cm4gIlJlZ0V4cCJfczsKLX0KLQogSlNWYWx1ZSBS
ZWdFeHBPYmplY3Q6OmV4ZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcq
IHN0cmluZykKIHsKICAgICByZXR1cm4gZXhlY0lubGluZShnbG9iYWxPYmplY3QsIHN0cmluZyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAko
cmV2aXNpb24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJldmlz
aW9uIDI3NTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxMSArMTYwLDYgQEAgdm9pZCBTdHJpbmdPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMoSgogICAgIHRoaXNPYmplY3QtPmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1T
dHJpbmcgU3RyaW5nT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJTdHJpbmciX3M7Ci19Ci0KIFN0cmluZ09iamVjdCog
Y29uc3RydWN0U3RyaW5nKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBzdHJpbmcpCiB7CiAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBTdHJpbmdPYmplY3Q6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNp
b24gMjc1NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25z
dCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425548</attachid>
            <date>2021-04-08 15:24:41 -0700</date>
            <delta_ts>2021-04-08 17:16:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224247-20210409012439.patch</filename>
            <type>text/plain</type>
            <size>39078</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAyMS0wNC0wOCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGNsYXNzTmFtZSgpIGFuZCB0b1N0cmluZ05hbWUoKSBmcm9tIHRoZSBt
ZXRob2QgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVTNiBpbnRyb2R1Y2VkIFN5bWJvbC50b1N0cmluZ1RhZyB0byBjdXN0b21pemUgT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZyByZXR1cm4gdmFsdWUuCisgICAgICAgIEl0IHdhcyBhZG9wdGVk
IGJ5IFdlYklETCBzcGVjLCBDaHJvbWUncyBEZXZUb29scywgTm9kZS5qcyBldGMuIFRoZXJlIGlz
IG5vIHJlYXNvbiB0bworICAgICAgICBrZWVwIDIgbWV0aG9kIHRhYmxlIG1ldGhvZHMsIGVhY2gg
d2l0aCBvbmx5IDEgY2FsbCBzaXRlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzeW1ib2wuCisKKyAg
ICAgICAgQWxzbywgaXQncyBhIGJpdCBjb25mdXNpbmcgdGhhdCBmb3Igc29tZSBvYmplY3RzLCBt
ZXRob2QgdGFibGUncyBjbGFzc05hbWUoKSByZXR1cm5zCisgICAgICAgIGRpZmZlcmVudCByZXN1
bHQgdGhhbiBKU0NlbGw6OmNsYXNzTmFtZShWTSYpLgorCisgICAgICAgIFRoaXMgY2hhbmdlOgor
CisgICAgICAgIDEuIFJlbW92ZXMgSlNQcm94eSdzIGNsYXNzTmFtZSgpIC8gdG9TdHJpbmdOYW1l
KCkgbWV0aG9kcyBiZWNhdXNlIGl0cyB0YXJnZXQoKSBpcyBhCisgICAgICAgICAgIGdsb2JhbCBv
YmplY3QgdGhhdCBuZXZlciBoYXMgdGhlc2Ugb3ZlcnJpZGVzIGFuZCB1c2VzIFN5bWJvbC50b1N0
cmluZ1RhZyBpbnN0ZWFkLgorCisgICAgICAgIDIuIFJlbW92ZXMgRGVidWdnZXJTY29wZSdzIGNs
YXNzTmFtZSgpIC8gdG9TdHJpbmdOYW1lKCkgb3ZlcnJpZGVzIGJlY2F1c2UgaXRzIG9iamVjdEF0
U2NvcGUoKQorICAgICAgICAgICBoYXMgdGhlc2UgbWV0aG9kcyBleHRyZW1lbHkgcmFyZWx5IChl
LmcuIGB3aXRoIChuZXcgRGF0ZSkge31gKSwgYW5kIGl0cyBub3QgZGlzcGxheWVkCisgICAgICAg
ICAgIGJ5IFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgMy4gTWVyZ2VzIEpTQ2FsbGJhY2tPYmpl
Y3QncyBjbGFzc05hbWUoKSAvIHRvU3RyaW5nTmFtZSgpIG1ldGhvZHMgaW50byBTeW1ib2wudG9T
dHJpbmdUYWcKKyAgICAgICAgICAgYnJhbmNoIG9mIGdldE93blByb3BlcnR5U2xvdCgpLCB3aXRo
IHBlcm1pc3NpdmUgcHJvcGVydHkgYXR0cmlidXRlcy4gVG8gYXZvaWQgYW55IHBvc3NpYmxlCisg
ICAgICAgICAgIGJyZWFrYWdlLCB3ZSBtYWtlIHN1cmUgdGhhdCBpdCB3aWxsIGJlIHNoYWRvd2Vk
IGJ5IGEgc3RydWN0dXJlIHByb3BlcnR5LgorCisgICAgICAgIDQuIFJld29ya3MgSlNPYmplY3Q6
OmNhbGN1bGF0ZWRDbGFzc05hbWUoKSB0byByZWx5IG9uIFN5bWJvbC50b1N0cmluZ1RhZywgbWF0
Y2hpbmcgQ2hyb21lJ3MKKyAgICAgICAgICAgRGV2VG9vbHMgYmVoYXZpb3IuIE9uIGl0cyBvd24s
IGl0J3MgYSBuaWNlIGNoYW5nZSBmb3IgV2ViIEluc3BlY3Rvci4gV2UgbWFrZSBzdXJlIHRvCisg
ICAgICAgICAgIGxvb2t1cCBTeW1ib2wudG9TdHJpbmdUYWcgaWYgYGNvbnN0cnVjdG9yLm5hbWVg
IGluZmVyZW5jZSBmYWlscyB0byBhdm9pZCBjb25mdXNpb24gd2hlbgorICAgICAgICAgICBleHRl
bmRpbmcgYnVpbHRpbnMuCisKKyAgICAgICAgNS4gUmVtb3ZlcyBub3cgdW51c2VkIGNsYXNzTmFt
ZSgpIGZyb20gdGhlIG1ldGhvZCB0YWJsZS4KKworICAgICAgICA2LiBSZW1vdmVzIHRvU3RyaW5n
TmFtZSgpIG92ZXJyaWRlIGZyb20gSlNGaW5hbGl6YXRpb25SZWdpc3RyeSBiZWNhdXNlIGl0cyBi
dWlsdGluIHRhZyBbMV0KKyAgICAgICAgICAgaXMgYWxyZWFkeSAiT2JqZWN0Ii4KKworICAgICAg
ICA3LiBJbnRyb2R1Y2VzIEJvb2xlYW5PYmplY3RUeXBlIGZvciBCb29sZWFuIHdyYXBwZXIgb2Jq
ZWN0LCBhbmQgQm9vbGVhbi5wcm90b3R5cGUgYXMgaXQncworICAgICAgICAgICBhbHNvIHJlcXVp
cmVkIHRvIGhhdmUgYSBbW0Jvb2xlYW5EYXRhXV0gaW50ZXJuYWwgc2xvdCBbMl0uCisKKyAgICAg
ICAgOC4gUmV3b3JrcyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIHRvIGRldGVybWluZSBidWls
dGluIHRhZyBbMV0gYmFzZWQgb24gSlNUeXBlIHJhdGhlciB0aGFuCisgICAgICAgICAgIHBlcmZv
cm1pbmcgbWV0aG9kIHRhYmxlIGNhbGwuIEl0J3MgZ3VhcmFudGVlZCB0aGF0IGEpIHRoZSBzZXQg
b2YgdHlwZXMgd2UgYXJlIGNoZWNraW5nCisgICAgICAgICAgIGFnYWluc3Qgd29uJ3QgYmUgZXhw
YW5kZWQsIGFuZCBiKSBvYmplY3RzIHdpdGggdGhlc2UgdHlwZXMgaGF2ZSBjb3JyZWN0IGBjbGFz
c05hbWVgLgorCisgICAgICAgIDkuIFJlbW92ZXMgbm93IHVudXNlZCB0b1N0cmluZ1RhZygpIGZy
b20gdGhlIG1ldGhvZCB0YWJsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHBlcmZvcm1hbmNl
LW5ldXRyYWwgYW5kIGNhcmVmdWxseSBwcmVzZXJ2ZXMgY3VycmVudCBiZWhhdmlvciBmb3IgQVBJ
IG9iamVjdHMsCisgICAgICAgIGluY2x1ZGluZyBpc1Bva2VyQnJvcygpIGhhY2suCisKKyAgICAg
ICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9z
dHJpbmcgKHN0ZXBzIDUtMTQpCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1ib29sZWFuLXByb3RvdHlwZS1vYmplY3QKKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmNsYXNzTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVz
dGFwaVNjcmlwdHMvdGVzdGFwaS5qczoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3Bl
LmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6Y2xhc3NOYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmg6CisgICAgICAgICogcnVudGltZS9Cb29s
ZWFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVjdDo6dG9TdHJpbmdOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6Qm9vbGVhbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3Rh
bmNlOjp0b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JJbnN0YW5jZTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp0b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFz
c05hbWUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6aXNQb2tlckJyb3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6
Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm94eTo6dG9TdHJpbmdOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6aXNQb2tlckJyb3MpOgorICAgICAgICAoSlNDOjpnZXRCdWlsdGlu
VGFnKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG90eXBlVG9TdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojp0
b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuaDoKKwogMjAyMS0wNC0wOCAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+
CiAKICAgICAgICAgW1dQRV0gQnVpbGQgZml4ZXMgZm9yIG11c2wgQyBsaWJyYXJ5IG9uIExpbnV4
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAko
cmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw5ICsxOTksNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKFZNJiwgU3Vic3BhY2VBY2Nlc3MpOwotICAgIHN0YXRpYyBTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
TmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7Ci0KICAgICBzdGF0aWMgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzEsMjYgKzEzMSw2IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KEpTR2wK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCi17Ci0gICAg
Y29uc3QgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU0NhbGxi
YWNrT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBTdHJpbmcgdGhpc0NsYXNzTmFtZSA9IHRoaXNPYmpl
Y3QtPmNsYXNzUmVmKCktPmNsYXNzTmFtZSgpOwotICAgIGlmICghdGhpc0NsYXNzTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0aGlzQ2xhc3NOYW1lOwotICAgIAotICAgIHJldHVybiBQ
YXJlbnQ6OmNsYXNzTmFtZShvYmplY3QsIHZtKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KLVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnRvU3RyaW5nTmFtZShjb25zdCBK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0g
b2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgIEFTU0VSVChpbmZvKTsKLSAgICByZXR1cm4gaW5m
by0+bWV0aG9kVGFibGUuY2xhc3NOYW1lKG9iamVjdCwgdm0pOwotfQotCi10ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKQEAgLTIxMyw3ICsxOTMsMjAgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blBybwogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOworICAgIGJvb2wgZm91bmQg
PSBQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OworICAgIGlmIChmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAocHJvcGVy
dHlOYW1lLnVpZCgpID09IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLmltcGwo
KSkgeworICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKS0+
Y2xhc3NOYW1lKCk7CisgICAgICAgIGlmIChjbGFzc05hbWUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xhc3NOYW1lKHZtKTsKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwganNTdHJpbmcodm0sIFdURk1vdmUoY2xhc3NOYW1lKSkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCShyZXZpc2lvbiAyNzU2ODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3Rh
cGkuanMJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsMTYgQEAgc2hvdWxkQmUoIk15T2Jq
ZWN0Lm51bGxHZXRTZXQiLCAxKTsKIHNob3VsZFRocm93KCJNeU9iamVjdC5udWxsQ2FsbCgpIik7
CiBzaG91bGRUaHJvdygiTXlPYmplY3QuaGFzUHJvcGVydHlMaWUiKTsKIAordmFyIHN5bWJvbFRv
U3RyaW5nVGFnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTXlP
YmplY3QsIFN5bWJvbC50b1N0cmluZ1RhZyk7CitzaG91bGRCZSgidHlwZW9mIHN5bWJvbFRvU3Ry
aW5nVGFnRGVzY3JpcHRvciIsICJvYmplY3QiKTsKK3Nob3VsZEJlKCJzeW1ib2xUb1N0cmluZ1Rh
Z0Rlc2NyaXB0b3IudmFsdWUiLCAiTXlPYmplY3QiKTsKK3Nob3VsZEJlKCJzeW1ib2xUb1N0cmlu
Z1RhZ0Rlc2NyaXB0b3Iud3JpdGFibGUiLCB0cnVlKTsKK3Nob3VsZEJlKCJzeW1ib2xUb1N0cmlu
Z1RhZ0Rlc2NyaXB0b3IuZW51bWVyYWJsZSIsIGZhbHNlKTsKK3Nob3VsZEJlKCJzeW1ib2xUb1N0
cmluZ1RhZ0Rlc2NyaXB0b3IuY29uZmlndXJhYmxlIiwgdHJ1ZSk7CisKK015T2JqZWN0W1N5bWJv
bC50b1N0cmluZ1RhZ10gPSAiRm9vIjsKK3Nob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwoTXlPYmplY3QpIiwgIltvYmplY3QgRm9vXSIpOworCiBkZXJpdmVkID0gbmV3IERl
cml2ZWQoKTsKIAogc2hvdWxkQmUoImRlcml2ZWQgaW5zdGFuY2VvZiBEZXJpdmVkIiwgdHJ1ZSk7
CkBAIC0yODIsNiArMjkyLDE2IEBAIHNob3VsZEJlKCJ0eXBlb2YgY29uc29sZS5sb2ciLCAiZnVu
Y3Rpb24KIAogc2hvdWxkQmUoIkVtcHR5T2JqZWN0IiwgIltvYmplY3QgQ2FsbGJhY2tPYmplY3Rd
Iik7CiAKK3ZhciBzeW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEVtcHR5T2JqZWN0LCBTeW1ib2wudG9TdHJpbmdUYWcpOworc2hvdWxk
QmUoInR5cGVvZiBzeW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IiLCAib2JqZWN0Iik7CitzaG91
bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLnZhbHVlIiwgIkNhbGxiYWNrT2JqZWN0
Iik7CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLndyaXRhYmxlIiwgdHJ1
ZSk7CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLmVudW1lcmFibGUiLCBm
YWxzZSk7CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSIsIHRydWUpOworCitFbXB0eU9iamVjdFtTeW1ib2wudG9TdHJpbmdUYWddID0gIkZvbyI7Citz
aG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEVtcHR5T2JqZWN0KSIsICJb
b2JqZWN0IEZvb10iKTsKKwogZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpCiAgICAgUHJvcGVy
dHlDYXRjaGFsbHMueCA9IGk7CiBzaG91bGRCZSgiUHJvcGVydHlDYXRjaGFsbHMueCIsIDQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3Bl
LmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwyOCArNjgsNiBAQCB2b2lk
IERlYnVnZ2VyU2NvcGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTCiAKIERFRklORV9WSVNJVF9DSElM
RFJFTihEZWJ1Z2dlclNjb3BlKTsKIAotU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShj
b25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0pCi17Ci0gICAgY29uc3QgRGVidWdnZXJTY29w
ZSogc2NvcGUgPSBqc0Nhc3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+KG9iamVjdCk7Ci0gICAgLy8g
V2UgY2Fubm90IGFzc2VydCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkgYmVjYXVzZSB0aGUgVHlwZVBy
b2ZpbGVyIG1heSBlbmNvdW50ZXIgYW4gaW52YWxpZGF0ZWQKLSAgICAvLyBEZWJ1Z2dlclNjb3Bl
IGluIGl0cyBsb2cgZW50cmllcy4gV2UganVzdCBuZWVkIHRvIGhhbmRsZSBpdCBhcHByb3ByaWF0
ZWx5IGFzIGJlbG93LgotICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRT
Y29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pOwotfQotCi1TdHJpbmcgRGVidWdnZXJT
Y29wZTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgY29uc3QgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8Y29uc3QgRGVidWdnZXJTY29wZSo+KG9iamVjdCk7Ci0gICAgLy8gV2UgY2Fubm90IGFzc2Vy
dCB0aGF0IHNjb3BlLT5pc1ZhbGlkKCkgYmVjYXVzZSB0aGUgVHlwZVByb2ZpbGVyIG1heSBlbmNv
dW50ZXIgYW4gaW52YWxpZGF0ZWQKLSAgICAvLyBEZWJ1Z2dlclNjb3BlIGluIGl0cyBsb2cgZW50
cmllcy4gV2UganVzdCBuZWVkIHRvIGhhbmRsZSBpdCBhcHByb3ByaWF0ZWx5IGFzIGJlbG93Lgot
ICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNT
Y29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0
LT52bSgpKS0+dG9TdHJpbmdOYW1lKHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCk7Ci19Ci0KIGJv
b2wgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxE
ZWJ1Z2dlclNjb3BlKj4ob2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIERlYnVn
Z2VyU2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTU2NvcGUqIHNjb3BlKTsKIAogICAgIERFQ0xBUkVf
VklTSVRfQ0hJTERSRU47Ci0gICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqLCBWTSYpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQw
LDQgQEAgdm9pZCBCb29sZWFuT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdgogICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9CiAKLVN0cmluZyBCb29sZWFuT2JqZWN0Ojp0b1N0
cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJu
ICJCb29sZWFuIl9zOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDggQEAgcHVibGljOgogICAgICAgICAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQm9vbGVhbk9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9Ci0KLSAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiB9Owog
c3RhdGljX2Fzc2VydChzaXplb2YoQm9vbGVhbk9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9i
amVjdCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEJvb2xlYW5PYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMiArODEsNiBAQCBz
dHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBN
RVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7CiAgICAgR2V0T3duUHJvcGVy
dHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25TcGVjaWFsUHJvcGVy
dHlOYW1lcyk7CiAKLSAgICB1c2luZyBDbGFzc05hbWVGdW5jdGlvblB0ciA9IFN0cmluZyAoKiko
Y29uc3QgSlNPYmplY3QqLCBWTSYpOwotICAgIENsYXNzTmFtZUZ1bmN0aW9uUHRyIE1FVEhPRF9U
QUJMRV9FTlRSWShjbGFzc05hbWUpOwotCi0gICAgdXNpbmcgVG9TdHJpbmdOYW1lRnVuY3Rpb25Q
dHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKLSAgICBU
b1N0cmluZ05hbWVGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkodG9TdHJpbmdOYW1lKTsK
LQogICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgPSBib29sICgqKShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgQ3VzdG9tSGFzSW5zdGFuY2VG
dW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2UpOwogCkBAIC0x
NjksOCArMTYzLDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6
ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMs
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKLSAg
ICAgICAgJkNsYXNzTmFtZTo6Y2xhc3NOYW1lLCBcCi0gICAgICAgICZDbGFzc05hbWU6OnRvU3Ry
aW5nTmFtZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpjdXN0b21IYXNJbnN0YW5jZSwgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVPd25Qcm9wZXJ0eSwgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpwcmV2ZW50RXh0ZW5zaW9ucywgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NywxMSArNDcsNiBAQCB2b2lkIERhdGVJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAg
ICAgbV9pbnRlcm5hbE51bWJlciA9IHRpbWVDbGlwKHRpbWUpOwogfQogCi1TdHJpbmcgRGF0ZUlu
c3RhbmNlOjp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17
Ci0gICAgcmV0dXJuICJEYXRlIl9zOwotfQotCiBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogRGF0
ZUluc3RhbmNlOjpjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShEYXRlQ2FjaGUmIGNhY2hlKSBj
b25zdAogewogICAgIGRvdWJsZSBtaWxsaSA9IGludGVybmFsTnVtYmVyKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gMjc1
NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxOdW1iZXI7IH0KICAgICB2b2lkIHNldEludGVybmFsTnVt
YmVyKGRvdWJsZSB2YWx1ZSkgeyBtX2ludGVybmFsTnVtYmVyID0gdmFsdWU7IH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJl
dmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksOSArMzE5LDQgQEAgYm9vbCBFcnJvcklu
c3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbAogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
LVN0cmluZyBFcnJvckluc3RhbmNlOjp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJFcnJvciJfczsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05h
bWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgdm9pZCBjb21wdXRl
RXJyb3JJbmZvKFZNJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDE4ICsyMTYsNiBAQCB2b2lkIEpT
Q2VsbDo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotU3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiwgVk0mKQotewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFN0cmluZygpOwotfQotCi1TdHJpbmcgSlNDZWxsOjp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIGNvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NO
YW1lKFZNJiB2bSkgY29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1l
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3
NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTMsOCArMjUzLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBib29sKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBK
U1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICBz
dGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7Ci0gICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjc1
NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdp
c3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSwxMSArMjM5LDYgQEAgc2l6ZV90IEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudAogICAgIHJldHVybiBjb3VudDsKIH0KIAotU3Ry
aW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIHJldHVybiAiT2JqZWN0Il9zOwotfQotCiB9
CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RmluYWxpemF0aW9uUmVnaXN0cnkuaAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw4ICs5MSw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY2FsbGJhY2sp
OwogCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopOwotCiAgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7CiAgICAgICAgIEpTT2Jq
ZWN0KiB0YXJnZXQ7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBob2xkaW5nczsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9u
IDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgpAQCAtNDUsMTAgKzQ0LDYgQEAKICNpbmNsdWRlICJWTUlubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQot
I2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
SlNDIHsKIAogLy8gV2Uga2VlcCB0cmFjayBvZiB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBhcnJheSBh
ZnRlciBpdCB3YXMgZ3Jvd24uIFdlIHVzZSB0aGlzCkBAIC00ODUsNDYgKzQ4MCw2IEBAIHZvaWQg
SlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlMKIAogREVGSU5FX1ZJU0lUX0NISUxE
UkVOX1dJVEhfTU9ESUZJRVIoSlNfRVhQT1JUX1BSSVZBVEUsIEpTRmluYWxPYmplY3QpOwogCi1T
dHJpbmcgSlNPYmplY3Q6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBWTSYgdm0p
Ci17Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwot
ICAgIEFTU0VSVChpbmZvKTsKLSAgICByZXR1cm4gaW5mby0+Y2xhc3NOYW1lOwotfQotCi0jaWYg
UExBVEZPUk0oSU9TKQotaW5saW5lIHN0YXRpYyBib29sIGlzUG9rZXJCcm9zKCkKLXsKLSAgICBh
dXRvIGJ1bmRsZUlEID0gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKENGQnVuZGxlR2V0TWFpbkJ1bmRs
ZSgpKTsKLSAgICByZXR1cm4gYnVuZGxlSUQKLSAgICAgICAgJiYgQ0ZFcXVhbChidW5kbGVJRCwg
Q0ZTVFIoImNvbS5rcGdhbWUuUG9rZXJCcm9zIikpCi0gICAgICAgICYmIGR5bGRfZ2V0X3Byb2dy
YW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05fMTRfMDsKLX0KLSNlbmRpZgotCi1T
dHJpbmcgSlNPYmplY3Q6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgc3RhdGljIGJvb2wgbmVlZHNPbGRTdHJpbmdO
YW1lID0gaXNQb2tlckJyb3MoKTsKLSAgICBpZiAoVU5MSUtFTFkobmVlZHNPbGRTdHJpbmdOYW1l
KSkgewotICAgICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBvYmplY3QtPmNsYXNzSW5mbyh2
bSk7Ci0gICAgICAgIEFTU0VSVChpbmZvKTsKLSAgICAgICAgcmV0dXJuIGluZm8tPmNsYXNzTmFt
ZTsKLSAgICB9Ci0jZW5kaWYKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYm9vbCBvYmplY3RJc0FycmF5ID0gaXNBcnJheShnbG9iYWxPYmplY3QsIG9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5nKCkpOwotICAgIGlmIChv
YmplY3RJc0FycmF5KQotICAgICAgICByZXR1cm4gIkFycmF5Il9zOwotICAgIGlmIChUeXBlSW5m
bzo6aXNBcmd1bWVudHNUeXBlKG9iamVjdC0+dHlwZSgpKSkKLSAgICAgICAgcmV0dXJuICJBcmd1
bWVudHMiX3M7Ci0gICAgaWYgKGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLT5pc0NhbGxh
YmxlKHZtKSkKLSAgICAgICAgcmV0dXJuICJGdW5jdGlvbiJfczsKLSAgICByZXR1cm4gIk9iamVj
dCJfczsKLX0KLQogU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgU3RyaW5nIGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lOwpAQCAtNTgw
LDkgKzUzNSwyMiBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAg
ICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoY29uc3RydWN0b3JGdW5j
dGlvbk5hbWUuaXNOdWxsKCkgfHwgY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgPT0gIk9iamVjdCIp
IHsKLSAgICAgICAgU3RyaW5nIHRhYmxlQ2xhc3NOYW1lID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmNsYXNzTmFtZShvYmplY3QsIHZtKTsKLSAgICAgICAgaWYgKCF0YWJsZUNsYXNzTmFtZS5p
c051bGwoKSAmJiB0YWJsZUNsYXNzTmFtZSAhPSAiT2JqZWN0IikKLSAgICAgICAgICAgIHJldHVy
biB0YWJsZUNsYXNzTmFtZTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgICAgICBp
ZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbCwgc2xvdCkpIHsKKyAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkg
eworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wpOworICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0
YWcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGFnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwogCiAgICAgICAgIFN0cmluZyBjbGFzc0luZm9OYW1lID0gb2Jq
ZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWU7CiAgICAgICAgIGlmICghY2xhc3NJbmZvTmFt
ZS5pc051bGwoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE1ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZN
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSGVhcEFuYWx5emVyJik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5n
IGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0Kik7CiAKLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIHdoYXQgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpIHdpbGwgdXNl
IHRvIGdldCB0aGUgbmFtZSBvZgotICAgIC8vIGFuIG9iamVjdCB3aGVuIHVzaW5nIFN5bWJvbC50
b1N0cmluZ1RhZyBmYWlscy4gRm9yIHRoZSBtb3N0IHBhcnQgdGhlcmUgaXMgbm8KLSAgICAvLyBk
aWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgY2xhc3NOYW1lKCkuIFRoZSBtYWluIHVzZSBjYXNl
IGlzIGZvciBuZXcgSlMgbGFuZ3VhZ2UKLSAgICAvLyBvYmplY3RzIHRvIHNldCB0aGUgZGVmYXVs
dCB0YWcgdG8gIk9iamVjdCIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwotCiAgICAgLy8g
VGhpcyBpcyB0aGUgZnVsbHkgdmlydHVhbCBbW0dldFByb3RvdHlwZU9mXV0gaW50ZXJuYWwgZnVu
Y3Rpb24gZGVmaW5lZAogICAgIC8vIGluIHRoZSBFQ01BU2NyaXB0IDYgc3BlY2lmaWNhdGlvbi4g
VXNlIHRoaXMgd2hlbiBkb2luZyBhIFtbR2V0UHJvdG90eXBlT2ZdXSAKICAgICAvLyBvcGVyYXRp
b24gYXMgZGljdGF0ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDE4ICs1Miw2IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWwKICAg
ICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSk7CiB9CiAKLVN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9i
amVjdCwgVk0mIHZtKQotewotICAgIGNvbnN0IEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Y29uc3QgSlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgdm0pOwot
fQotCi1TdHJpbmcgSlNQcm94eTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgY29uc3QgSlNQcm94eSogdGhp
c09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnRvU3Ry
aW5nTmFtZSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQogYm9vbCBK
U1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9i
amVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCShyZXZp
c2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgREVDTEFS
RV9WSVNJVF9DSElMRFJFTl9XSVRIX01PRElGSUVSKEpTX0VYUE9SVF9QUklWQVRFKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiwgVk0mKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFt
ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuY3BwCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0MKICAgICBDQVNFKEpTRnVu
Y3Rpb25UeXBlKQogICAgIENBU0UoSW50ZXJuYWxGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShOdWxs
U2V0dGVyRnVuY3Rpb25UeXBlKQorICAgIENBU0UoQm9vbGVhbk9iamVjdFR5cGUpCiAgICAgQ0FT
RShOdW1iZXJPYmplY3RUeXBlKQogICAgIENBU0UoRXJyb3JJbnN0YW5jZVR5cGUpCiAgICAgQ0FT
RShQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogICAgIEpTRnVuY3Rpb25UeXBlLAogICAgIEludGVybmFsRnVuY3Rp
b25UeXBlLAogICAgIE51bGxTZXR0ZXJGdW5jdGlvblR5cGUsCisgICAgQm9vbGVhbk9iamVjdFR5
cGUsCiAgICAgTnVtYmVyT2JqZWN0VHlwZSwKICAgICBFcnJvckluc3RhbmNlVHlwZSwKICAgICBQ
dXJlRm9yd2FyZGluZ1Byb3h5VHlwZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTEgKzQyLDYgQEAgdm9pZCBOdW1iZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bQog
ICAgIEFTU0VSVCh0eXBlKCkgPT0gTnVtYmVyT2JqZWN0VHlwZSk7CiB9CiAKLVN0cmluZyBOdW1i
ZXJPYmplY3Q6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KikK
LXsKLSAgICByZXR1cm4gIk51bWJlciJfczsKLX0KLQogTnVtYmVyT2JqZWN0KiBjb25zdHJ1Y3RO
dW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBudW1iZXIpCiB7CiAg
ICAgTnVtYmVyT2JqZWN0KiBvYmplY3QgPSBOdW1iZXJPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdC0+bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9u
IDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE51bWJlck9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9
Ci0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0Kik7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoTnVtYmVyT2JqZWN0KSA9PSBz
aXplb2YoSlNXcmFwcGVyT2JqZWN0KSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5o
IgogI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNWYWx1ZU9m
KTsKQEAgLTMxMSw2ICszMTYsNDQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFBy
b3RvRnVuYwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZ2xvYmFsT2JqZWN0LCB0b1N0cmluZywgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5
TGlzdCkpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2lubGluZSBzdGF0aWMgYm9vbCBpc1Bv
a2VyQnJvcygpCit7CisgICAgYXV0byBidW5kbGVJRCA9IENGQnVuZGxlR2V0SWRlbnRpZmllcihD
RkJ1bmRsZUdldE1haW5CdW5kbGUoKSk7CisgICAgcmV0dXJuIGJ1bmRsZUlECisgICAgICAgICYm
IENGRXF1YWwoYnVuZGxlSUQsIENGU1RSKCJjb20ua3BnYW1lLlBva2VyQnJvcyIpKQorICAgICAg
ICAmJiBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzE0
XzA7Cit9CisjZW5kaWYKKworaW5saW5lIGNvbnN0IGNoYXIqIGdldEJ1aWx0aW5UYWcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29s
IG5lZWRzT2xkQnVpbHRpblRhZyA9IGlzUG9rZXJCcm9zKCk7CisgICAgaWYgKFVOTElLRUxZKG5l
ZWRzT2xkQnVpbHRpblRhZykpCisgICAgICAgIHJldHVybiBvYmplY3QtPmNsYXNzTmFtZSh2bSk7
CisjZW5kaWYKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
Ym9vbCBvYmplY3RJc0FycmF5ID0gaXNBcnJheShnbG9iYWxPYmplY3QsIG9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgaWYgKG9iamVjdElzQXJy
YXkpCisgICAgICAgIHJldHVybiAiQXJyYXkiOworICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUo
dm0pKQorICAgICAgICByZXR1cm4gIkZ1bmN0aW9uIjsKKyAgICBKU1R5cGUgdHlwZSA9IG9iamVj
dC0+dHlwZSgpOworICAgIGlmIChUeXBlSW5mbzo6aXNBcmd1bWVudHNUeXBlKHR5cGUpCisgICAg
ICAgIHx8IHR5cGUgPT0gRXJyb3JJbnN0YW5jZVR5cGUKKyAgICAgICAgfHwgdHlwZSA9PSBCb29s
ZWFuT2JqZWN0VHlwZQorICAgICAgICB8fCB0eXBlID09IE51bWJlck9iamVjdFR5cGUKKyAgICAg
ICAgfHwgdHlwZSA9PSBTdHJpbmdPYmplY3RUeXBlCisgICAgICAgIHx8IHR5cGUgPT0gRGVyaXZl
ZFN0cmluZ09iamVjdFR5cGUKKyAgICAgICAgfHwgdHlwZSA9PSBKU0RhdGVUeXBlCisgICAgICAg
IHx8IHR5cGUgPT0gUmVnRXhwT2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIG9iamVjdC0+Y2xh
c3NOYW1lKHZtKTsKKyAgICByZXR1cm4gIk9iamVjdCI7Cit9CisKIEpTU3RyaW5nKiBvYmplY3RQ
cm90b3R5cGVUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0zMjgsNyAr
MzcxLDcgQEAgSlNTdHJpbmcqIG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKEpTR2xvYgogICAgIGlm
IChyZXN1bHQpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhyZXN1bHQpOwogCi0gICAgU3RyaW5n
IHRhZyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9TdHJpbmdOYW1lKHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCk7CisgICAgY29uc3QgY2hhciogdGFnID0gZ2V0QnVpbHRpblRhZyhn
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogICAgIEpTU3RyaW5nKiBqc1RhZyA9IG51bGxwdHI7CiAKQEAgLTM0Myw4ICsz
ODYsOCBAQCBKU1N0cmluZyogb2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoSlNHbG9iCiAgICAgfQog
CiAgICAgaWYgKCFqc1RhZykgewotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRhZy5sZW5n
dGgoKSA+IDEsICJ0b1N0cmluZ05hbWUoKSBzaG91bGQgcmV0dXJuIHN0cmluZ3MgdHdvIG9yIG1v
cmUgY2hhcmFjdGVycyBsb25nLiIpOwotICAgICAgICBqc1RhZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgV1RGTW92ZSh0YWcpKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdHJsZW4o
dGFnKSA+IDEsICJnZXRCdWlsdGluVGFnKCkgc2hvdWxkIHJldHVybiBzdHJpbmdzIHR3byBvciBt
b3JlIGNoYXJhY3RlcnMgbG9uZy4iKTsKKyAgICAgICAganNUYWcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIFN0cmluZyh0YWcpKTsKICAgICB9CiAKICAgICBKU1N0cmluZyoganNSZXN1bHQgPSBq
c1N0cmluZyhnbG9iYWxPYmplY3QsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFydCgp
LCBqc1RhZywgdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygnXScpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAko
cmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDExICsxNDksNiBAQCBib29sIFJlZ0V4
cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHCiAgICAgcmV0dXJuIEJhc2U6OnB1dChjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1TdHJpbmcg
UmVnRXhwT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopCi17Ci0gICAgcmV0dXJuICJSZWdFeHAiX3M7Ci19Ci0KIEpTVmFsdWUgUmVnRXhwT2JqZWN0
OjpleGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7
CiAgICAgcmV0dXJuIGV4ZWNJbmxpbmUoZ2xvYmFsT2JqZWN0LCBzdHJpbmcpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI3
NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyNzU2ODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjAsMTEgKzE2MCw2IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEoKICAgICB0aGlzT2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotU3RyaW5nIFN0cmlu
Z09iamVjdDo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQot
ewotICAgIHJldHVybiAiU3RyaW5nIl9zOwotfQotCiBTdHJpbmdPYmplY3QqIGNvbnN0cnVjdFN0
cmluZyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc3RyaW5n
KQogewogICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gU3RyaW5nT2JqZWN0OjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjc1NjgyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMDggIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFJlbW92ZSBjbGFzc05hbWUoKSBhbmQgdG9TdHJp
bmdOYW1lKCkgZnJvbSB0aGUgbWV0aG9kIHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdl
dC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVt
b3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy5odG1sOgorCiAyMDIxLTA0LTA4ICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0ZXN0IGluZnJh
c3RydWN0dXJlIGZvciBhcHAgYm91bmQgcmVxdWVzdCBjb250ZXh0IHN0cmluZwpJbmRleDogTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NjgyKQor
KysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNiArNDY3LDcgQEAgT1dOIFBS
T1BFUlRJRVM6CiAgICAgU3ltYm9sKHN5bSkKICAgICBTeW1ib2woc3ltKQogICAgIFN5bWJvbCgp
CisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykKICAgICBfX3Byb3RvX18KIAogRElTUExB
WUFCTEUgUFJPUEVSVElFUzoKQEAgLTQ3Niw2ICs0NzcsNyBAQCBESVNQTEFZQUJMRSBQUk9QRVJU
SUVTOgogICAgIFN5bWJvbChzeW0pCiAgICAgU3ltYm9sKHN5bSkKICAgICBTeW1ib2woKQorICAg
IFN5bWJvbChTeW1ib2wudG9TdHJpbmdUYWcpCiAgICAgX19wcm90b19fCiAKIEFMTCBQUk9QRVJU
SUVTOgpAQCAtNDg1LDYgKzQ4Nyw3IEBAIEFMTCBQUk9QRVJUSUVTOgogICAgIFN5bWJvbChzeW0p
CiAgICAgU3ltYm9sKHN5bSkKICAgICBTeW1ib2woKQorICAgIFN5bWJvbChTeW1ib2wudG9TdHJp
bmdUYWcpCiAgICAgdG9TdHJpbmcKICAgICB0b0xvY2FsZVN0cmluZwogICAgIHZhbHVlT2YKQEAg
LTUwMCw2ICs1MDMsNjUgQEAgQUxMIFBST1BFUlRJRVM6CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRVhQUkVTU0lPTjogd2luZG93Lm9iamVj
dFdpdGhTeW1ib2xUb1N0cmluZ1RhZwordHlwZTogb2JqZWN0CitkZXNjcmlwdGlvbjogRm9vCisK
K09XTiBQUk9QRVJUSUVTOgorICAgIFN5bWJvbChTeW1ib2wudG9TdHJpbmdUYWcpCisgICAgX19w
cm90b19fCisKK0RJU1BMQVlBQkxFIFBST1BFUlRJRVM6CisgICAgU3ltYm9sKFN5bWJvbC50b1N0
cmluZ1RhZykKKyAgICBfX3Byb3RvX18KKworQUxMIFBST1BFUlRJRVM6CisgICAgU3ltYm9sKFN5
bWJvbC50b1N0cmluZ1RhZykKKyAgICB0b1N0cmluZworICAgIHRvTG9jYWxlU3RyaW5nCisgICAg
dmFsdWVPZgorICAgIGhhc093blByb3BlcnR5CisgICAgcHJvcGVydHlJc0VudW1lcmFibGUKKyAg
ICBpc1Byb3RvdHlwZU9mCisgICAgX19kZWZpbmVHZXR0ZXJfXworICAgIF9fZGVmaW5lU2V0dGVy
X18KKyAgICBfX2xvb2t1cEdldHRlcl9fCisgICAgX19sb29rdXBTZXR0ZXJfXworICAgIGNvbnN0
cnVjdG9yCisgICAgX19wcm90b19fCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorRVhQUkVTU0lPTjogd2luZG93Lm9iamVjdFdpdGhTaGFkb3dl
ZFN5bWJvbFRvU3RyaW5nVGFnCit0eXBlOiBvYmplY3QKK2Rlc2NyaXB0aW9uOiBGb28KKworT1dO
IFBST1BFUlRJRVM6CisgICAgX19wcm90b19fCisKK0RJU1BMQVlBQkxFIFBST1BFUlRJRVM6Cisg
ICAgX19wcm90b19fCisKK0FMTCBQUk9QRVJUSUVTOgorICAgIGNvbnN0cnVjdG9yCisgICAgYWRk
RXZlbnRMaXN0ZW5lcgorICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIKKyAgICBkaXNwYXRjaEV2ZW50
CisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykKKyAgICB0b1N0cmluZworICAgIHRvTG9j
YWxlU3RyaW5nCisgICAgdmFsdWVPZgorICAgIGhhc093blByb3BlcnR5CisgICAgcHJvcGVydHlJ
c0VudW1lcmFibGUKKyAgICBpc1Byb3RvdHlwZU9mCisgICAgX19kZWZpbmVHZXR0ZXJfXworICAg
IF9fZGVmaW5lU2V0dGVyX18KKyAgICBfX2xvb2t1cEdldHRlcl9fCisgICAgX19sb29rdXBTZXR0
ZXJfXworICAgIF9fcHJvdG9fXworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIEVYUFJFU1NJT046IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdt
eS1zZWxlY3QnKS5vcHRpb25zCiB0eXBlOiBvYmplY3QKIHN1YnR5cGU6IGFycmF5CkluZGV4OiBM
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2Jq
ZWN0LWdldC1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDI3NTY4MikKKysrIExheW91dFRlc3Rz
L2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDkgQEAgdmFyIGNvbXBsZXhPYmplY3QgPSBuZXcgU3VwZXJG
b287CiB2YXIgYmFkR2V0dGVyT2JqZWN0ID0gbmV3IENsYXNzV2l0aEJhZEdldHRlcjsKIHZhciB1
bmJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coYXJndW1lbnRzKTsgfQog
dmFyIGJvdW5kRnVuY3Rpb24gPSB1bmJvdW5kRnVuY3Rpb24uYmluZChkb2N1bWVudC5ib2R5LCAx
LCAyLCAzKTsKLXZhciBvYmplY3RXaXRoU3ltYm9sUHJvcGVydGllcyA9IHtwcm9wOjEsIFtTeW1i
b2woKV06MiwgW1N5bWJvbCgnc3ltJyldOjMsIFtTeW1ib2woJ3N5bScpXTo0LCBbU3ltYm9sKCld
OiBTeW1ib2woKSwgcHJvcDI6IDV9OwordmFyIG9iamVjdFdpdGhTeW1ib2xQcm9wZXJ0aWVzID0g
e3Byb3A6MSwgW1N5bWJvbCgpXToyLCBbU3ltYm9sKCdzeW0nKV06MywgW1N5bWJvbCgnc3ltJyld
OjQsIFtTeW1ib2woKV06IFN5bWJvbCgpLCBbU3ltYm9sLnRvU3RyaW5nVGFnXTogbmV3IFN0cmlu
ZygiSWdub3JlZFRhZyIpLCBwcm9wMjogNX07Cit2YXIgb2JqZWN0V2l0aFN5bWJvbFRvU3RyaW5n
VGFnID0ge1tTeW1ib2wudG9TdHJpbmdUYWddOiAiRm9vIn07Cit2YXIgb2JqZWN0V2l0aFNoYWRv
d2VkU3ltYm9sVG9TdHJpbmdUYWcgPSBuZXcgKGNsYXNzIEZvbyBleHRlbmRzIEV2ZW50VGFyZ2V0
IHt9KTsKIAogLy8gLS0tLS0tLS0KIC8vICAgdGVzdApAQCAtNjQsNiArNjYsOCBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAge2V4cHJlc3Npb246ICJ3aW5kb3cudW5ib3VuZEZ1bmN0aW9uIn0s
CiAgICAgICAgIHtleHByZXNzaW9uOiAid2luZG93LmJvdW5kRnVuY3Rpb24ifSwKICAgICAgICAg
e2V4cHJlc3Npb246ICJ3aW5kb3cub2JqZWN0V2l0aFN5bWJvbFByb3BlcnRpZXMifSwKKyAgICAg
ICAge2V4cHJlc3Npb246ICJ3aW5kb3cub2JqZWN0V2l0aFN5bWJvbFRvU3RyaW5nVGFnIn0sCisg
ICAgICAgIHtleHByZXNzaW9uOiAid2luZG93Lm9iamVjdFdpdGhTaGFkb3dlZFN5bWJvbFRvU3Ry
aW5nVGFnIn0sCiAgICAgICAgIHtleHByZXNzaW9uOiAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J215LXNlbGVjdCcpLm9wdGlvbnMifSwKICAgICBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425564</attachid>
            <date>2021-04-08 17:16:48 -0700</date>
            <delta_ts>2021-04-09 18:00:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224247-20210409031646.patch</filename>
            <type>text/plain</type>
            <size>39279</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wNC0wOCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGNsYXNzTmFtZSgpIGFuZCB0b1N0cmluZ05hbWUoKSBmcm9tIHRoZSBt
ZXRob2QgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDI0NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IEVTNiBpbnRyb2R1Y2VkIFN5bWJvbC50b1N0cmluZ1RhZyB0byBjdXN0b21pemUgT2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZyByZXR1cm4gdmFsdWUuCisgICAgICAgIEl0IHdhcyBhZG9wdGVkIGJ5
IFdlYklETCBzcGVjLCBDaHJvbWUncyBEZXZUb29scywgTm9kZS5qcyBldGMuIFRoZXJlIGlzIG5v
IHJlYXNvbiB0bworICAgICAgICBrZWVwIDIgbWV0aG9kIHRhYmxlIG1ldGhvZHMsIGVhY2ggd2l0
aCBvbmx5IDEgY2FsbCBzaXRlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzeW1ib2wuCisKKyAgICAg
ICAgQWxzbywgaXQncyBhIGJpdCBjb25mdXNpbmcgdGhhdCBmb3Igc29tZSBvYmplY3RzLCBtZXRo
b2QgdGFibGUncyBjbGFzc05hbWUoKSByZXR1cm5zCisgICAgICAgIGRpZmZlcmVudCByZXN1bHQg
dGhhbiBKU0NlbGw6OmNsYXNzTmFtZShWTSYpLgorCisgICAgICAgIFRoaXMgY2hhbmdlOgorCisg
ICAgICAgIDEuIFJlbW92ZXMgSlNQcm94eSdzIGNsYXNzTmFtZSgpIC8gdG9TdHJpbmdOYW1lKCkg
bWV0aG9kcyBiZWNhdXNlIGl0cyB0YXJnZXQoKSBpcyBhCisgICAgICAgICAgIGdsb2JhbCBvYmpl
Y3QgdGhhdCBuZXZlciBoYXMgdGhlc2Ugb3ZlcnJpZGVzIGFuZCB1c2VzIFN5bWJvbC50b1N0cmlu
Z1RhZyBpbnN0ZWFkLgorCisgICAgICAgIDIuIFJlbW92ZXMgRGVidWdnZXJTY29wZSdzIGNsYXNz
TmFtZSgpIC8gdG9TdHJpbmdOYW1lKCkgb3ZlcnJpZGVzIGJlY2F1c2UgaXRzIG9iamVjdEF0U2Nv
cGUoKQorICAgICAgICAgICBoYXMgdGhlc2UgbWV0aG9kcyBleHRyZW1lbHkgcmFyZWx5IChlLmcu
IGB3aXRoIChuZXcgRGF0ZSkge31gKSwgYW5kIGl0cyBub3QgZGlzcGxheWVkCisgICAgICAgICAg
IGJ5IFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgMy4gTWVyZ2VzIEpTQ2FsbGJhY2tPYmplY3Qn
cyBjbGFzc05hbWUoKSAvIHRvU3RyaW5nTmFtZSgpIG1ldGhvZHMgaW50byBTeW1ib2wudG9TdHJp
bmdUYWcKKyAgICAgICAgICAgYnJhbmNoIG9mIGdldE93blByb3BlcnR5U2xvdCgpLCB3aXRoIHBl
cm1pc3NpdmUgcHJvcGVydHkgYXR0cmlidXRlcy4gVG8gYXZvaWQgYW55IHBvc3NpYmxlCisgICAg
ICAgICAgIGJyZWFrYWdlLCB3ZSBtYWtlIHN1cmUgdGhhdCBpdCB3aWxsIGJlIHNoYWRvd2VkIGJ5
IGEgc3RydWN0dXJlIHByb3BlcnR5LgorCisgICAgICAgIDQuIFJld29ya3MgSlNPYmplY3Q6OmNh
bGN1bGF0ZWRDbGFzc05hbWUoKSB0byByZWx5IG9uIFN5bWJvbC50b1N0cmluZ1RhZywgbWF0Y2hp
bmcgQ2hyb21lJ3MKKyAgICAgICAgICAgRGV2VG9vbHMgYmVoYXZpb3IuIE9uIGl0cyBvd24sIGl0
J3MgYSBuaWNlIGNoYW5nZSBmb3IgV2ViIEluc3BlY3Rvci4gV2UgbWFrZSBzdXJlIHRvCisgICAg
ICAgICAgIGxvb2t1cCBTeW1ib2wudG9TdHJpbmdUYWcgaWYgYGNvbnN0cnVjdG9yLm5hbWVgIGlu
ZmVyZW5jZSBmYWlscyB0byBhdm9pZCBjb25mdXNpb24gd2hlbgorICAgICAgICAgICBleHRlbmRp
bmcgYnVpbHRpbnMuCisKKyAgICAgICAgNS4gUmVtb3ZlcyBub3cgdW51c2VkIGNsYXNzTmFtZSgp
IGZyb20gdGhlIG1ldGhvZCB0YWJsZS4KKworICAgICAgICA2LiBSZW1vdmVzIHRvU3RyaW5nTmFt
ZSgpIG92ZXJyaWRlIGZyb20gSlNGaW5hbGl6YXRpb25SZWdpc3RyeSBiZWNhdXNlIGl0cyBidWls
dGluIHRhZyBbMV0KKyAgICAgICAgICAgaXMgYWxyZWFkeSAiT2JqZWN0Ii4KKworICAgICAgICA3
LiBJbnRyb2R1Y2VzIEJvb2xlYW5PYmplY3RUeXBlIGZvciBCb29sZWFuIHdyYXBwZXIgb2JqZWN0
LCBhbmQgQm9vbGVhbi5wcm90b3R5cGUgYXMgaXQncworICAgICAgICAgICBhbHNvIHJlcXVpcmVk
IHRvIGhhdmUgYSBbW0Jvb2xlYW5EYXRhXV0gaW50ZXJuYWwgc2xvdCBbMl0uCisKKyAgICAgICAg
OC4gUmV3b3JrcyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIHRvIGRldGVybWluZSBidWlsdGlu
IHRhZyBbMV0gYmFzZWQgb24gSlNUeXBlIHJhdGhlciB0aGFuCisgICAgICAgICAgIHBlcmZvcm1p
bmcgbWV0aG9kIHRhYmxlIGNhbGwuIEl0J3MgZ3VhcmFudGVlZCB0aGF0IGEpIHRoZSBzZXQgb2Yg
dHlwZXMgd2UgYXJlIGNoZWNraW5nCisgICAgICAgICAgIGFnYWluc3Qgd29uJ3QgYmUgZXhwYW5k
ZWQsIGFuZCBiKSBvYmplY3RzIHdpdGggdGhlc2UgdHlwZXMgaGF2ZSBjb3JyZWN0IGBjbGFzc05h
bWVgLgorCisgICAgICAgIDkuIFJlbW92ZXMgbm93IHVudXNlZCB0b1N0cmluZ1RhZygpIGZyb20g
dGhlIG1ldGhvZCB0YWJsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIHBlcmZvcm1hbmNlLW5l
dXRyYWwgYW5kIGNhcmVmdWxseSBwcmVzZXJ2ZXMgY3VycmVudCBiZWhhdmlvciBmb3IgQVBJIG9i
amVjdHMsCisgICAgICAgIGluY2x1ZGluZyBpc1Bva2VyQnJvcygpIGhhY2suCisKKyAgICAgICAg
WzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJp
bmcgKHN0ZXBzIDUtMTQpCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3Nl
Yy1wcm9wZXJ0aWVzLW9mLXRoZS1ib29sZWFuLXByb3RvdHlwZS1vYmplY3QKKworICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmNsYXNzTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aVNjcmlwdHMvdGVzdGFwaS5qczoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNw
cDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmg6CisgICAgICAgICogcnVudGltZS9Cb29sZWFu
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVjdDo6dG9TdHJpbmdOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6Qm9vbGVhbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jv
b2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNl
Ojp0b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNl
Lmg6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
RXJyb3JJbnN0YW5jZTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0b1N0cmluZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05h
bWUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6aXNQb2tlckJyb3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Y2xh
c3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm94eTo6dG9TdHJpbmdOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OnRvU3RyaW5nTmFtZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9OdW1iZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6aXNQb2tlckJyb3MpOgorICAgICAgICAoSlNDOjppbmZlckJ1aWx0aW5U
YWcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b3R5cGVUb1N0cmluZyk6CisgICAgICAgIDEu
IFJlbW92ZXMganNOb250cml2aWFsU3RyaW5nKCkgYmVjYXVzZSBpdCdzIGFzc2VydGlvbiBtYXkg
ZmFpbCBpbiBjYXNlIG9mIGlPUyBoYWNrLgorICAgICAgICAyLiBVdGlsaXplcyBBdG9tU3RyaW5n
SW1wbCB0byBhdm9pZCBhbGxvY2F0aW5nIFN0cmluZ0ltcGwgZm9yIGEgc21hbGwgZml4ZWQgc2V0
IG9mIHN0cmluZ3MuCisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6dG9TdHJpbmdOYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0Ojp0b1N0cmluZ05hbWUpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisKIDIwMjEtMDQtMDggIEtoZW0g
UmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGZpeGVzIGZv
ciBtdXNsIEMgbGlicmFyeSBvbiBMaW51eApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
OSArMTk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChWTSYsIFN1YnNwYWNlQWNjZXNz
KTsKLSAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwotCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzU2
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDI2ICsxMzEsNiBAQCB2b2lkIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6aW5pdChKU0dsCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1T
dHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3Qq
IG9iamVjdCwgVk0mIHZtKQotewotICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7Ci0gICAgU3RyaW5n
IHRoaXNDbGFzc05hbWUgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpLT5jbGFzc05hbWUoKTsKLSAg
ICBpZiAoIXRoaXNDbGFzc05hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdGhpc0NsYXNz
TmFtZTsKLSAgICAKLSAgICByZXR1cm4gUGFyZW50OjpjbGFzc05hbWUob2JqZWN0LCB2bSk7Ci19
Ci0KLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1TdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAg
IGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICBBU1NF
UlQoaW5mbyk7Ci0gICAgcmV0dXJuIGluZm8tPm1ldGhvZFRhYmxlLmNsYXNzTmFtZShvYmplY3Qs
IHZtKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CkBAIC0yMTMs
NyArMTkzLDIwIEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgUGFyZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKTsKKyAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAoZm91bmQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKHByb3BlcnR5TmFtZS51aWQoKSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbC5pbXBsKCkpIHsKKyAgICAgICAgU3RyaW5nIGNsYXNzTmFtZSA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCktPmNsYXNzTmFtZSgpOworICAgICAgICBpZiAoY2xhc3NO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXNPYmplY3QtPmNsYXNz
TmFtZSh2bSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGpzU3RyaW5nKHZtLCBXVEZN
b3ZlKGNsYXNzTmFtZSkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaVNjcmlwdHMvdGVz
dGFwaS5qcwkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0YXBpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiAr
MTk4LDE2IEBAIHNob3VsZEJlKCJNeU9iamVjdC5udWxsR2V0U2V0IiwgMSk7CiBzaG91bGRUaHJv
dygiTXlPYmplY3QubnVsbENhbGwoKSIpOwogc2hvdWxkVGhyb3coIk15T2JqZWN0Lmhhc1Byb3Bl
cnR5TGllIik7CiAKK3ZhciBzeW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKE15T2JqZWN0LCBTeW1ib2wudG9TdHJpbmdUYWcpOworc2hv
dWxkQmUoInR5cGVvZiBzeW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IiLCAib2JqZWN0Iik7Citz
aG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLnZhbHVlIiwgIk15T2JqZWN0Iik7
CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLndyaXRhYmxlIiwgdHJ1ZSk7
CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLmVudW1lcmFibGUiLCBmYWxz
ZSk7CitzaG91bGRCZSgic3ltYm9sVG9TdHJpbmdUYWdEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIs
IHRydWUpOworCitNeU9iamVjdFtTeW1ib2wudG9TdHJpbmdUYWddID0gIkZvbyI7CitzaG91bGRC
ZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE15T2JqZWN0KSIsICJbb2JqZWN0IEZv
b10iKTsKKwogZGVyaXZlZCA9IG5ldyBEZXJpdmVkKCk7CiAKIHNob3VsZEJlKCJkZXJpdmVkIGlu
c3RhbmNlb2YgRGVyaXZlZCIsIHRydWUpOwpAQCAtMjgyLDYgKzI5MiwxNiBAQCBzaG91bGRCZSgi
dHlwZW9mIGNvbnNvbGUubG9nIiwgImZ1bmN0aW9uCiAKIHNob3VsZEJlKCJFbXB0eU9iamVjdCIs
ICJbb2JqZWN0IENhbGxiYWNrT2JqZWN0XSIpOwogCit2YXIgc3ltYm9sVG9TdHJpbmdUYWdEZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbXB0eU9iamVjdCwgU3lt
Ym9sLnRvU3RyaW5nVGFnKTsKK3Nob3VsZEJlKCJ0eXBlb2Ygc3ltYm9sVG9TdHJpbmdUYWdEZXNj
cmlwdG9yIiwgIm9iamVjdCIpOworc2hvdWxkQmUoInN5bWJvbFRvU3RyaW5nVGFnRGVzY3JpcHRv
ci52YWx1ZSIsICJDYWxsYmFja09iamVjdCIpOworc2hvdWxkQmUoInN5bWJvbFRvU3RyaW5nVGFn
RGVzY3JpcHRvci53cml0YWJsZSIsIHRydWUpOworc2hvdWxkQmUoInN5bWJvbFRvU3RyaW5nVGFn
RGVzY3JpcHRvci5lbnVtZXJhYmxlIiwgZmFsc2UpOworc2hvdWxkQmUoInN5bWJvbFRvU3RyaW5n
VGFnRGVzY3JpcHRvci5jb25maWd1cmFibGUiLCB0cnVlKTsKKworRW1wdHlPYmplY3RbU3ltYm9s
LnRvU3RyaW5nVGFnXSA9ICJGb28iOworc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChFbXB0eU9iamVjdCkiLCAiW29iamVjdCBGb29dIik7CisKIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgKytpKQogICAgIFByb3BlcnR5Q2F0Y2hhbGxzLnggPSBpOwogc2hvdWxkQmUoIlBy
b3BlcnR5Q2F0Y2hhbGxzLngiLCA0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsMjggKzY4LDYgQEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjp2aXNpdENoaWxkcmVuSW1w
bChKUwogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oRGVidWdnZXJTY29wZSk7CiAKLVN0cmluZyBE
ZWJ1Z2dlclNjb3BlOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgVk0mIHZtKQot
ewotICAgIGNvbnN0IERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PGNvbnN0IERlYnVnZ2Vy
U2NvcGUqPihvYmplY3QpOwotICAgIC8vIFdlIGNhbm5vdCBhc3NlcnQgdGhhdCBzY29wZS0+aXNW
YWxpZCgpIGJlY2F1c2UgdGhlIFR5cGVQcm9maWxlciBtYXkgZW5jb3VudGVyIGFuIGludmFsaWRh
dGVkCi0gICAgLy8gRGVidWdnZXJTY29wZSBpbiBpdHMgbG9nIGVudHJpZXMuIFdlIGp1c3QgbmVl
ZCB0byBoYW5kbGUgaXQgYXBwcm9wcmlhdGVseSBhcyBiZWxvdy4KLSAgICBpZiAoIXNjb3BlLT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QsIHZt
KTsKLX0KLQotU3RyaW5nIERlYnVnZ2VyU2NvcGU6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIGNvbnN0IERl
YnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PGNvbnN0IERlYnVnZ2VyU2NvcGUqPihvYmplY3Qp
OwotICAgIC8vIFdlIGNhbm5vdCBhc3NlcnQgdGhhdCBzY29wZS0+aXNWYWxpZCgpIGJlY2F1c2Ug
dGhlIFR5cGVQcm9maWxlciBtYXkgZW5jb3VudGVyIGFuIGludmFsaWRhdGVkCi0gICAgLy8gRGVi
dWdnZXJTY29wZSBpbiBpdHMgbG9nIGVudHJpZXMuIFdlIGp1c3QgbmVlZCB0byBoYW5kbGUgaXQg
YXBwcm9wcmlhdGVseSBhcyBiZWxvdy4KLSAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6
Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnRvU3RyaW5nTmFtZSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QpOwotfQotCiBib29sIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdn
ZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KG9iamVjdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgJKHJldmlz
aW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBEZWJ1Z2dlclNjb3BlKiBjcmVhdGUoVk0mIHZtLCBKU1Njb3Bl
KiBzY29wZSk7CiAKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwotICAgIHN0YXRpYyBTdHJp
bmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsKLSAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAJKHJldmlzaW9uIDI3NTY4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw0IEBAIHZvaWQgQm9vbGVhbk9iamVjdDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHYKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCi1T
dHJpbmcgQm9vbGVhbk9iamVjdDo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKQotewotICAgIHJldHVybiAiQm9vbGVhbiJfczsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9i
amVjdC5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEJvb2xlYW5PYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICAgfQotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJvb2xlYW5PYmpl
Y3QpID09IHNpemVvZihKU1dyYXBwZXJPYmplY3QpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkocmV2aXNpb24gMjc1Njgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCb29sZWFuT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAyNzU2ODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtODEsMTIgKzgxLDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICBHZXRPd25Q
cm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blByb3BlcnR5
TmFtZXMpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVf
RU5UUlkoZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMpOwogCi0gICAgdXNpbmcgQ2xhc3NOYW1l
RnVuY3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsKLSAgICBDbGFz
c05hbWVGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY2xhc3NOYW1lKTsKLQotICAgIHVz
aW5nIFRvU3RyaW5nTmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgVG9TdHJpbmdOYW1lRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKHRvU3RyaW5nTmFtZSk7Ci0KICAgICB1c2luZyBDdXN0b21IYXNJbnN0YW5jZUZ1
bmN0aW9uUHRyID0gYm9vbCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogICAgIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGN1
c3RvbUhhc0luc3RhbmNlKTsKIApAQCAtMTY5LDggKzE2Myw2IEBAIHN0cnVjdCBNZXRob2RUYWJs
ZSB7CiAgICAgICAgICZDbGFzc05hbWU6OmRlZmF1bHRWYWx1ZSwgXAogICAgICAgICAmQ2xhc3NO
YW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNw
ZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmNsYXNzTmFtZSwgXAot
ICAgICAgICAmQ2xhc3NOYW1lOjp0b1N0cmluZ05hbWUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6
Y3VzdG9tSGFzSW5zdGFuY2UsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVy
dHksIFwKICAgICAgICAgJkNsYXNzTmFtZTo6cHJldmVudEV4dGVuc2lvbnMsIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAkocmV2aXNp
b24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDYgQEAgdm9pZCBEYXRlSW5zdGFuY2U6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogICAgIG1faW50ZXJuYWxOdW1iZXIgPSB0aW1lQ2xpcCh0
aW1lKTsKIH0KIAotU3RyaW5nIERhdGVJbnN0YW5jZTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIHJldHVybiAiRGF0ZSJfczsKLX0KLQogY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUqIERhdGVJbnN0YW5jZTo6Y2FsY3VsYXRlR3JlZ29yaWFuRGF0
ZVRpbWUoRGF0ZUNhY2hlJiBjYWNoZSkgY29uc3QKIHsKICAgICBkb3VibGUgbWlsbGkgPSBpbnRl
cm5hbE51bWJlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBk
b3VibGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsTnVtYmVyOyB9
CiAgICAgdm9pZCBzZXRJbnRlcm5hbE51bWJlcihkb3VibGUgdmFsdWUpIHsgbV9pbnRlcm5hbE51
bWJlciA9IHZhbHVlOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5
LDkgKzMxOSw0IEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKICAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1TdHJpbmcgRXJyb3JJbnN0YW5jZTo6dG9TdHJpbmdO
YW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIHJldHVybiAiRXJy
b3IiX3M7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gMjc1NjgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsNyArMTAxLDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3NTY4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNiwxOCArMjE2LDYgQEAgdm9pZCBKU0NlbGw6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVz
KAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVN0cmluZyBKU0NlbGw6
OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJikKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEpTQ2VsbDo6
dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCiBj
b25zdCBjaGFyKiBKU0NlbGw6OmNsYXNzTmFtZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDggKzI1Myw2IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIHNldFByb3RvdHlw
ZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCk7CiAgICAgc3RhdGlj
IE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopOwogCi0gICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNP
YmplY3QqLCBWTSYpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzks
MTEgKzIzOSw2IEBAIHNpemVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQKICAg
ICByZXR1cm4gY291bnQ7CiB9CiAKLVN0cmluZyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp0b1N0
cmluZ05hbWUoY29uc3QgSlNDOjpKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KikKLXsKLSAgICBy
ZXR1cm4gIk9iamVjdCJfczsKLX0KLQogfQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgJKHJldmlzaW9u
IDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdO
YW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKLQogICAgIHN0cnVjdCBSZWdp
c3RyYXRpb24gewogICAgICAgICBKU09iamVjdCogdGFyZ2V0OwogICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gaG9sZGluZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogCi0jaW5jbHVkZSAi
QXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJD
dXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTQ1LDEwICs0
NCw2IEBACiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJ
Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFdlIGtlZXAgdHJhY2sgb2YgdGhl
IHNpemUgb2YgdGhlIGxhc3QgYXJyYXkgYWZ0ZXIgaXQgd2FzIGdyb3duLiBXZSB1c2UgdGhpcwpA
QCAtNDg1LDQ2ICs0ODAsNiBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTCiAKIERFRklORV9WSVNJVF9DSElMRFJFTl9XSVRIX01PRElGSUVSKEpTX0VYUE9SVF9QUklW
QVRFLCBKU0ZpbmFsT2JqZWN0KTsKIAotU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoY29uc3Qg
SlNPYmplY3QqIG9iamVjdCwgVk0mIHZtKQotewotICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9
IG9iamVjdC0+Y2xhc3NJbmZvKHZtKTsKLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgcmV0dXJuIGlu
Zm8tPmNsYXNzTmFtZTsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLWlubGluZSBzdGF0aWMgYm9v
bCBpc1Bva2VyQnJvcygpCi17Ci0gICAgYXV0byBidW5kbGVJRCA9IENGQnVuZGxlR2V0SWRlbnRp
ZmllcihDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSk7Ci0gICAgcmV0dXJuIGJ1bmRsZUlECi0gICAg
ICAgICYmIENGRXF1YWwoYnVuZGxlSUQsIENGU1RSKCJjb20ua3BnYW1lLlBva2VyQnJvcyIpKQot
ICAgICAgICAmJiBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJT
SU9OXzE0XzA7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29u
c3QgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHN0
YXRpYyBib29sIG5lZWRzT2xkU3RyaW5nTmFtZSA9IGlzUG9rZXJCcm9zKCk7Ci0gICAgaWYgKFVO
TElLRUxZKG5lZWRzT2xkU3RyaW5nTmFtZSkpIHsKLSAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBp
bmZvID0gb2JqZWN0LT5jbGFzc0luZm8odm0pOwotICAgICAgICBBU1NFUlQoaW5mbyk7Ci0gICAg
ICAgIHJldHVybiBpbmZvLT5jbGFzc05hbWU7Ci0gICAgfQotI2VuZGlmCi0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGJvb2wgb2JqZWN0SXNBcnJheSA9IGlz
QXJyYXkoZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIFN0cmluZygpKTsKLSAgICBpZiAob2JqZWN0SXNBcnJheSkKLSAgICAgICAgcmV0dXJuICJB
cnJheSJfczsKLSAgICBpZiAoVHlwZUluZm86OmlzQXJndW1lbnRzVHlwZShvYmplY3QtPnR5cGUo
KSkpCi0gICAgICAgIHJldHVybiAiQXJndW1lbnRzIl9zOwotICAgIGlmIChjb25zdF9jYXN0PEpT
T2JqZWN0Kj4ob2JqZWN0KS0+aXNDYWxsYWJsZSh2bSkpCi0gICAgICAgIHJldHVybiAiRnVuY3Rp
b24iX3M7Ci0gICAgcmV0dXJuICJPYmplY3QiX3M7Ci19Ci0KIFN0cmluZyBKU09iamVjdDo6Y2Fs
Y3VsYXRlZENsYXNzTmFtZShKU09iamVjdCogb2JqZWN0KQogewogICAgIFN0cmluZyBjb25zdHJ1
Y3RvckZ1bmN0aW9uTmFtZTsKQEAgLTU4MCw5ICs1MzUsMjIgQEAgU3RyaW5nIEpTT2JqZWN0Ojpj
YWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
CiAgICAgaWYgKGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lLmlzTnVsbCgpIHx8IGNvbnN0cnVjdG9y
RnVuY3Rpb25OYW1lID09ICJPYmplY3QiKSB7Ci0gICAgICAgIFN0cmluZyB0YWJsZUNsYXNzTmFt
ZSA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUob2JqZWN0LCB2bSk7Ci0gICAg
ICAgIGlmICghdGFibGVDbGFzc05hbWUuaXNOdWxsKCkgJiYgdGFibGVDbGFzc05hbWUgIT0gIk9i
amVjdCIpCi0gICAgICAgICAgICByZXR1cm4gdGFibGVDbGFzc05hbWU7CisgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJnZtKTsKKyAgICAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIHNsb3QpKSB7Cisg
ICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAg
ICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
VGFnU3ltYm9sKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgeworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgdGFnID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKIAogICAgICAgICBT
dHJpbmcgY2xhc3NJbmZvTmFtZSA9IG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lOwog
ICAgICAgICBpZiAoIWNsYXNzSW5mb05hbWUuaXNOdWxsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiwx
NSArMTEyLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3Qg
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqLCBWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEhlYXBBbmFseXplciYpOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2FsY3VsYXRlZENsYXNzTmFt
ZShKU09iamVjdCopOwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB3aGF0IE9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcoKSB3aWxsIHVzZSB0byBnZXQgdGhlIG5hbWUgb2YKLSAgICAvLyBhbiBv
YmplY3Qgd2hlbiB1c2luZyBTeW1ib2wudG9TdHJpbmdUYWcgZmFpbHMuIEZvciB0aGUgbW9zdCBw
YXJ0IHRoZXJlIGlzIG5vCi0gICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIGNsYXNz
TmFtZSgpLiBUaGUgbWFpbiB1c2UgY2FzZSBpcyBmb3IgbmV3IEpTIGxhbmd1YWdlCi0gICAgLy8g
b2JqZWN0cyB0byBzZXQgdGhlIGRlZmF1bHQgdGFnIHRvICJPYmplY3QiLgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqKTsKLQogICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5IHZpcnR1YWwgW1tHZXRQ
cm90b3R5cGVPZl1dIGludGVybmFsIGZ1bmN0aW9uIGRlZmluZWQKICAgICAvLyBpbiB0aGUgRUNN
QVNjcmlwdCA2IHNwZWNpZmljYXRpb24uIFVzZSB0aGlzIHdoZW4gZG9pbmcgYSBbW0dldFByb3Rv
dHlwZU9mXV0gCiAgICAgLy8gb3BlcmF0aW9uIGFzIGRpY3RhdGVkIGluIHRoZSBzcGVjaWZpY2F0
aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJl
dmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOCArNTIsNiBAQCB2b2lkIEpTUHJveHk6OnNldFRh
cmdldChWTSYgdm0sIEpTR2xvYmFsCiAgICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogfQogCi1TdHJpbmcgSlNQcm94eTo6Y2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFZNJiB2bSkKLXsKLSAgICBjb25zdCBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTUHJveHkqPihvYmplY3QpOwotICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhp
c09iamVjdC0+dGFyZ2V0KCksIHZtKTsKLX0KLQotU3RyaW5nIEpTUHJveHk6OnRvU3RyaW5nTmFt
ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQot
ewotICAgIGNvbnN0IEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNQcm94eSo+
KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShn
bG9iYWxPYmplY3QtPnZtKCkpLT50b1N0cmluZ05hbWUodGhpc09iamVjdC0+dGFyZ2V0KCksIGds
b2JhbE9iamVjdCk7Ci19Ci0KIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjc1NjgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBA
IHByb3RlY3RlZDoKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU5fV0lUSF9NT0RJRklFUihK
U19FWFBPUlRfUFJJVkFURSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5n
IGNsYXNzTmFtZShjb25zdCBKU09iamVjdCosIFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAkocmV2aXNpb24gMjc1
NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDCiAgICAgQ0FTRShKU0Z1bmN0aW9uVHlwZSkKICAgICBDQVNFKEludGVybmFsRnVu
Y3Rpb25UeXBlKQogICAgIENBU0UoTnVsbFNldHRlckZ1bmN0aW9uVHlwZSkKKyAgICBDQVNFKEJv
b2xlYW5PYmplY3RUeXBlKQogICAgIENBU0UoTnVtYmVyT2JqZWN0VHlwZSkKICAgICBDQVNFKEVy
cm9ySW5zdGFuY2VUeXBlKQogICAgIENBU0UoUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjc1NjgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDYgKzYyLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBKU0Z1bmN0aW9u
VHlwZSwKICAgICBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwKICAgICBOdWxsU2V0dGVyRnVuY3Rpb25U
eXBlLAorICAgIEJvb2xlYW5PYmplY3RUeXBlLAogICAgIE51bWJlck9iamVjdFR5cGUsCiAgICAg
RXJyb3JJbnN0YW5jZVR5cGUsCiAgICAgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAJKHJldmlz
aW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBAIHZvaWQgTnVtYmVyT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0KICAgICBBU1NFUlQodHlwZSgpID09IE51bWJlck9iamVj
dFR5cGUpOwogfQogCi1TdHJpbmcgTnVtYmVyT2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJOdW1iZXIiX3M7Ci19Ci0K
IE51bWJlck9iamVjdCogY29uc3RydWN0TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgbnVtYmVyKQogewogICAgIE51bWJlck9iamVjdCogb2JqZWN0ID0gTnVtYmVy
T2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bWJlck9i
amVjdFN0cnVjdHVyZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlck9iamVjdC5oCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhOdW1iZXJPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05h
bWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKE51bWJlck9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEyICsyMSwxNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCisjaW5jbHVk
ZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhhc093blByb3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0UHJvdG9GdW5jVmFsdWVPZik7CkBAIC0zMTEsNiArMzE2LDQ0IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgdG9TdHJpbmcsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxpc3QpKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
CitpbmxpbmUgc3RhdGljIGJvb2wgaXNQb2tlckJyb3MoKQoreworICAgIGF1dG8gYnVuZGxlSUQg
PSBDRkJ1bmRsZUdldElkZW50aWZpZXIoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpOworICAgIHJl
dHVybiBidW5kbGVJRAorICAgICAgICAmJiBDRkVxdWFsKGJ1bmRsZUlELCBDRlNUUigiY29tLmtw
Z2FtZS5Qb2tlckJyb3MiKSkKKyAgICAgICAgJiYgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lv
bigpIDwgRFlMRF9JT1NfVkVSU0lPTl8xNF8wOworfQorI2VuZGlmCisKK2lubGluZSBjb25zdCBj
aGFyKiBpbmZlckJ1aWx0aW5UYWcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29sIG5lZWRzT2xkQnVpbHRpblRhZyA9IGlzUG9rZXJC
cm9zKCk7CisgICAgaWYgKFVOTElLRUxZKG5lZWRzT2xkQnVpbHRpblRhZykpCisgICAgICAgIHJl
dHVybiBvYmplY3QtPmNsYXNzTmFtZSh2bSk7CisjZW5kaWYKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBvYmplY3RJc0FycmF5ID0gaXNBcnJheShn
bG9iYWxPYmplY3QsIG9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgaWYgKG9iamVjdElzQXJyYXkpCisgICAgICAgIHJldHVybiAiQXJyYXkiOwor
ICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQorICAgICAgICByZXR1cm4gIkZ1bmN0aW9u
IjsKKyAgICBKU1R5cGUgdHlwZSA9IG9iamVjdC0+dHlwZSgpOworICAgIGlmIChUeXBlSW5mbzo6
aXNBcmd1bWVudHNUeXBlKHR5cGUpCisgICAgICAgIHx8IHR5cGUgPT0gRXJyb3JJbnN0YW5jZVR5
cGUKKyAgICAgICAgfHwgdHlwZSA9PSBCb29sZWFuT2JqZWN0VHlwZQorICAgICAgICB8fCB0eXBl
ID09IE51bWJlck9iamVjdFR5cGUKKyAgICAgICAgfHwgdHlwZSA9PSBTdHJpbmdPYmplY3RUeXBl
CisgICAgICAgIHx8IHR5cGUgPT0gRGVyaXZlZFN0cmluZ09iamVjdFR5cGUKKyAgICAgICAgfHwg
dHlwZSA9PSBKU0RhdGVUeXBlCisgICAgICAgIHx8IHR5cGUgPT0gUmVnRXhwT2JqZWN0VHlwZSkK
KyAgICAgICAgcmV0dXJuIG9iamVjdC0+Y2xhc3NOYW1lKHZtKTsKKyAgICByZXR1cm4gIk9iamVj
dCI7Cit9CisKIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0zMjgsNyArMzcxLDcgQEAgSlNTdHJpbmcqIG9iamVjdFByb3Rv
dHlwZVRvU3RyaW5nKEpTR2xvYgogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBhc1N0
cmluZyhyZXN1bHQpOwogCi0gICAgU3RyaW5nIHRhZyA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+dG9TdHJpbmdOYW1lKHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCk7CisgICAgY29uc3Qg
Y2hhciogdGFnID0gaW5mZXJCdWlsdGluVGFnKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgSlNTdHJpbmcqIGpz
VGFnID0gbnVsbHB0cjsKIApAQCAtMzQyLDEwICszODUsOCBAQCBKU1N0cmluZyogb2JqZWN0UHJv
dG90eXBlVG9TdHJpbmcoSlNHbG9iCiAgICAgICAgICAgICBqc1RhZyA9IGFzU3RyaW5nKHRhZ1Zh
bHVlKTsKICAgICB9CiAKLSAgICBpZiAoIWpzVGFnKSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UodGFnLmxlbmd0aCgpID4gMSwgInRvU3RyaW5nTmFtZSgpIHNob3VsZCByZXR1cm4gc3Ry
aW5ncyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuIik7Ci0gICAgICAgIGpzVGFnID0ganNO
b250cml2aWFsU3RyaW5nKHZtLCBXVEZNb3ZlKHRhZykpOwotICAgIH0KKyAgICBpZiAoIWpzVGFn
KQorICAgICAgICBqc1RhZyA9IGpzU3RyaW5nKHZtLCBBdG9tU3RyaW5nSW1wbDo6YWRkKHRhZyku
cmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBKU1N0cmluZyoganNSZXN1bHQgPSBqc1N0cmluZyhn
bG9iYWxPYmplY3QsIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmdTdGFydCgpLCBqc1RhZywg
dm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygnXScpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1NjgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDExICsxNDksNiBAQCBib29sIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHCiAgICAgcmV0dXJuIEJhc2U6OnB1dChjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1TdHJpbmcgUmVnRXhwT2JqZWN0Ojp0b1N0cmluZ05h
bWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCi17Ci0gICAgcmV0dXJuICJSZWdF
eHAiX3M7Ci19Ci0KIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGV4ZWNJbmxpbmUo
Z2xvYmFsT2JqZWN0LCBzdHJpbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyAr
MTA0LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Z05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyNzU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTEgKzE2
MCw2IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEoKICAgICB0aGlz
T2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotU3RyaW5nIFN0cmluZ09iamVjdDo6dG9TdHJpbmdOYW1lKGNv
bnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQotewotICAgIHJldHVybiAiU3RyaW5nIl9z
OwotfQotCiBTdHJpbmdPYmplY3QqIGNvbnN0cnVjdFN0cmluZyhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc3RyaW5nKQogewogICAgIFN0cmluZ09iamVjdCog
b2JqZWN0ID0gU3RyaW5nT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDI3NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjgyKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDQtMDggIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIFJlbW92ZSBjbGFzc05hbWUoKSBhbmQgdG9TdHJpbmdOYW1lKCkgZnJvbSB0aGUgbWV0aG9k
IHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy5o
dG1sOgorCiAyMDIxLTA0LTA4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCB0ZXN0IGluZnJhc3RydWN0dXJlIGZvciBhcHAgYm91bmQgcmVx
dWVzdCBjb250ZXh0IHN0cmluZwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Jl
bW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NjgyKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00NjcsNiArNDY3LDcgQEAgT1dOIFBST1BFUlRJRVM6CiAgICAgU3ltYm9sKHN5bSkK
ICAgICBTeW1ib2woc3ltKQogICAgIFN5bWJvbCgpCisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmlu
Z1RhZykKICAgICBfX3Byb3RvX18KIAogRElTUExBWUFCTEUgUFJPUEVSVElFUzoKQEAgLTQ3Niw2
ICs0NzcsNyBAQCBESVNQTEFZQUJMRSBQUk9QRVJUSUVTOgogICAgIFN5bWJvbChzeW0pCiAgICAg
U3ltYm9sKHN5bSkKICAgICBTeW1ib2woKQorICAgIFN5bWJvbChTeW1ib2wudG9TdHJpbmdUYWcp
CiAgICAgX19wcm90b19fCiAKIEFMTCBQUk9QRVJUSUVTOgpAQCAtNDg1LDYgKzQ4Nyw3IEBAIEFM
TCBQUk9QRVJUSUVTOgogICAgIFN5bWJvbChzeW0pCiAgICAgU3ltYm9sKHN5bSkKICAgICBTeW1i
b2woKQorICAgIFN5bWJvbChTeW1ib2wudG9TdHJpbmdUYWcpCiAgICAgdG9TdHJpbmcKICAgICB0
b0xvY2FsZVN0cmluZwogICAgIHZhbHVlT2YKQEAgLTUwMCw2ICs1MDMsNjUgQEAgQUxMIFBST1BF
UlRJRVM6CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorRVhQUkVTU0lPTjogd2luZG93Lm9iamVjdFdpdGhTeW1ib2xUb1N0cmluZ1RhZwordHlw
ZTogb2JqZWN0CitkZXNjcmlwdGlvbjogRm9vCisKK09XTiBQUk9QRVJUSUVTOgorICAgIFN5bWJv
bChTeW1ib2wudG9TdHJpbmdUYWcpCisgICAgX19wcm90b19fCisKK0RJU1BMQVlBQkxFIFBST1BF
UlRJRVM6CisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykKKyAgICBfX3Byb3RvX18KKwor
QUxMIFBST1BFUlRJRVM6CisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykKKyAgICB0b1N0
cmluZworICAgIHRvTG9jYWxlU3RyaW5nCisgICAgdmFsdWVPZgorICAgIGhhc093blByb3BlcnR5
CisgICAgcHJvcGVydHlJc0VudW1lcmFibGUKKyAgICBpc1Byb3RvdHlwZU9mCisgICAgX19kZWZp
bmVHZXR0ZXJfXworICAgIF9fZGVmaW5lU2V0dGVyX18KKyAgICBfX2xvb2t1cEdldHRlcl9fCisg
ICAgX19sb29rdXBTZXR0ZXJfXworICAgIGNvbnN0cnVjdG9yCisgICAgX19wcm90b19fCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRVhQUkVT
U0lPTjogd2luZG93Lm9iamVjdFdpdGhTaGFkb3dlZFN5bWJvbFRvU3RyaW5nVGFnCit0eXBlOiBv
YmplY3QKK2Rlc2NyaXB0aW9uOiBGb28KKworT1dOIFBST1BFUlRJRVM6CisgICAgX19wcm90b19f
CisKK0RJU1BMQVlBQkxFIFBST1BFUlRJRVM6CisgICAgX19wcm90b19fCisKK0FMTCBQUk9QRVJU
SUVTOgorICAgIGNvbnN0cnVjdG9yCisgICAgYWRkRXZlbnRMaXN0ZW5lcgorICAgIHJlbW92ZUV2
ZW50TGlzdGVuZXIKKyAgICBkaXNwYXRjaEV2ZW50CisgICAgU3ltYm9sKFN5bWJvbC50b1N0cmlu
Z1RhZykKKyAgICB0b1N0cmluZworICAgIHRvTG9jYWxlU3RyaW5nCisgICAgdmFsdWVPZgorICAg
IGhhc093blByb3BlcnR5CisgICAgcHJvcGVydHlJc0VudW1lcmFibGUKKyAgICBpc1Byb3RvdHlw
ZU9mCisgICAgX19kZWZpbmVHZXR0ZXJfXworICAgIF9fZGVmaW5lU2V0dGVyX18KKyAgICBfX2xv
b2t1cEdldHRlcl9fCisgICAgX19sb29rdXBTZXR0ZXJfXworICAgIF9fcHJvdG9fXworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEVYUFJFU1NJ
T046IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1zZWxlY3QnKS5vcHRpb25zCiB0eXBlOiBv
YmplY3QKIHN1YnR5cGU6IGFycmF5CkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwv
cmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLmh0bWwJKHJl
dmlzaW9uIDI3NTY4MikKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2Jq
ZWN0LWdldC1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDkgQEAg
dmFyIGNvbXBsZXhPYmplY3QgPSBuZXcgU3VwZXJGb287CiB2YXIgYmFkR2V0dGVyT2JqZWN0ID0g
bmV3IENsYXNzV2l0aEJhZEdldHRlcjsKIHZhciB1bmJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbigp
IHsgY29uc29sZS5sb2coYXJndW1lbnRzKTsgfQogdmFyIGJvdW5kRnVuY3Rpb24gPSB1bmJvdW5k
RnVuY3Rpb24uYmluZChkb2N1bWVudC5ib2R5LCAxLCAyLCAzKTsKLXZhciBvYmplY3RXaXRoU3lt
Ym9sUHJvcGVydGllcyA9IHtwcm9wOjEsIFtTeW1ib2woKV06MiwgW1N5bWJvbCgnc3ltJyldOjMs
IFtTeW1ib2woJ3N5bScpXTo0LCBbU3ltYm9sKCldOiBTeW1ib2woKSwgcHJvcDI6IDV9OwordmFy
IG9iamVjdFdpdGhTeW1ib2xQcm9wZXJ0aWVzID0ge3Byb3A6MSwgW1N5bWJvbCgpXToyLCBbU3lt
Ym9sKCdzeW0nKV06MywgW1N5bWJvbCgnc3ltJyldOjQsIFtTeW1ib2woKV06IFN5bWJvbCgpLCBb
U3ltYm9sLnRvU3RyaW5nVGFnXTogbmV3IFN0cmluZygiSWdub3JlZFRhZyIpLCBwcm9wMjogNX07
Cit2YXIgb2JqZWN0V2l0aFN5bWJvbFRvU3RyaW5nVGFnID0ge1tTeW1ib2wudG9TdHJpbmdUYWdd
OiAiRm9vIn07Cit2YXIgb2JqZWN0V2l0aFNoYWRvd2VkU3ltYm9sVG9TdHJpbmdUYWcgPSBuZXcg
KGNsYXNzIEZvbyBleHRlbmRzIEV2ZW50VGFyZ2V0IHt9KTsKIAogLy8gLS0tLS0tLS0KIC8vICAg
dGVzdApAQCAtNjQsNiArNjYsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAge2V4cHJlc3Np
b246ICJ3aW5kb3cudW5ib3VuZEZ1bmN0aW9uIn0sCiAgICAgICAgIHtleHByZXNzaW9uOiAid2lu
ZG93LmJvdW5kRnVuY3Rpb24ifSwKICAgICAgICAge2V4cHJlc3Npb246ICJ3aW5kb3cub2JqZWN0
V2l0aFN5bWJvbFByb3BlcnRpZXMifSwKKyAgICAgICAge2V4cHJlc3Npb246ICJ3aW5kb3cub2Jq
ZWN0V2l0aFN5bWJvbFRvU3RyaW5nVGFnIn0sCisgICAgICAgIHtleHByZXNzaW9uOiAid2luZG93
Lm9iamVjdFdpdGhTaGFkb3dlZFN5bWJvbFRvU3RyaW5nVGFnIn0sCiAgICAgICAgIHtleHByZXNz
aW9uOiAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215LXNlbGVjdCcpLm9wdGlvbnMifSwKICAg
ICBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>