<?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>34203</bug_id>
          
          <creation_ts>2010-01-27 00:29:35 -0800</creation_ts>
          <short_desc>Web Inspector: nuke quarantine wrappers.</short_desc>
          <delta_ts>2010-01-27 03:16:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184979</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-01-27 00:29:35 -0800</bug_when>
    <thetext>Quarantines code should no longer be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184980</commentid>
    <comment_count>1</comment_count>
      <attachid>47503</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-01-27 00:30:59 -0800</bug_when>
    <thetext>Created attachment 47503
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185016</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-01-27 03:16:25 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/bindings/js/JSInspectedObjectWrapper.cpp
	D	WebCore/bindings/js/JSInspectedObjectWrapper.h
	D	WebCore/bindings/js/JSInspectorCallbackWrapper.cpp
	D	WebCore/bindings/js/JSInspectorCallbackWrapper.h
	D	WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp
	D	WebCore/bindings/js/JSQuarantinedObjectWrapper.h
	M	WebCore/Android.jscbindings.mk
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSBindingsAllInOne.cpp
Committed r53915</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47503</attachid>
            <date>2010-01-27 00:30:59 -0800</date>
            <delta_ts>2010-01-27 02:28:19 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>quarantines</filename>
            <type>text/plain</type>
            <size>52390</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCA1YmQyYjY5Li5iMzMwYjExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLmpzY2Jp
bmRpbmdzLm1rCkBAIC0xMTgsNyArMTE4LDYgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAliaW5k
aW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwIFwKIAliaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuY3BwIFwKIAliaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgXAotCWJpbmRp
bmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAgXAogCWJpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwIFwKIAliaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBc
CiAJYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZhYjNmNjUu
LjZlYzY4YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEtMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbnVrZSBxdWFyYW50aW5lIHdyYXBwZXJzLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDIwMworCisg
ICAgICAgICogQW5kcm9pZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3Bl
Y3RlZE9iamVjdFdyYXBwZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oOiBSZW1vdmVk
LgorCiAyMDEwLTAxLTI2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTAyY2ZlMi4u
YjA0OGNjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC00MjMsMTAgKzQyMyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBcCi0JV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwIFwKLQlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5oIFwKQEAgLTQ1NCw4ICs0NTAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1
YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA4ZGI3YzE2Li44OWFiNmQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM4LDEwICs1MzgsNiBAQAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3Rv
ckNhbGxiYWNrV3JhcHBlci5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQ2FsbGJhY2tXcmFwcGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwJywKQEAgLTU3Miw4ICs1NjgsNiBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGx1Z2luQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgnLAotICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCcsCi0gICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
UkdCQ29sb3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvci5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggMzMwNGJlMC4uZDU1NDkwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMDAsOSArMzAwLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBcCiAg
ICAgYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgXAotICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcCBcCi0gICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dy
YXBwZXIuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAgICAg
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9K
U05hdmlnYXRvckN1c3RvbS5jcHAgIFwKQEAgLTMxMiw3ICszMTAsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdz
L2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcCBcCi0gICAgYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIu
Y3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIFwKICAgICBiaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNU
ZXh0Q3VzdG9tLmNwcCBcCkBAIC0xMDAyLDE1ICs5OTksMTIgQEAgSEVBREVSUyArPSBcCiAgICAg
YmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oIFwKICAgICBiaW5kaW5ncy9q
cy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTSW1hZ2VD
b25zdHJ1Y3Rvci5oIFwKLSAgICBiaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIu
aCBcCi0gICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCBcCiAgICAg
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDb25zdHJ1
Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaCBcCiAgICAg
YmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCi0gICAgYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9i
amVjdFdyYXBwZXIuaCBcCiAgICAgYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uaCBcCiAgICAgYmluZGluZ3Mv
anMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDg0MmRmZWEuLmJjNzVhMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzc0MDQsNzAgKzM3NDA0LDYgQEAKIAkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwIg0KLQkJCQkJPg0K
LQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJ
CQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJ
TmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCi0JCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98
V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJ
CTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlO
YW1lPSJEZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQot
CQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQot
CQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTwvRmlsZT4NCi0JCQkJ
PEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJbnNwZWN0ZWRPYmpl
Y3RXcmFwcGVyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3Bw
Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmgiDQotCQkJCQk+DQot
CQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQpAQCAtMzg1MzYsNjIgKzM4NDcyLDYgQEAKIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCINCi0JCQkJCT4NCi0JCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0ludGVy
bmFsfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0J
CQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQot
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8
VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmgiDQot
CQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YmluZGluZ3NcanNcSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAiDQogCQkJCQk+DQogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDgxOTE5ZDguLjg1YTVjN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjE1LDEyICs0NjE1LDYgQEAKIAkJQkNGRTJGMTIwQzFC
NTgzODAwMjAyMzVGIC8qIEpTUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNGRTJGMTAwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5oICovOyB9
OwogCQlCQ0ZGNjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2
RjcgLyogTGVuZ3RoQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDkwMEVBRDE1
QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzA5MTU4OEEwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMDkxNTg4NDBEQjQyMDkyMDBFNTVBRjQgLyogSlNJbnNwZWN0ZWRPYmplY3RX
cmFwcGVyLmNwcCAqLzsgfTsKLQkJQzA5MTU4OEIwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzA5MTU4ODUwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVjdGVkT2JqZWN0V3Jh
cHBlci5oICovOyB9OwotCQlDMDkxNTg4QzBEQjQyMDkyMDBFNTVBRjQgLyogSlNJbnNwZWN0b3JD
YWxsYmFja1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzA5MTU4ODYwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyLmNwcCAqLzsgfTsKLQkJQzA5MTU4OEQwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVj
dG9yQ2FsbGJhY2tXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMDkxNTg4NzBEQjQyMDkyMDBFNTVBRjQgLyogSlNJbnNwZWN0b3JDYWxsYmFj
a1dyYXBwZXIuaCAqLzsgfTsKLQkJQzA5MTU4OEUwREI0MjA5MjAwRTU1QUY0IC8qIEpTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMwOTE1ODg4MERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1YXJhbnRpbmVkT2Jq
ZWN0V3JhcHBlci5jcHAgKi87IH07Ci0JCUMwOTE1ODhGMERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1
YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzA5MTU4ODkwREI0MjA5MjAwRTU1QUY0IC8qIEpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyLmggKi87IH07CiAJCUMwREZDODcwMERCNjg0MUEwMDNFQUU3QyAvKiBKU0Nv
bnNvbGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBERkM4NkYwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAgKi87
IH07CiAJCUMxMDVEQTYyMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklD
VS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1
REE2MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9
OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYz
QUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OwpAQCAtOTg4MCwx
MiArOTg3NCw2IEBACiAJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJQkU5MUZDOEMwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29y
ZUtleWJvYXJkVUlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwotCQlDMDkxNTg4NDBEQjQyMDkyMDBFNTVBRjQgLyogSlNJbnNwZWN0
ZWRPYmplY3RXcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMwOTE1ODg1MERCNDIwOTIwMEU1NUFGNCAvKiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnNwZWN0ZWRPYmplY3RXcmFw
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwOTE1ODg2MERCNDIwOTIwMEU1
NUFGNCAvKiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMwOTE1ODg3MERCNDIwOTIwMEU1NUFGNCAvKiBKU0lu
c3BlY3RvckNhbGxiYWNrV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDMDkxNTg4ODBEQjQyMDkyMDBFNTVBRjQgLyogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBw
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWFyYW50aW5l
ZE9iamVjdFdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMDkxNTg4
OTBEQjQyMDkyMDBFNTVBRjQgLyogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBERkM4NkYwREI2ODQxQTAwM0VBRTdDIC8q
IEpTQ29uc29sZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NvbnNvbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1
REE2MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAxREQ0
NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0NTg4LDE0ICsxNDU3Niw4IEBACiAJCQkJQkM2MDkwMUQwRTkxQjhFQzAwMEM2OEI1IC8q
IEpTRXZlbnRUYXJnZXQuaCAqLywKIAkJCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNF
eGNlcHRpb25CYXNlLmNwcCAqLywKIAkJCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNF
eGNlcHRpb25CYXNlLmggKi8sCi0JCQkJQzA5MTU4ODQwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5z
cGVjdGVkT2JqZWN0V3JhcHBlci5jcHAgKi8sCi0JCQkJQzA5MTU4ODUwREI0MjA5MjAwRTU1QUY0
IC8qIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oICovLAotCQkJCUMwOTE1ODg2MERCNDIwOTIw
MEU1NUFGNCAvKiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAgKi8sCi0JCQkJQzA5MTU4
ODcwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmggKi8sCiAJ
CQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5oICovLAotCQkJCUMwOTE1ODg4MERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlci5jcHAgKi8sCi0JCQkJQzA5MTU4ODkwREI0MjA5MjAwRTU1QUY0IC8q
IEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmggKi8sCiAJCQkJNDE1QjdDNTUwRkY1OThFNjAw
Njc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTQxNUI3QzYy
MEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi8sCiAJCQkJ
MTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLywK
QEAgLTE3NDMyLDkgKzE3NDE0LDcgQEAKIAkJCQlFNDQ2MTQxNzBDRDY4MjY5MDBGQURBNzUgLyog
SlNIVE1MVmlkZW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZDNDlGNDBEN0RCQTA1
MDBGRkE1NTggLyogSlNJbWFnZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzc5
NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUMwOTE1ODhCMERCNDIwOTIwMEU1NUFGNCAvKiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3Rv
ckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCUMwOTE1ODhEMERCNDIwOTIwMEU1NUFGNCAv
KiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM1RkFF
RDIwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg2NjI5RDMwOURBMkI0ODAwOTYzM0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM1RjQ1NDMwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTc0NjksNyArMTc0NDksNiBAQAogCQkJCUZF
ODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTY1REYzMjAwMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRUUwQ0Q2ODFCQjAwRkFEQTc1IC8qIEpTUHJv
Z3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzA5MTU4OEYwREI0MjA5MjAwRTU1QUY0
IC8qIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURG
MzIwMjA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDIz
Q0E1NUQwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRkUyRjEyMEMxQjU4MzgwMDIwMjM1RiAvKiBKU1JlY3QuaCBpbiBIZWFkZXJzICov
LApAQCAtMTk2NzUsMTAgKzE5NjU0LDggQEAKIAkJCQlCQzZDNDlGMzBEN0RCQTA1MDBGRkE1NTgg
LyogSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Nzk3OTI4MEQ2
QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Qw
MzE4RTBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQzA5MTU4OEEwREI0MjA5MjAwRTU1QUY0IC8qIEpTSW5zcGVjdGVkT2JqZWN0V3Jh
cHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjBDRDBGNUVFQjJCMDBBMDdFQUMgLyog
SlNJbnNwZWN0b3JCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNzRFQ0JEMTAxODM5
REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlDMDkxNTg4QzBEQjQyMDkyMDBFNTVBRjQgLyogSlNJbnNwZWN0b3JDYWxsYmFj
a1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1RkFFRDEwRENGRDkwMTAwRDU4Rjc4
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzVGQUVF
NzBEQ0ZEQTY4MDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4NjYyOUQ0MDlEQTJCNDgwMDk2MzNBNSAvKiBKU0tleWJvYXJkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTcyNyw3ICsxOTcwNCw2IEBACiAJCQkJRkU4MERB
NzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NURGMzFGRjA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEzRUQwQ0Q2ODFCQTAwRkFEQTc1IC8qIEpTUHJv
Z3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDMDkxNTg4RTBEQjQyMDkyMDBFNTVB
RjQgLyogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVERjMyMDEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApp
bmRleCA0NGQ0YjM2Li5lNTM5MDQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCkBAIC04Niw3ICs4Niw2IEBACiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVj
dG9yLmNwcCIKICNpbmNsdWRlICJKU0ltYWdlRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTSW5zcGVjdGVkT2JqZWN0
V3JhcHBlci5jcHAiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAiCkBAIC0xMDcsNyArMTA2LDYgQEAKICNpbmNsdWRlICJK
U1BsdWdpbkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1BsdWdpbkN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKLSNpbmNsdWRlICJKU1F1YXJh
bnRpbmVkT2JqZWN0V3JhcHBlci5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYwMjEzYjMuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgiCi0KLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIu
aCIKLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9XZWFrR0NNYXAuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIpOwotCi10eXBlZGVmIFdlYWtHQ01hcDxK
U09iamVjdCosIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcio+IFdyYXBwZXJNYXA7Ci10eXBlZGVm
IEhhc2hNYXA8SlNHbG9iYWxPYmplY3QqLCBXcmFwcGVyTWFwKj4gR2xvYmFsT2JqZWN0V3JhcHBl
ck1hcDsKLQotc3RhdGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEdsb2JhbE9iamVjdFdyYXBwZXJNYXAsIG1hcCwgKCkpOwot
ICAgIHJldHVybiBtYXA7Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU0luc3BlY3RlZE9iamVjdFdy
YXBwZXI6OnNfaW5mbyA9IHsgIkpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlciIsICZKU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvLCAwLCAwIH07Ci0KLUpTVmFsdWUgSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyOjp3cmFwKEV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNWYWx1ZSB1bndy
YXBwZWRWYWx1ZSkKLXsKLSAgICBpZiAoIXVud3JhcHBlZFZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB1bndyYXBwZWRWYWx1ZTsKLQotICAgIEpTT2JqZWN0KiB1bndyYXBwZWRPYmpl
Y3QgPSBhc09iamVjdCh1bndyYXBwZWRWYWx1ZSk7Ci0KLSAgICBpZiAodW53cmFwcGVkT2JqZWN0
LT5pbmhlcml0cygmSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjpzX2luZm8pKQotICAgICAgICBy
ZXR1cm4gdW53cmFwcGVkT2JqZWN0OwotCi0gICAgaWYgKFdyYXBwZXJNYXAqIHdyYXBwZXJNYXAg
PSB3cmFwcGVycygpLmdldCh1bndyYXBwZWRFeGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQot
ICAgICAgICBpZiAoSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gd3JhcHBlck1h
cC0+Z2V0KHVud3JhcHBlZE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQot
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdW53cmFwcGVkT2JqZWN0LT5wcm90b3R5cGUoKTsKLSAg
ICBBU1NFUlQocHJvdG90eXBlLmlzTnVsbCgpIHx8IHByb3RvdHlwZS5pc09iamVjdCgpKTsKLQot
ICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBuZXcgKHVud3JhcHBl
ZEV4ZWMpIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcih1bndyYXBwZWRFeGVjLCB1bndyYXBwZWRP
YmplY3QsIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxs
KCkpKTsKLSAgICBQcm90ZWN0ZWRKU1ZhbHVlIHdyYXBwZWRQcm90byA9IHdyYXAodW53cmFwcGVk
RXhlYywgcHJvdG90eXBlKTsKLSAgICByZXR1cm4gbmV3ICh1bndyYXBwZWRFeGVjKSBKU0luc3Bl
Y3RlZE9iamVjdFdyYXBwZXIodW53cmFwcGVkRXhlYywgdW53cmFwcGVkT2JqZWN0LCBKU1F1YXJh
bnRpbmVkT2JqZWN0V3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKGFzT2JqZWN0KHdyYXBwZWRQcm90
bykpKTsKLX0KLQotSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjpKU0luc3BlY3RlZE9iamVjdFdy
YXBwZXIoRXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyKHVud3JhcHBlZEV4ZWMsIHVud3JhcHBlZE9iamVjdCwgc3RydWN0
dXJlKQotewotICAgIFdyYXBwZXJNYXAqIHdyYXBwZXJNYXAgPSB3cmFwcGVycygpLmdldCh1bndy
YXBwZWRHbG9iYWxPYmplY3QoKSk7Ci0gICAgaWYgKCF3cmFwcGVyTWFwKSB7Ci0gICAgICAgIHdy
YXBwZXJNYXAgPSBuZXcgV3JhcHBlck1hcDsKLSAgICAgICAgd3JhcHBlcnMoKS5zZXQodW53cmFw
cGVkR2xvYmFsT2JqZWN0KCksIHdyYXBwZXJNYXApOwotICAgIH0KLQotICAgIHBhaXI8V3JhcHBl
ck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHdyYXBwZXJNYXAtPnNldCh1bndyYXBwZWRP
YmplY3QsIHRoaXMpOwotICAgIEFTU0VSVChyZXN1bHQuc2Vjb25kKTsKLSAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKLX0KLQotSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp+SlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyKCkKLXsKLSAgICBXcmFwcGVyTWFwKiB3cmFwcGVyTWFwID0gd3JhcHBlcnMo
KS5nZXQodW53cmFwcGVkR2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVCh3cmFwcGVyTWFwKTsK
LQotICAgIHdyYXBwZXJNYXAtPnVuY2hlY2tlZFJlbW92ZSh1bndyYXBwZWRPYmplY3QoKSwgdGhp
cyk7Ci0KLSAgICBpZiAod3JhcHBlck1hcC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIHdyYXBwZXJz
KCkucmVtb3ZlKHVud3JhcHBlZEdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgZGVsZXRlIHdyYXBw
ZXJNYXA7Ci0gICAgfQotfQotCi1KU1ZhbHVlIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6cHJl
cGFyZUluY29taW5nVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLXsKLSAg
ICAvLyBUaGUgSW5zcGVjdG9yIGlzIG9ubHkgYWxsb3dlZCB0byBwYXNzIHByaW1pdGl2ZSB2YWx1
ZXMgYW5kIHdyYXBwZWQgb2JqZWN0cyB0byBvYmplY3RzIGZyb20gdGhlIGluc3BlY3RlZCBwYWdl
LgotCi0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0K
LSAgICBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGFzV3JhcHBlcih2YWx1
ZSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh3cmFwcGVyLCAiT2JqZWN0cyBwYXNzZWQgdG8g
SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyIG11c3QgYmUgd3JhcHBlZCIpOwotICAgIGlmICghd3Jh
cHBlcikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAod3JhcHBlci0+
YWxsb3dzVW53cmFwcGVkQWNjZXNzRnJvbSh1bndyYXBwZWRFeGVjU3RhdGUoKSkpIHsKLSAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh3cmFwcGVyLT5pbmhlcml0cygmc19pbmZvKSwgIkEgd3Jh
cHBlciBjb250YWlucyBhbiBvYmplY3QgZnJvbSB0aGUgaW5zcGVjdGVkIHBhZ2UgYnV0IGlzIG5v
dCBhIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlciIpOwotICAgICAgICBpZiAoIXdyYXBwZXItPmlu
aGVyaXRzKCZzX2luZm8pKQotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICAgICAgLy8gUmV0dXJuIHRoZSB1bndyYXBwZWQgb2JqZWN0IHNvIHRoZSBpbnNwZWN0ZWQgcGFn
ZSBuZXZlciBzZWVzIG9uZSBvZiBpdHMgb3duIG9iamVjdHMgaW4gd3JhcHBlZCBmb3JtLgotICAg
ICAgICByZXR1cm4gd3JhcHBlci0+dW53cmFwcGVkT2JqZWN0KCk7Ci0gICAgfQotCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSh3cmFwcGVyLT5pbmhlcml0cygmSlNJbnNwZWN0b3JDYWxsYmFja1dy
YXBwZXI6OnNfaW5mbyksICJBIHdyYXBwZXIgdGhhdCB3YXMgbm90IGZyb20gdGhlIGluc3BlY3Rl
ZCBwYWdlIGFuZCBpcyBub3QgYW4gSW5zcGVjdG9yIGNhbGxiYWNrIHdhcyBwYXNzZWQgdG8gYSBK
U0luc3BlY3RlZE9iamVjdFdyYXBwZXIiKTsKLSAgICBpZiAoIXdyYXBwZXItPmluaGVyaXRzKCZK
U0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gd3JhcHBlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhZDk3MDM1Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0
ZWRPYmplY3RXcmFwcGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKU0luc3BlY3Rl
ZE9iamVjdFdyYXBwZXJfaAotI2RlZmluZSBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXJfaAotCi0j
aW5jbHVkZSAiSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0gICAgY2xhc3MgSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyIDogcHVibGljIEpTUXVh
cmFudGluZWRPYmplY3RXcmFwcGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgd3JhcChKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVl
IHVud3JhcHBlZFZhbHVlKTsKLSAgICAgICAgdmlydHVhbCB+SlNJbnNwZWN0ZWRPYmplY3RXcmFw
cGVyKCk7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNT
dGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU09iamVjdCogdW53cmFwcGVkT2JqZWN0LCBOb25O
dWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4pOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBh
bGxvd3NHZXRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVh
bCBib29sIGFsbG93c1NldFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dzRGVsZXRlUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NDb25zdHJ1Y3QoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NIYXNJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0NhbGxBc0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
R2V0UHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICB2aXJ0
dWFsIEpTQzo6SlNWYWx1ZSBwcmVwYXJlSW5jb21pbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogdW53
cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVlIHVud3JhcHBlZFZhbHVlKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBKU0M6OkpTVmFsdWUgd3JhcE91dGdvaW5nVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHVu
d3JhcHBlZEV4ZWMsIEpTQzo6SlNWYWx1ZSB1bndyYXBwZWRWYWx1ZSkgY29uc3QgeyByZXR1cm4g
d3JhcCh1bndyYXBwZWRFeGVjLCB1bndyYXBwZWRWYWx1ZSk7IH0KLQotICAgICAgICB2aXJ0dWFs
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZv
OyB9Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSlNJbnNw
ZWN0ZWRPYmplY3RXcmFwcGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNh
NzNmZGEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxi
YWNrV3JhcHBlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5oIgotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLQotI2luY2x1ZGUgIkpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5oIgotI2luY2x1
ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyKTsKLQotdHlwZWRlZiBI
YXNoTWFwPEpTT2JqZWN0KiwgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIqPiBXcmFwcGVyTWFw
OwotCi1zdGF0aWMgV3JhcHBlck1hcCYgd3JhcHBlcnMoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoV3JhcHBlck1hcCwgbWFwLCAoKSk7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotY29uc3Qg
Q2xhc3NJbmZvIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlciIsICZKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZv
LCAwLCAwIH07Ci0KLXN0YXRpYyBTdHJ1Y3R1cmUqIGxlYWtJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXJTdHJ1Y3R1cmUoKQotewotICAgIFN0cnVjdHVyZTo6c3RhcnRJZ25vcmluZ0xlYWtzKCk7Ci0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKS5yZWxlYXNlUmVmKCk7Ci0gICAgU3RydWN0dXJlOjpzdG9w
SWdub3JpbmdMZWFrcygpOwotICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci19Ci0KLUpTVmFsdWUgSlNJ
bnNwZWN0b3JDYWxsYmFja1dyYXBwZXI6OndyYXAoRXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBK
U1ZhbHVlIHVud3JhcHBlZFZhbHVlKQotewotICAgIGlmICghdW53cmFwcGVkVmFsdWUuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlZFZhbHVlOwotCi0gICAgSlNPYmplY3QqIHVu
d3JhcHBlZE9iamVjdCA9IGFzT2JqZWN0KHVud3JhcHBlZFZhbHVlKTsKLQotICAgIGlmICh1bndy
YXBwZWRPYmplY3QtPmluaGVyaXRzKCZKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6c19pbmZv
KSkKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlZE9iamVjdDsKLQotICAgIGlmIChKU0luc3BlY3Rv
ckNhbGxiYWNrV3JhcHBlciogd3JhcHBlciA9IHdyYXBwZXJzKCkuZ2V0KHVud3JhcHBlZE9iamVj
dCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB1
bndyYXBwZWRPYmplY3QtPnByb3RvdHlwZSgpOwotICAgIEFTU0VSVChwcm90b3R5cGUuaXNOdWxs
KCkgfHwgcHJvdG90eXBlLmlzT2JqZWN0KCkpOwotCi0gICAgaWYgKHByb3RvdHlwZS5pc051bGwo
KSkgewotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBsZWFrSW5zcGVjdG9y
Q2FsbGJhY2tXcmFwcGVyU3RydWN0dXJlKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKHVud3JhcHBl
ZEV4ZWMpIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyKHVud3JhcHBlZEV4ZWMsIHVud3JhcHBl
ZE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICB9Ci0gICAgUHJvdGVjdGVkSlNWYWx1ZSB3cmFwcGVk
UHJvdG8gPSB3cmFwKHVud3JhcHBlZEV4ZWMsIHByb3RvdHlwZSk7Ci0gICAgcmV0dXJuIG5ldyAo
dW53cmFwcGVkRXhlYykgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIodW53cmFwcGVkRXhlYywg
dW53cmFwcGVkT2JqZWN0LCBjcmVhdGVTdHJ1Y3R1cmUod3JhcHBlZFByb3RvLmdldCgpKSk7Ci19
Ci0KLUpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjpKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBl
cihFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNRdWFyYW50aW5l
ZE9iamVjdFdyYXBwZXIodW53cmFwcGVkRXhlYywgdW53cmFwcGVkT2JqZWN0LCBzdHJ1Y3R1cmUp
Ci17Ci0gICAgQVNTRVJUKCF3cmFwcGVycygpLmNvbnRhaW5zKHVud3JhcHBlZE9iamVjdCkpOwot
ICAgIHdyYXBwZXJzKCkuc2V0KHVud3JhcHBlZE9iamVjdCwgdGhpcyk7Ci19Ci0KLUpTSW5zcGVj
dG9yQ2FsbGJhY2tXcmFwcGVyOjp+SlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIoKQotewotICAg
IHdyYXBwZXJzKCkucmVtb3ZlKHVud3JhcHBlZE9iamVjdCgpKTsKLX0KLQotSlNWYWx1ZSBKU0lu
c3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6cHJlcGFyZUluY29taW5nVmFsdWUoRXhlY1N0YXRlKiB1
bndyYXBwZWRFeGVjLCBKU1ZhbHVlIHVud3JhcHBlZFZhbHVlKSBjb25zdAotewotICAgIGlmIChK
U1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGFzV3JhcHBlcih1bndyYXBwZWRW
YWx1ZSkpIHsKLSAgICAgICAgLy8gVGhlIG9ubHkgdGltZSBhIHdyYXBwZXIgc2hvdWxkIGJlIHBh
c3NlZCBpbnRvIGEgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIgaXMgd2hlbiBhIGNsaWVudC1z
aWRlIHN0b3JhZ2UgY2FsbGJhY2sKLSAgICAgICAgLy8gaXMgY2FsbGVkLiAoVGhlIGNsaWVudC1z
aWRlIHN0b3JhZ2UgQVBJIGNhbGxzIHRoZSBjYWxsYmFjayB3aXRoIHRoZSBgdGhpc2Agb2JqZWN0
IHNldCB0byB0aGUgY2FsbGJhY2sgaXRzZWxmLikKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSh3cmFwcGVyID09IHRoaXMsICJBIGRpZmZlcmVudCB3cmFwcGVyIHdhcyBwYXNzZWQgaW50byBh
IEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyIik7Ci0gICAgICAgIGlmICh3cmFwcGVyICE9IHRo
aXMpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgICAgICByZXR1cm4g
d3JhcHBlci0+dW53cmFwcGVkT2JqZWN0KCk7Ci0gICAgfQotCi0gICAgLy8gQW55IHZhbHVlIGJl
aW5nIHBhc3NlZCB0byB0aGUgSW5zcGVjdG9yIGZyb20gdGhlIGluc3BlY3RlZCBwYWdlIHNob3Vs
ZCBiZSB3cmFwcGVkIGluIGEgSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLgotICAgIHJldHVybiBK
U0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAodW53cmFwcGVkRXhlYywgdW53cmFwcGVkVmFs
dWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxi
YWNrV3JhcHBlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3Jh
cHBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTI4MDYzLi4wMDAwMDAwCi0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyX2gKLSNk
ZWZpbmUgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXJfaAotCi0jaW5jbHVkZSAiSlNRdWFyYW50
aW5lZE9iamVjdFdyYXBwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3Mg
SlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIgOiBwdWJsaWMgSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSB3cmFwKEpT
Qzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU0M6OkpTVmFsdWUgdW53cmFwcGVkVmFsdWUp
OwotCi0gICAgICAgIHZpcnR1YWwgfkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyKCk7Ci0KLSAg
ICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJnNfaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19p
bmZvOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBl
cihKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU09iamVjdCogdW53cmFwcGVk
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4pOwotCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBhbGxvd3NDYWxsQXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LQotICAgICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBwcmVwYXJlSW5jb21pbmdWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVlIHVud3JhcHBlZFZhbHVlKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgd3JhcE91dGdvaW5nVmFsdWUoSlND
OjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTQzo6SlNWYWx1ZSB1bndyYXBwZWRWYWx1ZSkg
Y29uc3QgeyByZXR1cm4gd3JhcCh1bndyYXBwZWRFeGVjLCB1bndyYXBwZWRWYWx1ZSk7IH0KLSAg
ICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBKU0luc3BlY3RvckNh
bGxiYWNrV3JhcHBlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5l
ZE9iamVjdFdyYXBwZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzc5N2Yx
Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCIKLQotI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotCi0jaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgotCi11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIpOwotCi1jb25zdCBDbGFz
c0luZm8gSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbyA9IHsgIkpTUXVhcmFudGlu
ZWRPYmplY3RXcmFwcGVyIiwgMCwgMCwgMCB9OwotCi1KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBl
ciogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmFzV3JhcHBlcihKU1ZhbHVlIHZhbHVlKQot
ewotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotCi0gICAgaWYgKCFvYmplY3QtPmlu
aGVyaXRzKCZKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNRdWFyYW50aW5lZE9iamVjdFdyYXBw
ZXIqPihvYmplY3QpOwotfQotCi1KU1ZhbHVlIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpj
YWNoZWRWYWx1ZUdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KQotewotICAgIEpTVmFsdWUgdiA9IHNsb3Quc2xvdEJhc2UoKTsKLSAg
ICBBU1NFUlQodik7Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLUpTUXVhcmFudGluZWRPYmplY3RXcmFw
cGVyOjpKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcihFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMs
IEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQotICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQotICAgICwgbV91bndyYXBwZWRH
bG9iYWxPYmplY3QodW53cmFwcGVkRXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQotICAgICwg
bV91bndyYXBwZWRPYmplY3QodW53cmFwcGVkT2JqZWN0KQotewotICAgIEFTU0VSVF9BUkcodW53
cmFwcGVkRXhlYywgdW53cmFwcGVkRXhlYyk7Ci0gICAgQVNTRVJUX0FSRyh1bndyYXBwZWRPYmpl
Y3QsIHVud3JhcHBlZE9iamVjdCk7Ci0gICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpKTsKLX0K
LQotSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6On5KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBl
cigpCi17Ci19Ci0KLWJvb2wgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmFsbG93c1Vud3Jh
cHBlZEFjY2Vzc0Zyb20oRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBtX3Vu
d3JhcHBlZEdsb2JhbE9iamVjdC0+cHJvZmlsZUdyb3VwKCkgPT0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKTsKLX0KLQotRXhlY1N0YXRlKiBKU1F1YXJhbnRpbmVk
T2JqZWN0V3JhcHBlcjo6dW53cmFwcGVkRXhlY1N0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV91bndyYXBwZWRHbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLX0KLQotdm9pZCBKU1F1YXJh
bnRpbmVkT2JqZWN0V3JhcHBlcjo6dHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGV4ZWMgIT0gdW53cmFwcGVkRXhlY1N0YXRl
KCkpOwotCi0gICAgaWYgKCF1bndyYXBwZWRFeGVjU3RhdGUoKS0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gdW53cmFwcGVkRXhlY1N0
YXRlKCktPmV4Y2VwdGlvbigpOwotICAgIHVud3JhcHBlZEV4ZWNTdGF0ZSgpLT5jbGVhckV4Y2Vw
dGlvbigpOwotICAgIGV4ZWMtPnNldEV4Y2VwdGlvbih3cmFwT3V0Z29pbmdWYWx1ZSh1bndyYXBw
ZWRFeGVjU3RhdGUoKSwgZXhjZXB0aW9uKSk7Ci19Ci0KLXZvaWQgSlNRdWFyYW50aW5lZE9iamVj
dFdyYXBwZXI6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKLXsKLSAgICBKU09i
amVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0KLSAgICBtYXJrU3RhY2suYXBwZW5kKG1f
dW53cmFwcGVkT2JqZWN0KTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKG1fdW53cmFwcGVkR2xvYmFs
T2JqZWN0KTsKLX0KLQotYm9vbCBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6Z2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGlmICghYWxsb3dzR2V0UHJvcGVydHkoKSkgewot
ICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBQcm9wZXJ0eVNsb3QgdW53cmFwcGVkU2xvdChtX3Vud3JhcHBlZE9iamVjdCk7Ci0g
ICAgYm9vbCByZXN1bHQgPSBtX3Vud3JhcHBlZE9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KHVu
d3JhcHBlZEV4ZWNTdGF0ZSgpLCBpZGVudGlmaWVyLCB1bndyYXBwZWRTbG90KTsKLSAgICBpZiAo
cmVzdWx0KSB7Ci0gICAgICAgIEpTVmFsdWUgdW53cmFwcGVkVmFsdWUgPSB1bndyYXBwZWRTbG90
LmdldFZhbHVlKHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCBpZGVudGlmaWVyKTsKLSAgICAgICAgc2xv
dC5zZXRDdXN0b20od3JhcE91dGdvaW5nVmFsdWUodW53cmFwcGVkRXhlY1N0YXRlKCksIHVud3Jh
cHBlZFZhbHVlKSwgY2FjaGVkVmFsdWVHZXR0ZXIpOwotICAgIH0KLQotICAgIHRyYW5zZmVyRXhj
ZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29s
IEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAg
aWYgKCFhbGxvd3NHZXRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFByb3BlcnR5U2xvdCB1bndyYXBw
ZWRTbG90KG1fdW53cmFwcGVkT2JqZWN0KTsKLSAgICBib29sIHJlc3VsdCA9IG1fdW53cmFwcGVk
T2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QodW53cmFwcGVkRXhlY1N0YXRlKCksIGlkZW50aWZp
ZXIsIHVud3JhcHBlZFNsb3QpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgSlNWYWx1ZSB1
bndyYXBwZWRWYWx1ZSA9IHVud3JhcHBlZFNsb3QuZ2V0VmFsdWUodW53cmFwcGVkRXhlY1N0YXRl
KCksIGlkZW50aWZpZXIpOwotICAgICAgICBzbG90LnNldEN1c3RvbSh3cmFwT3V0Z29pbmdWYWx1
ZSh1bndyYXBwZWRFeGVjU3RhdGUoKSwgdW53cmFwcGVkVmFsdWUpLCBjYWNoZWRWYWx1ZUdldHRl
cik7Ci0gICAgfQotCi0gICAgdHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBp
ZiAoIWFsbG93c0dldFByb3BlcnR5KCkpIHsKLSAgICAgICAgZGVzY3JpcHRvci5zZXRVbmRlZmlu
ZWQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUHJvcGVydHlEZXNjcmlw
dG9yIHVud3JhcHBlZERlc2NyaXB0b3I7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3Vud3JhcHBlZE9i
amVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCBpZGVu
dGlmaWVyLCB1bndyYXBwZWREZXNjcmlwdG9yKTsKLQotICAgIGlmICh1bndyYXBwZWREZXNjcmlw
dG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpIHsKLSAgICAgICAgZGVzY3JpcHRvci5zZXRBY2Nl
c3NvckRlc2NyaXB0b3Iod3JhcE91dGdvaW5nVmFsdWUodW53cmFwcGVkRXhlY1N0YXRlKCksIHVu
d3JhcHBlZERlc2NyaXB0b3IuZ2V0dGVyKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cmFwT3V0Z29pbmdWYWx1ZSh1bndyYXBwZWRFeGVjU3RhdGUoKSwgdW53
cmFwcGVkRGVzY3JpcHRvci5zZXR0ZXIoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVud3JhcHBlZERlc2NyaXB0b3IuYXR0cmlidXRlcygpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHdyYXBPdXRnb2luZ1ZhbHVlKHVu
d3JhcHBlZEV4ZWNTdGF0ZSgpLCB1bndyYXBwZWREZXNjcmlwdG9yLnZhbHVlKCkpLCB1bndyYXBw
ZWREZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSk7Ci0gICAgdHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNT
dGF0ZShleGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgaWYg
KCFhbGxvd3NTZXRQcm9wZXJ0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Vud3JhcHBl
ZE9iamVjdC0+cHV0KHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCBpZGVudGlmaWVyLCBwcmVwYXJlSW5j
b21pbmdWYWx1ZShleGVjLCB2YWx1ZSksIHNsb3QpOwotCi0gICAgdHJhbnNmZXJFeGNlcHRpb25U
b0V4ZWNTdGF0ZShleGVjKTsKLX0KLQotdm9pZCBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSkK
LXsKLSAgICBpZiAoIWFsbG93c1NldFByb3BlcnR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fdW53cmFwcGVkT2JqZWN0LT5wdXQodW53cmFwcGVkRXhlY1N0YXRlKCksIGlkZW50aWZpZXIs
IHByZXBhcmVJbmNvbWluZ1ZhbHVlKGV4ZWMsIHZhbHVlKSk7Ci0KLSAgICB0cmFuc2ZlckV4Y2Vw
dGlvblRvRXhlY1N0YXRlKGV4ZWMpOwotfQotCi1ib29sIEpTUXVhcmFudGluZWRPYmplY3RXcmFw
cGVyOjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQotewotICAgIGlmICghYWxsb3dzU2V0UHJvcGVydHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgUHJvcGVydHlEZXNjcmlwdG9yIHdyYXBwZWREZXNjcmlwdG9yOwotICAg
IGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkgewotICAgICAgICB3cmFwcGVkRGVz
Y3JpcHRvci5zZXRWYWx1ZShwcmVwYXJlSW5jb21pbmdWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZh
bHVlKCkpKTsKLSAgICAgICAgaWYgKHdyYXBwZWREZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgp
KQotICAgICAgICAgICAgd3JhcHBlZERlc2NyaXB0b3Iuc2V0V3JpdGFibGUoZGVzY3JpcHRvci53
cml0YWJsZSgpKTsKLSAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0
b3IoKSkgewotICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXIoKSkKLSAgICAgICAgICAgIHdy
YXBwZWREZXNjcmlwdG9yLnNldEdldHRlcihwcmVwYXJlSW5jb21pbmdWYWx1ZShleGVjLCBkZXNj
cmlwdG9yLmdldHRlcigpKSk7Ci0gICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlcigpKQotICAg
ICAgICAgICAgd3JhcHBlZERlc2NyaXB0b3Iuc2V0U2V0dGVyKHByZXBhcmVJbmNvbWluZ1ZhbHVl
KGV4ZWMsIGRlc2NyaXB0b3Iuc2V0dGVyKCkpKTsKLSAgICB9Ci0gICAgaWYgKHdyYXBwZWREZXNj
cmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkpCi0gICAgICAgIHdyYXBwZWREZXNjcmlwdG9yLnNl
dEVudW1lcmFibGUoZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpOwotICAgIGlmICh3cmFwcGVkRGVz
Y3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkpCi0gICAgICAgIHdyYXBwZWREZXNjcmlwdG9y
LnNldENvbmZpZ3VyYWJsZShkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKTsKLSAgICAKLSAgICBi
b29sIHJlc3VsdCA9IG1fdW53cmFwcGVkT2JqZWN0LT5kZWZpbmVPd25Qcm9wZXJ0eSh1bndyYXBw
ZWRFeGVjU3RhdGUoKSwgcHJvcGVydHlOYW1lLCB3cmFwcGVkRGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpOwotICAgIAotICAgIHRyYW5zZmVyRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KQotewotICAgIGlmICghYWxsb3dzRGVsZXRlUHJvcGVydHkoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYm9vbCByZXN1bHQgPSBtX3Vud3JhcHBlZE9iamVjdC0+ZGVsZXRlUHJvcGVy
dHkodW53cmFwcGVkRXhlY1N0YXRlKCksIGlkZW50aWZpZXIpOwotCi0gICAgdHJhbnNmZXJFeGNl
cHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wg
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaWRlbnRpZmllcikKLXsKLSAgICBpZiAoIWFsbG93c0RlbGV0ZVByb3BlcnR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgcmVzdWx0ID0gbV91bndyYXBw
ZWRPYmplY3QtPmRlbGV0ZVByb3BlcnR5KHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCBpZGVudGlmaWVy
KTsKLQotICAgIHRyYW5zZmVyRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1KU09iamVjdCogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmNv
bnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQXJn
TGlzdCYgYXJncykKLXsKLSAgICBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogd3JhcHBlciA9
IHN0YXRpY19jYXN0PEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyKj4oY29uc3RydWN0b3IpOwot
Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcHJlcGFyZWRBcmdzOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKLSAgICAgICAgcHJlcGFyZWRBcmdzLmFwcGVu
ZCh3cmFwcGVyLT5wcmVwYXJlSW5jb21pbmdWYWx1ZShleGVjLCBhcmdzLmF0KGkpKSk7Ci0KLSAg
ICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIHJldXNlIHRoZSByZXN1
bHQgb2YgbV91bndyYXBwZWRPYmplY3QtPmdldENvbnN0cnVjdERhdGEKLSAgICAvLyBmcm9tIHdo
ZW4gd2UgY2FsbGVkIGl0IGluIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpnZXRDb25zdHJ1
Y3REYXRhLgotICAgIENvbnN0cnVjdERhdGEgdW53cmFwcGVkQ29uc3RydWN0RGF0YTsKLSAgICBD
b25zdHJ1Y3RUeXBlIHVud3JhcHBlZENvbnN0cnVjdFR5cGUgPSB3cmFwcGVyLT5tX3Vud3JhcHBl
ZE9iamVjdC0+Z2V0Q29uc3RydWN0RGF0YSh1bndyYXBwZWRDb25zdHJ1Y3REYXRhKTsKLSAgICBB
U1NFUlQodW53cmFwcGVkQ29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlTm9uZSk7Ci0KLSAg
ICBKU1ZhbHVlIHVud3JhcHBlZFJlc3VsdCA9IEpTQzo6Y29uc3RydWN0KHdyYXBwZXItPnVud3Jh
cHBlZEV4ZWNTdGF0ZSgpLCB3cmFwcGVyLT5tX3Vud3JhcHBlZE9iamVjdCwgdW53cmFwcGVkQ29u
c3RydWN0VHlwZSwgdW53cmFwcGVkQ29uc3RydWN0RGF0YSwgcHJlcGFyZWRBcmdzKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdFZhbHVlID0gd3JhcHBlci0+d3JhcE91dGdvaW5nVmFsdWUod3JhcHBlci0+
dW53cmFwcGVkRXhlY1N0YXRlKCksIHVud3JhcHBlZFJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3Vs
dFZhbHVlLmlzT2JqZWN0KCkpOwotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBhc09iamVjdChyZXN1
bHRWYWx1ZSk7Ci0KLSAgICB3cmFwcGVyLT50cmFuc2ZlckV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4
ZWMpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQ29uc3RydWN0VHlwZSBKU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQotewotICAgIGlmICghYWxsb3dzQ29uc3RydWN0KCkpCi0gICAgICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlTm9uZTsKLSAgICBDb25zdHJ1Y3REYXRhIHVud3JhcHBlZENvbnN0cnVjdERh
dGE7Ci0gICAgaWYgKG1fdW53cmFwcGVkT2JqZWN0LT5nZXRDb25zdHJ1Y3REYXRhKHVud3JhcHBl
ZENvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVOb25lKQotICAgICAgICByZXR1cm4gQ29u
c3RydWN0VHlwZU5vbmU7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3Q7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwotfQotCi1ib29sIEpTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyOjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIEpTVmFsdWUgcHJvdG8pCi17Ci0gICAgaWYgKCFhbGxvd3NIYXNJbnN0YW5jZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHJlc3VsdCA9IG1fdW53cmFwcGVkT2Jq
ZWN0LT5oYXNJbnN0YW5jZSh1bndyYXBwZWRFeGVjU3RhdGUoKSwgcHJlcGFyZUluY29taW5nVmFs
dWUoZXhlYywgdmFsdWUpLCBwcmVwYXJlSW5jb21pbmdWYWx1ZShleGVjLCBwcm90bykpOwotCi0g
ICAgdHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUpTVmFsdWUgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmNhbGwoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogZnVuY3Rpb24sIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQotewotICAgIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyKiB3cmFwcGVy
ID0gc3RhdGljX2Nhc3Q8SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqPihmdW5jdGlvbik7Ci0K
LSAgICBKU1ZhbHVlIHByZXBhcmVkVGhpc1ZhbHVlID0gd3JhcHBlci0+cHJlcGFyZUluY29taW5n
VmFsdWUoZXhlYywgdGhpc1ZhbHVlKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHByZXBh
cmVkQXJnczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHByZXBhcmVkQXJncy5hcHBlbmQod3JhcHBlci0+cHJlcGFyZUluY29taW5nVmFsdWUo
ZXhlYywgYXJncy5hdChpKSkpOwotCi0gICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmlu
ZCBhIHdheSB0byByZXVzZSB0aGUgcmVzdWx0IG9mIG1fdW53cmFwcGVkT2JqZWN0LT5nZXRDYWxs
RGF0YQotICAgIC8vIGZyb20gd2hlbiB3ZSBjYWxsZWQgaXQgaW4gSlNRdWFyYW50aW5lZE9iamVj
dFdyYXBwZXI6OmdldENhbGxEYXRhLgotICAgIENhbGxEYXRhIHVud3JhcHBlZENhbGxEYXRhOwot
ICAgIENhbGxUeXBlIHVud3JhcHBlZENhbGxUeXBlID0gd3JhcHBlci0+bV91bndyYXBwZWRPYmpl
Y3QtPmdldENhbGxEYXRhKHVud3JhcHBlZENhbGxEYXRhKTsKLSAgICBBU1NFUlQodW53cmFwcGVk
Q2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgIEpTVmFsdWUgdW53cmFwcGVkUmVzdWx0
ID0gSlNDOjpjYWxsKHdyYXBwZXItPnVud3JhcHBlZEV4ZWNTdGF0ZSgpLCB3cmFwcGVyLT5tX3Vu
d3JhcHBlZE9iamVjdCwgdW53cmFwcGVkQ2FsbFR5cGUsIHVud3JhcHBlZENhbGxEYXRhLCBwcmVw
YXJlZFRoaXNWYWx1ZSwgcHJlcGFyZWRBcmdzKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHdyYXBw
ZXItPndyYXBPdXRnb2luZ1ZhbHVlKHdyYXBwZXItPnVud3JhcHBlZEV4ZWNTdGF0ZSgpLCB1bndy
YXBwZWRSZXN1bHQpOwotCi0gICAgd3JhcHBlci0+dHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0
ZShleGVjKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUNhbGxUeXBlIEpTUXVhcmFudGlu
ZWRPYmplY3RXcmFwcGVyOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAg
aWYgKCFhbGxvd3NDYWxsQXNGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gQ2FsbFR5cGVOb25l
OwotICAgIENhbGxEYXRhIHVud3JhcHBlZENhbGxEYXRhOwotICAgIGlmIChtX3Vud3JhcHBlZE9i
amVjdC0+Z2V0Q2FsbERhdGEodW53cmFwcGVkQ2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAg
ICAgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsOwotICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Ci19Ci0KLXZvaWQgSlNRdWFyYW50aW5l
ZE9iamVjdFdyYXBwZXI6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBpZiAoIWFsbG93c0dl
dFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fdW53cmFwcGVk
T2JqZWN0LT5nZXRQcm9wZXJ0eU5hbWVzKHVud3JhcHBlZEV4ZWNTdGF0ZSgpLCBhcnJheSwgbW9k
ZSk7Ci19Ci0KLXZvaWQgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmdldE93blByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKLXsKLSAgICBpZiAoIWFsbG93c0dldFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV91bndyYXBwZWRPYmplY3QtPmdldE93blByb3BlcnR5TmFtZXModW53
cmFwcGVkRXhlY1N0YXRlKCksIGFycmF5LCBtb2RlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0
V3JhcHBlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDIzYTJiLi4wMDAwMDAwCi0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcl9o
Ci0jZGVmaW5lIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyX2gKLQotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgSlNRdWFy
YW50aW5lZE9iamVjdFdyYXBwZXIgOiBwdWJsaWMgSlNDOjpKU09iamVjdCB7Ci0gICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqIGFzV3JhcHBlcihK
U0M6OkpTVmFsdWUpOwotCi0gICAgICAgIHZpcnR1YWwgfkpTUXVhcmFudGluZWRPYmplY3RXcmFw
cGVyKCk7Ci0KLSAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3Qo
KSB7IHJldHVybiBtX3Vud3JhcHBlZE9iamVjdDsgfQotCi0gICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHVud3JhcHBlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW53cmFwcGVk
R2xvYmFsT2JqZWN0OyB9OwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlY1N0
YXRlKCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBhbGxvd3NVbndyYXBwZWRBY2Nlc3NGcm9tKEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbzsKLQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4g
Y3JlYXRlU3RydWN0dXJlKEpTQzo6SlNWYWx1ZSBwcm90bykgCi0gICAgICAgIHsgCi0gICAgICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSk7IAotICAgICAgICB9Ci0KLSAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgfCBKU0M6Ok92ZXJyaWRlc0hhc0luc3RhbmNlIHwgSlNDOjpPdmVycmlkZXNNYXJrQ2hpbGRy
ZW4gfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OkpTT2JqZWN0OjpTdHJ1
Y3R1cmVGbGFnczsKLQotICAgICAgICBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcihKU0M6OkV4
ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU09iamVjdCogdW53cmFwcGVkT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4pOwotCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBtYXJrQ2hpbGRyZW4oSlNDOjpNYXJrU3RhY2smKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTQzo6UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNDOjpKU1ZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0KLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkKTsKLQotICAgICAgICB2aXJ0dWFsIEpTQzo6Q2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDOjpDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOwotCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNJbnN0YW5jZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpK
U1ZhbHVlIHByb3RvKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0
eU5hbWVzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSBtb2RlID0gSlNDOjpF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKLQotICAgICAgICB2aXJ0dWFsIEpTQzo6VVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiBtX3Vud3JhcHBlZE9iamVjdC0+Y2xhc3NOYW1l
KCk7IH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzR2V0UHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzU2V0UHJvcGVydHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzRGVs
ZXRlUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dzQ29uc3RydWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmly
dHVhbCBib29sIGFsbG93c0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGFsbG93c0NhbGxBc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0dldFByb3BlcnR5TmFtZXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHBy
ZXBhcmVJbmNvbWluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU0M6OkpT
VmFsdWUgdW53cmFwcGVkVmFsdWUpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBKU0M6OkpT
VmFsdWUgd3JhcE91dGdvaW5nVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpT
Qzo6SlNWYWx1ZSB1bndyYXBwZWRWYWx1ZSkgY29uc3QgPSAwOwotCi0gICAgICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgY2FjaGVkVmFsdWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOwotCi0gICAgICAgIHZvaWQg
dHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwotCi0g
ICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEpTQzo6QXJnTGlzdCYpOwotICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY29uc3Ry
dWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIGNvbnN0IEpTQzo6QXJnTGlzdCYp
OwotCi0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIG1fdW53cmFwcGVkR2xvYmFsT2JqZWN0
OwotICAgICAgICBKU0M6OkpTT2JqZWN0KiBtX3Vud3JhcHBlZE9iamVjdDsKLSAgICB9OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBKU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlcl9oCg==
</data>
<flag name="review"
          id="29953"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>