<?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>23123</bug_id>
          
          <creation_ts>2009-01-05 13:45:34 -0800</creation_ts>
          <short_desc>CanvasPixelArray performance is too slow</short_desc>
          <delta_ts>2009-01-14 10:57:32 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>CLOSED</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104480</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-05 13:45:34 -0800</bug_when>
    <thetext>CPA perf is too slow, esp. when compared to pure array</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104496</commentid>
    <comment_count>1</comment_count>
      <attachid>26444</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-05 15:13:07 -0800</bug_when>
    <thetext>Created attachment 26444
Devirtualise byte array logic

devirtualisation-fu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104500</commentid>
    <comment_count>2</comment_count>
      <attachid>26445</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-05 15:40:56 -0800</bug_when>
    <thetext>Created attachment 26445
Fixed issues pointed out by mark

Minor updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104504</commentid>
    <comment_count>3</comment_count>
      <attachid>26445</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-01-05 15:53:34 -0800</bug_when>
    <thetext>Comment on attachment 26445
Fixed issues pointed out by mark

If bdash is happy with the style, then I&apos;m happy with the logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104514</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-05 17:52:43 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/bindings/js/JSImageDataCustom.cpp =&gt; JavaScriptCore/runtime/ByteArray.h
	R	WebCore/bindings/js/JSCanvasPixelArrayCustom.h =&gt; JavaScriptCore/runtime/ByteArray.cpp
	D	WebCore/html/CanvasPixelArray.cpp
	D	WebCore/html/CanvasPixelArray.h
	D	WebCore/html/CanvasPixelArray.idl
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/GNUmakefile.am
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/JavaScriptCore.pri
	M	JavaScriptCore/JavaScriptCore.scons
	M	JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
	M	JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
	M	JavaScriptCore/interpreter/Interpreter.cpp
	M	JavaScriptCore/interpreter/Interpreter.h
	A	JavaScriptCore/runtime/JSByteArray.cpp
	A	JavaScriptCore/runtime/JSByteArray.h
	M	WebCore/ChangeLog
	M	WebCore/DerivedSources.make
	A	WebCore/ForwardingHeaders/runtime/ByteArray.h
	A	WebCore/ForwardingHeaders/runtime/JSByteArray.h
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.scons
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/WebCoreSources.bkl
	M	WebCore/bindings/js/JSImageDataCustom.cpp
	M	WebCore/html/CanvasRenderingContext2D.cpp
	M	WebCore/html/ImageData.cpp
	M	WebCore/html/ImageData.h
	M	WebCore/html/ImageData.idl
	M	WebCore/platform/graphics/cg/ImageBufferCG.cpp
Committed r39625

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105702</commentid>
    <comment_count>5</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-14 10:10:52 -0800</bug_when>
    <thetext>Is it appropriate for WebCore to be using this JSC runtime/ class?  I don&apos;t know the rules, but this moved from using a WebCore type (CanvasPixelArray), to the new ByteArray JSC class.  It seems like it would be preferred to have the type in WebCore...

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105713</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-14 10:33:28 -0800</bug_when>
    <thetext>This is necessary to achieve acceptable performance, pulling bytearray into webcore would result in a cyclic dependency.

(In reply to comment #5)
&gt; Is it appropriate for WebCore to be using this JSC runtime/ class?  I don&apos;t
&gt; know the rules, but this moved from using a WebCore type (CanvasPixelArray), to
&gt; the new ByteArray JSC class.  It seems like it would be preferred to have the
&gt; type in WebCore...
&gt; 
&gt; Thanks
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105735</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-14 10:57:32 -0800</bug_when>
    <thetext>It may be possible to pull bytearray into WTF actually, which seems betterer</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26444</attachid>
            <date>2009-01-05 15:13:07 -0800</date>
            <delta_ts>2009-01-05 15:40:56 -0800</delta_ts>
            <desc>Devirtualise byte array logic</desc>
            <filename>cpa-perf.patch</filename>
            <type>text/plain</type>
            <size>60371</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA5YTQyMGQ4Li42MDVlNjFmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMDktMDEtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXNQaXhlbEFycmF5
IHBlcmZvcm1hbmNlIGlzIHRvbyBzbG93IAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTIzPgorCisgICAgICAgIFRoZSBmaXggdG8gdGhpcyBpcyB0
byBkZXZpcnR1YWxpc2UgZ2V0IGFuZCBwdXQgaW4gYSBtYW5uZXIgc2ltaWxhciB0bworICAgICAg
ICBKU1N0cmluZyBhbmQgSlNBcnJheS4gIFRvIGRvIHRoaXMgSSd2ZSBhZGRlZCBhIEJ5dGVBcnJh
eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBhbmQgSlNCeXRlQXJyYXkgd3JhcHBlciB0byBKU0Mu
ICBXZSBjYW4gdGhlbiBkbyB2cHRyIGNvbXBhcmlzb25zIHRvCisgICAgICAgIGRldmlydHVhbGlz
ZSB0aGUgY2FsbHMuCisKKyAgICAgICAgVGhpcyBkZXZpcnR1YWxpc2F0aW9uIGltcHJvdmVzIHBl
cmZvcm1hbmNlIGJ5IDEuNS0yeCBpbiBteSBzb21ld2hhdCBhZAorICAgICAgICBob2MgdGVzdHMu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnNjb25zOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpJbnRlcnByZXRlcik6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpjdGlfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjdGlf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzSlNCeXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvQnl0ZUFycmF5LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVBcnJheTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0J5dGVBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZUFycmF5OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlQXJyYXk6OnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVBcnJheTo6Z2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZUFycmF5OjpkYXRh
KToKKyAgICAgICAgKEpTQzo6Qnl0ZUFycmF5OjpCeXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCeXRlQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjYW5BY2Nlc3NJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRJbmRleCk6CisgICAgICAgIChK
U0M6OkpTQnl0ZUFycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5Ojpj
bGFzc0luZm8pOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6bGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNCeXRlQXJyYXk6Oik6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVB
cnJheSk6CisgICAgICAgIChKU0M6OmFzQnl0ZUFycmF5KToKKwogMjAwOS0wMS0wNSAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZiNDlmOGEuLjBlZGM2MGIgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0yODksNiArMjg5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggXAogCUphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgXAogCUphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5
dGVBcnJheS5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZUFycmF5LmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXApA
QCAtMzMxLDYgKzMzMyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIFwKKwlKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAg
XAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGRh
NDI3ZmMuLmNiZjAzNzggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTk5LDYgKzk5
LDggQEAgX19aTjNKU0MxMEpTRnVuY3Rpb240aW5mb0UKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBO
U185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4
ZWNTdGF0ZUVOU185RXJyb3JUeXBlRVBLYwogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfOUVycm9yVHlwZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5
MTVjcmVhdGVTdHJ1Y3R1cmVFUE5TXzdKU1ZhbHVlRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFF
UE5TXzlFeGVjU3RhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVBOU185Qnl0
ZUFycmF5RVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTEybm9uSW5saW5l
TmFORXYKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTh0b09iamVjdEVQTlNfN0pTVmFsdWVFUE5TXzlF
eGVjU3RhdGVFCiBfX1pOM0pTQzExSlNJbW1lZGlhdGU4dG9TdHJpbmdFUE5TXzdKU1ZhbHVlRQpA
QCAtMjQ2LDYgKzI0OCw3IEBAIF9fWk4zSlNDOFByb2ZpbGVyMTRzdGFydFByb2ZpbGluZ0VQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXI4cHJvZmlsZXJFdgog
X19aTjNKU0M4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUk5TXzEwU2NvcGVDaGFpbkVSS05TXzEw
U291cmNlQ29kZUVQTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhqc1N0cmluZ0VQTlNfMTJKU0dsb2Jh
bERhdGFFUktOU183VVN0cmluZ0UKK19fWk4zSlNDOUJ5dGVBcnJheTZjcmVhdGVFbQogX19aTjNK
U0M5Q29kZUJsb2NrRDFFdgogX19aTjNKU0M5Q29kZUJsb2NrRDJFdgogX19aTjNKU0M5U3RydWN0
dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5wcmkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKaW5kZXgg
ZGVkMWQ3MC4uMzc5YTE0MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQpAQCAtMTA1LDYg
KzEwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cCBcCiAgICAgcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9CeXRlQXJyYXkuY3BwIFwKICAgICBydW50aW1l
L0NhbGxEYXRhLmNwcCBcCiAgICAgcnVudGltZS9Db2xsZWN0b3IuY3BwIFwKICAgICBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcCBcCkBAIC0xMjksNiArMTMwLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9Db21wbGV0
aW9uLmNwcCBcCiAgICAgcnVudGltZS9KU0FycmF5LmNwcCBcCisgICAgcnVudGltZS9KU0J5dGVB
cnJheS5jcHAgXAogICAgIHJ1bnRpbWUvSlNDZWxsLmNwcCBcCiAgICAgcnVudGltZS9KU0Z1bmN0
aW9uLmNwcCBcCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuc2NvbnMgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwppbmRleCAzN2I5ZDg5Li4yMDZhM2U0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucworKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwpAQCAtNDksNiArNDksNyBAQCBzb3VyY2VzWydydW50
aW1lJ10gPSBbCiAgICAgJ3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgJ3J1
bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAnLAogICAgICdydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
Y3BwJywKKyAgICAncnVudGltZS9CeXRlQXJyYXkuY3BwJywKICAgICAncnVudGltZS9DYWxsRGF0
YS5jcHAnLAogICAgICdydW50aW1lL0NvbGxlY3Rvci5jcHAnLAogICAgICdydW50aW1lL0NvbXBs
ZXRpb24uY3BwJywKQEAgLTcyLDYgKzczLDcgQEAgc291cmNlc1sncnVudGltZSddID0gWwogICAg
ICdydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwJywKICAgICAncnVudGltZS9KU0FjdGl2YXRp
b24uY3BwJywKICAgICAncnVudGltZS9KU0FycmF5LmNwcCcsCisgICAgJ3J1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwJywKICAgICAncnVudGltZS9KU0NlbGwuY3BwJywKICAgICAncnVudGltZS9KU0Z1
bmN0aW9uLmNwcCcsCiAgICAgJ3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBiZDg3ZGFhLi4yMzM2
ODI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
QEAgLTMyNSw2ICszMjUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxCeXRlQXJyYXkuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxCeXRl
QXJyYXkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcQ2FsbERhdGEuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAg
LTUyNSw2ICs1MzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU0J5dGVBcnJheS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEpTQnl0
ZUFycmF5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXEpTQ2VsbC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGNmZGFmYy4uNzE3YWVhOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTgs
NiArMTU4LDEwIEBACiAJCUE3MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cCAqLzsgfTsKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4
REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4MkYxQTUwRUVDOUZBMjAw
MzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzgyRjFBNDBFRUM5RkEyMDAzNjI3M0YgLyog
RXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKKwkJQTc5MUVFNUIwRjExRDkwQzAw
QUUxRjY4IC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3OTFFRTVDMEYx
MUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVFNUEwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5jcHAgKi87IH07CisJCUE3OTFFRjI4MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVGMjYw
RjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpT
Qnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OTFFRjI3MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi87IH07CiAJ
CUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI2MEVFNzRD
RkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQkMwMkU5MEQw
RTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBF
cnJvckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUJDMDJFOTBGMEUxODM5REIwMDBGOTI5NyAvKiBF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggKi87IH07
CkBAIC02NDUsNiArNjQ5LDEwIEBACiAJCUE3MjdGRjY1MERBMzA1M0IwMEU1NDhENyAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
N0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODJGMUE0MEVFQzlGQTIwMDM2Mjcz
RiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVFNUEwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlQXJyYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzkxRUYyNjBGMTFFMDc5MDBBRTFGNjgg
LyogSlNCeXRlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRl
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVGMjcwRjExRTA3OTAw
QUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQnl0ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdC
NDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJD
MTgwRTM5Mzg4MzAwNjVBNTQ0IC8qIEpTU3RhdGljU2NvcGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdGF0aWNTY29wZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTMzNyw2ICsxMzQ1LDEwIEBACiAJCQkJNjUwN0QyOTcwRTg3MUU0
QTAwRDdEODk2IC8qIFR5cGVJbmZvLmggKi8sCiAJCQkJRjY5MkE4ODUwMjU1NTk3RDAxRkY2MEY3
IC8qIFVTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3Ry
aW5nLmggKi8sCisJCQkJQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5oICov
LAorCQkJCUE3OTFFRTVBMEYxMUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJyYXkuY3BwICovLAorCQkJ
CUE3OTFFRjI2MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5oICovLAorCQkJCUE3OTFF
RjI3MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY3NSw2ICsxNjg3
LDggQEAKIAkJCQlCQzE4QzQ0RDBFMTZGNUNEMDBCMzQ0NjAgLyogcGNyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NEUwRTE2RjVDRDAwQjM0NDYwIC8qIHBjcmVfaW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDcyMEUxNkY1Q0QwMEIzNDQ2MCAvKiB1Y3BpbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTc5MUVFNUIwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc5MUVGMjgwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0
ZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMjMsNiArMjAzNyw4IEBACiAJCQkJOTM3MDEz
NDgwQ0E5N0UwRTAwRkExNEQzIC8qIHBjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzRTI2QkQ0MDhCMTUxNDEwMEY4NTIyNiAvKiBwY3JlX3hjbGFzcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1RDZBNTY2QjBGMDU5OTU1MDAyNjYxNDUgLyogVGhyZWFkaW5nLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3OTFFRTVDMEYxMUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpT
Qnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM2ODNmYjEuLmIyNTI3NzIgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJHbG9iYWxFdmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKQEAgLTYwNyw2ICs2MDgsMTAgQEAgSW50ZXJwcmV0ZXI6OkludGVy
cHJldGVyKCkKICAgICBtX2pzQXJyYXlWcHRyID0ganNBcnJheS0+dnB0cigpOwogICAgIGpzQXJy
YXktPn5KU0NlbGwoKTsKIAorICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IG5ldyAoc3Rv
cmFnZSkgSlNCeXRlQXJyYXkoSlNCeXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOworICAgIG1f
anNCeXRlQXJyYXlWcHRyID0ganNCeXRlQXJyYXktPnZwdHIoKTsKKyAgICBqc0J5dGVBcnJheS0+
fkpTQ2VsbCgpOworCiAgICAgSlNDZWxsKiBqc1N0cmluZyA9IG5ldyAoc3RvcmFnZSkgSlNTdHJp
bmcoSlNTdHJpbmc6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIG1fanNTdHJpbmdWcHRyID0ganNT
dHJpbmctPnZwdHIoKTsKICAgICBqc1N0cmluZy0+fkpTQ2VsbCgpOwpAQCAtMjg1Myw2ICsyODU4
LDggQEAgSlNWYWx1ZSogSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcg
ZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckYKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0ganNBcnJheS0+SlNBcnJheTo6Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleCgmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGkpOworICAgICAgICAgICAgZWxz
ZSBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmdldEluZGV4KGkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS0+Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0yODkzLDYgKzI5MDAsMTYgQEAgSlNWYWx1ZSogSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckYKICAgICAg
ICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lW3ZhbHVlXS5qc1Zh
bHVlKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1lW3ZhbHVlXS5q
c1ZhbHVlKGNhbGxGcmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5
KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
IHsKKyAgICAgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkVmFsdWUgPSAwOworICAgICAg
ICAgICAgICAgIEpTVmFsdWUqIGpzVmFsdWUgPSBjYWxsRnJhbWVbdmFsdWVdLmpzVmFsdWUoY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmlzTnVtYmVyKGpzVmFs
dWUpKQorICAgICAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgSlNJbW1l
ZGlhdGU6OmdldFRydW5jYXRlZEludDMyKGpzVmFsdWUpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChmYXN0SXNOdW1iZXIoanNWYWx1ZSwgZFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg
anNCeXRlQXJyYXktPnNldEluZGV4KGksIGRWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUtPnB1dChjYWxsRnJhbWUsIGksIGpzVmFsdWUp
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLT5wdXQoY2Fs
bEZyYW1lLCBpLCBjYWxsRnJhbWVbdmFsdWVdLmpzVmFsdWUoY2FsbEZyYW1lKSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC01MDk0LDcgKzUxMTEsOSBAQCBKU1ZhbHVlKiBJbnRlcnByZXRlcjo6Y3Rp
X29wX2dldF9ieV92YWwoU1RVQl9BUkdTKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGpzQXJyYXktPkpTQXJyYXk6OmdldChjYWxsRnJhbWUsIGkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGludGVycHJldGVyLT5pc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCi0gICAgICAgICAgICByZXN1bHQgPSBhc1N0
cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChBUkdfZ2xvYmFsRGF0YSwgaSk7CisgICAgICAgICAg
ICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoQVJHX2dsb2JhbERhdGEsIGkp
OworICAgICAgICBlbHNlIGlmIChpbnRlcnByZXRlci0+aXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
ICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAg
ICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICByZXN1bHQgPSBiYXNlVmFsdWUtPmdldChjYWxsRnJhbWUsIGkpOwog
ICAgIH0gZWxzZSB7CkBAIC01MTg3LDYgKzUyMDYsMTcgQEAgdm9pZCBJbnRlcnByZXRlcjo6Y3Rp
X29wX3B1dF9ieV92YWwoU1RVQl9BUkdTKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldElu
ZGV4KGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBqc0FycmF5
LT5KU0FycmF5OjpwdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
aW50ZXJwcmV0ZXItPmlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpz
Qnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGRvdWJsZSBk
VmFsdWUgPSAwOworICAgICAgICAgICAgaWYgKEpTSW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSkp
IHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgSlNJbW1lZGlhdGU6
OmdldFRydW5jYXRlZEludDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChmYXN0SXNOdW1iZXIodmFsdWUsIGRWYWx1ZSkpIHsKKyAgICAg
ICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgZFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlVmFs
dWUtPnB1dChjYWxsRnJhbWUsIGksIHZhbHVlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBiYXNlVmFsdWUtPnB1dChjYWxsRnJhbWUsIGksIHZhbHVlKTsKICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZjkwYjIzYi4uN2QxZjAx
NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0yOTIsNiAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0pTQXJyYXkoSlNWYWx1
ZSogdikgeyByZXR1cm4gIUpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh2KSAmJiB2LT5hc0NlbGwo
KS0+dnB0cigpID09IG1fanNBcnJheVZwdHI7IH0KICAgICAgICAgYm9vbCBpc0pTU3RyaW5nKEpT
VmFsdWUqIHYpIHsgcmV0dXJuICFKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodikgJiYgdi0+YXND
ZWxsKCktPnZwdHIoKSA9PSBtX2pzU3RyaW5nVnB0cjsgfQorICAgIGJvb2wgaXNKU0J5dGVBcnJh
eShKU1ZhbHVlKiB2KSB7IHJldHVybiAhSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHYpICYmIHYt
PmFzQ2VsbCgpLT52cHRyKCkgPT0gbV9qc0J5dGVBcnJheVZwdHI7IH0KIAogICAgIHByaXZhdGU6
CiAgICAgICAgIGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVy
biB9OwpAQCAtMzU5LDYgKzM2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
ckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBtX2pzQXJyYXlW
cHRyOworICAgICAgICB2b2lkKiBtX2pzQnl0ZUFycmF5VnB0cjsKICAgICAgICAgdm9pZCogbV9q
c1N0cmluZ1ZwdHI7CiAgICAgICAgIHZvaWQqIG1fanNGdW5jdGlvblZwdHI7CiAKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZUFycmF5LmNwcCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQnl0ZUFycmF5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NThiYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRl
QXJyYXkuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJCeXRlQXJy
YXkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1Bhc3NSZWZQdHI8Qnl0ZUFycmF5PiBCeXRlQXJy
YXk6OmNyZWF0ZShzaXplX3Qgc2l6ZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBu
ZXcgdW5zaWduZWQgY2hhcltzaXplICsgc2l6ZW9mKEJ5dGVBcnJheSldOworICAgIEFTU0VSVCgo
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGJ1ZmZlcikgJiAzKSA9PSAwKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IChidWZmZXIpIEJ5dGVBcnJheShzaXplKSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZUFycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0J5dGVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFh
OGJiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVBcnJh
eS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEJ5dGVBcnJheV9oCisjZGVmaW5lIEJ5dGVBcnJheV9oCisKKyNp
bmNsdWRlICJ3dGYvUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgInd0Zi9SZWZDb3VudGVkLmgiCisK
K25hbWVzcGFjZSBKU0MgeworICAgIGNsYXNzIEJ5dGVBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVk
PEJ5dGVBcnJheT4geworICAgIHB1YmxpYzoKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICAgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGluZGV4ID49IG1fc2l6
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoISh2YWx1ZSA+IDAp
KSAvLyBDbGFtcCBOYU4gdG8gMAorICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1KQorICAgICAgICAgICAgICAgIHZhbHVlID0gMjU1Owor
ICAgICAgICAgICAgbV9kYXRhW2luZGV4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZh
bHVlICsgMC41KTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgZ2V0KHVuc2lnbmVkIGluZGV4
LCB1bnNpZ25lZCBjaGFyJiByZXN1bHQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChpbmRleCA+PSBtX3NpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmVzdWx0ID0gbV9kYXRhW2luZGV4XTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fZGF0
YTsgfQorCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVf
dCBzaXplKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkK
KyAgICAgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAg
ICBzaXplX3QgbV9zaXplOworICAgICAgICB1bnNpZ25lZCBjaGFyIG1fZGF0YVswXTsKKyAgICB9
OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMxYzE0NgotLS0gL2Rldi9udWxsCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCkBAIC0wLDAgKzEsOTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0J5dGVBcnJheTo6c19kZWZhdWx0SW5mbyA9IHsgIkJ5
dGVBcnJheSIsIDAsIDAsIDAgfTsKKworSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9y
YWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgIDogSlNPYmplY3Qoc3Ry
dWN0dXJlKQorICAgICwgbV9zdG9yYWdlKHN0b3JhZ2UpCisgICAgLCBtX2NsYXNzSW5mbyhjbGFz
c0luZm8pCit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8
IERvbnREZWxldGUpOworfQorICAgIAorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IEpTQnl0ZUFycmF5
OjpjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSogcHJvdG90eXBlKQoreworICAgIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEpTQnl0ZUFycmF5
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBib29sIG9rOworICAgIHVu
c2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvaywgZmFsc2UpOworICAgIGlm
IChvayAmJiBjYW5BY2Nlc3NJbmRleChpbmRleCkpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZShn
ZXRJbmRleChpbmRleCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKyAgICAKK2Jvb2wgSlNCeXRlQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IGlmIChjYW5BY2Nlc3NJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIHNsb3Quc2V0VmFs
dWUoZ2V0SW5kZXgocHJvcGVydHlOYW1lKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHNsb3QpOworfQorCit2b2lkIEpTQnl0ZUFycmF5
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUqIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYm9vbCBvazsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2ssIGZhbHNlKTsKKyAg
ICBpZiAob2spIHsKKyAgICAgICAgc2V0SW5kZXgoZXhlYywgaW5kZXgsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBKU09iamVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworfQorCit2b2lkIEpTQnl0ZUFycmF5OjpwdXQoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIHNldEluZGV4
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOworfQorCit2b2lkIEpTQnl0ZUFycmF5OjpnZXRQ
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9zdG9yYWdlLT5sZW5ndGgoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOworICAgIEpTT2JqZWN0OjpnZXRQ
cm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpOworfQorCit9CisKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCeXRlQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
M2E3OWMyCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVB
cnJheS5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0J5dGVBcnJheV9oCisjZGVmaW5lIEpTQnl0ZUFycmF5
X2gKKworI2luY2x1ZGUgIkJ5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisgICAgY2xhc3MgSlNCeXRlQXJyYXkgOiBwdWJsaWMgSlNPYmplY3Qg
eworICAgICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXI7CisgICAgcHVibGljOgorICAgICAg
ICBib29sIGNhbkFjY2Vzc0luZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX3N0b3JhZ2Ut
Pmxlbmd0aCgpOyB9CisgICAgICAgIEpTVmFsdWUqIGdldEluZGV4KHVuc2lnbmVkIGkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NJbmRleChpKSk7CisgICAgICAgICAg
ICByZXR1cm4gSlNJbW1lZGlhdGU6OmZyb20obV9zdG9yYWdlLT5kYXRhKClbaV0pOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpLCBpbnQgdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NJbmRleChpKSk7CisgICAgICAgICAg
ICBpZiAodmFsdWUgJiB+MHhGRikgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApCisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gMjU1OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bV9zdG9yYWdlLT5kYXRhKClbaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaSwg
ZG91YmxlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY2FuQWNjZXNzSW5k
ZXgoaSkpOworICAgICAgICAgICAgaWYgKCEodmFsdWUgPiAwKSkgLy8gQ2xhbXAgTmFOIHRvIDAK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA+
IDI1NSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IDI1NTsKKyAgICAgICAgICAgIG1fc3RvcmFn
ZS0+ZGF0YSgpW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUgKyAwLjUpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldEluZGV4KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRv
dWJsZSBieXRlVmFsdWUgPSB2YWx1ZS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgaWYgKGNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgICAgIHNldEluZGV4KGksIGJ5
dGVWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4
ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgQnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6
OkNsYXNzSW5mbyogPSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUqIHByb3RvdHlwZSk7CisgICAgICAg
IAorICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5
TmFtZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jik7CisKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NJbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19kZWZhdWx0SW5m
bzsKKyAgICAgICAgCisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JhZ2UtPmxlbmd0aCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBlbnVtIFZQdHJTdGVh
bGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9OworICAgICAgICBKU0J5dGVBcnJheShW
UHRyU3RlYWxpbmdIYWNrVHlwZSkgCisgICAgICAgICAgICA6IEpTT2JqZWN0KGNyZWF0ZVN0cnVj
dHVyZShqc051bGwoKSkpCisgICAgICAgICAgICAsIG1fY2xhc3NJbmZvKDApCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxCeXRlQXJyYXk+IG1fc3RvcmFnZTsKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKKyAgICB9OworICAgIAorICAgIEpTQnl0
ZUFycmF5KiBhc0J5dGVBcnJheShKU1ZhbHVlKiB2YWx1ZSk7CisgICAgaW5saW5lIEpTQnl0ZUFy
cmF5KiBhc0J5dGVBcnJheShKU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU0J5dGVBcnJheSo+KGFzQ2VsbCh2YWx1ZSkpOworICAgIH0KK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc0Mjc1MmMuLjg4ZGMxOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMDktMDEtMDUgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYW52YXNQaXhlbEFycmF5IHBlcmZvcm1hbmNlIGlzIHRvbyBzbG93
IAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTIz
PgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViQ29yZSBDYW52YXNQaXhlbEFycmF5IGltcGxlbWVu
dGF0aW9uIGFuZCByZXBsYWNlCisgICAgICAgIENQQSB1c2FnZSB3aXRoIEpTQzo6Qnl0ZUFycmF5
LiAgUmVwbGFjZSB0aGUgSlNDYW52YXNQaXhlbEFycmF5CisgICAgICAgIHdyYXBwZXIgd2l0aCBh
biBleHBsaWNpdGx5IGluc3RhbnRpYXRlZCBKU0J5dGVBcnJheSBwdXQgb24gdGhlCisgICAgICAg
IEpTSW1hZ2VEYXRhIG9iamVjdCBhcyBhbiBvcmRpbmFyeSBSZWFkT25seSwgRG9udERlbGV0ZSBw
cm9wZXJ0eS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5z
Y29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogaHRtbC9DYW52YXNQaXhlbEFycmF5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dG1sL0NhbnZhc1BpeGVsQXJyYXkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0NhbnZhc1Bp
eGVsQXJyYXkuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVtcHR5SW1hZ2VEYXRhKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OkltYWdlRGF0YSk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGF0YTo6ZGF0YSk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuaWRsOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhKToKKwogMjAwOS0wMS0wNSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCAwZjA1YWIzLi42YWI3NGMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02NSw3ICs2NSw2
IEBAIERPTV9DTEFTU0VTID0gXAogICAgIENTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uIFwKICAgICBD
YW52YXNHcmFkaWVudCBcCiAgICAgQ2FudmFzUGF0dGVybiBcCi0gICAgQ2FudmFzUGl4ZWxBcnJh
eSBcCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIFwKICAgICBDaGFyYWN0ZXJEYXRhIFwK
ICAgICBDbGlwYm9hcmQgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYmJkMTAwYy4uYzM5YzZjNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NDMsNyArMTQzLDYgQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2Nh
dGlvbi5pZGwgXAogCVdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwgXAogCVdlYkNvcmUv
aHRtbC9DYW52YXNQYXR0ZXJuLmlkbCBcCi0JV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXku
aWRsIFwKIAlXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAJV2Vi
Q29yZS9odG1sL0ZpbGUuaWRsIFwKIAlXZWJDb3JlL2h0bWwvRmlsZUxpc3QuaWRsIFwKQEAgLTI0
Niw3ICsyNDUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1ZhbHVlQ3VzdG9tLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJy
YXlDdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20u
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAgXApAQCAtNzkw
LDggKzc4OCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc0dy
YWRpZW50LmggXAogCVdlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcCBcCiAJV2ViQ29yZS9o
dG1sL0NhbnZhc1BhdHRlcm4uaCBcCi0JV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3Bw
IFwKLQlXZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5oIFwKIAlXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIFwKIAlXZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDQ3ZGM5
MTYuLmRjMTdkMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMzA4LDcgKzMwOCw2IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAg
ZG9tL1dvcmtlckxvY2F0aW9uLmlkbCBcCiAgICAgaHRtbC9DYW52YXNHcmFkaWVudC5pZGwgXAog
ICAgIGh0bWwvQ2FudmFzUGF0dGVybi5pZGwgXAotICAgIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5p
ZGwgXAogICAgIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAgaHRtbC9G
aWxlLmlkbCBcCiAgICAgaHRtbC9GaWxlTGlzdC5pZGwgXApAQCAtNjcyLDcgKzY3MSw2IEBAIFNP
VVJDRVMgKz0gXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAgICAgaHRtbC9DYW52YXNH
cmFkaWVudC5jcHAgXAogICAgIGh0bWwvQ2FudmFzUGF0dGVybi5jcHAgXAotICAgIGh0bWwvQ2Fu
dmFzUGl4ZWxBcnJheS5jcHAgXAogICAgIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cCBcCiAgICAgaHRtbC9DYW52YXNTdHlsZS5jcHAgXAogICAgIGh0bWwvRmlsZS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNjb25zCmlu
ZGV4IGE4OGFiOGMuLjA1OTMwNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5zY29ucwor
KysgYi9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAgLTE5OSw3ICsxOTksNiBAQCBzb3VyY2VzWydo
aXN0b3J5J10gPSBbCiBzb3VyY2VzWydodG1sJ10gPSBbCiAgICAgJ2h0bWwvQ2FudmFzR3JhZGll
bnQuY3BwJywKICAgICAnaHRtbC9DYW52YXNQYXR0ZXJuLmNwcCcsCi0gICAgJ2h0bWwvQ2FudmFz
UGl4ZWxBcnJheS5jcHAnLAogICAgICdodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAn
LAogICAgICdodG1sL0NhbnZhc1N0eWxlLmNwcCcsCiAgICAgJ2h0bWwvRmlsZS5jcHAnLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmZjNmI4Mi4uZmQ2MTBjZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MzIsMTAgKzUzMiw2IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDYW52YXNQaXhl
bEFycmF5LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
MTI0OTQsMjIgKzEyNDkwLDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxDYW52YXNQaXhlbEFycmF5LmNwcCINCi0JCQkJPg0KLQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KLQkJ
CQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
CVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxDYW52YXNQaXhlbEFycmF5LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTM5NTcsMTAgKzEzOTM3
LDYgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oIg0KLQkJCQkJPg0K
LQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzVjMTUzMi4uNWI5ZmUzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE3NzksNyArMTc3OSw2IEBACiAJCTkzMDdGMUQ3MEFGMkQ1OTAwMERCQTMxQSAv
KiBIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMDdGMUQ1MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmNwcCAq
LzsgfTsKIAkJOTMwN0YxRDgwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDdGMUQ2MEFGMkQ1
OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwOTA4OTEwQUY3RURFNDAwODFERjAxIC8qIEhpdFRl
c3RSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzA5MDg5MDBBRjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLzsgfTsKLQkJ
OTMwQjNCRTIwRTg4NDkyMTAwOTc3MEM1IC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwQjNCRTEwRTg4
NDkyMTAwOTc3MEM1IC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oICovOyB9OwogCQk5MzI2
REMwQzA5REFENUQ2MDBBRkM4NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3IC8q
IENoYXJzZXREYXRhLmNwcCAqLzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8qIEhU
TUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTMyODcxQzAwQjIwREVCNzAwNDkwMzVBIC8qIFBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjAzNiwxMiArMjAzNSw4IEBACiAJCUE3NUU4QjhEMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBv
bmVudFRyYW5zZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzVFOEI4NTBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oICov
OyB9OwogCQlBNzVFOEI4RTBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODYwRTFERTJE
NjAwN0YyNDgxIC8qIEZFQ29tcG9zaXRlLmNwcCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAw
N0YyNDgxIC8qIEZFQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzVFOEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAq
LzsgfTsKLQkJQTc3OTc5MTYwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTAw
RDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovOyB9OwotCQlBNzc5Nzkx
NzBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTEwRDZCOUQwQzAwMzg1MUI5IC8q
IENhbnZhc1BpeGVsQXJyYXkuaCAqLzsgfTsKIAkJQTc3OTc5MTkwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCAqLzsgfTsKIAkJ
QTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5oICovOyB9OwotCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52
YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Nzk3OTIyMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3Bw
ICovOyB9OwotCQlBNzc5NzkyNzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5Nzky
MzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmggKi87IH07CiAJCUE3Nzk3
OTI4MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNDBENkI5RTY0MDAzODUxQjkgLyog
SlNJbWFnZURhdGEuY3BwICovOyB9OwogCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJ
bWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9OwogCQlBNzg0
OTQxQjBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBD
bGlwYm9hcmQuY3BwICovOyB9OwpAQCAtNjYxNSw3ICs2NjEwLDYgQEAKIAkJOTMwN0YxRDUwQUYy
RDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzA3RjFENjBBRjJENTkwMDBEQkEzMUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzA5MDg5MDBBRjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpdFRlc3RSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzMEIzQkUxMEU4ODQ5MjEwMDk3NzBD
NSAvKiBKU0NhbnZhc1BpeGVsQXJyYXlDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMENBQUQ2MDlDNDk1QjYwMDIyOUMwNCAvKiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMENBQjg4MDlDNDlFRkEwMDIy
OUMwNCAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFz
R3JhZGllbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBDQUI4RjA5QzQ5
RjFCMDAyMjlDMDQgLyogQ2FudmFzUGF0dGVybi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q2FudmFzUGF0dGVybi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODUzLDE0
ICs2ODQ3LDkgQEAKIAkJQTc1RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9uZW50VHJh
bnNmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRkVDb21wb25lbnRUcmFu
c2Zlci5oOyBwYXRoID0gZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU4Qjg2MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvc2l0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUNvbXBvc2l0ZS5j
cHA7IHBhdGggPSBmaWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc1RThCODcwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9zaXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZFQ29tcG9zaXRlLmg7IHBhdGggPSBmaWx0ZXJz
L0ZFQ29tcG9zaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3Nzk3OTEwMEQ2
QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc1BpeGVsQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBNzc5NzkxMTBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3Nzk3OTEyMEQ2QjlEMEMwMDM4NTFCOSAv
KiBDYW52YXNQaXhlbEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNQaXhl
bEFycmF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3OTc5MTMwRDZCOUQw
QzAwMzg1MUI5IC8qIEltYWdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbWFnZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzc5
NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
Nzc5NzkxNTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBJbWFnZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzc5
NzkyMjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0Nh
bnZhc1BpeGVsQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52
YXNQaXhlbEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk3OTI0MEQ2
QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzMzEsOSArMTEzMjAsNiBAQAogCQkJCTkzRUVDMjZF
MDlDMzIxODAwMEM1MTVEMSAvKiBDYW52YXNQYXR0ZXJuLmNwcCAqLywKIAkJCQk5M0VFQzFGMjA5
QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzUGF0dGVybi5oICovLAogCQkJCTkzMENBQjhGMDlDNDlG
MUIwMDIyOUMwNCAvKiBDYW52YXNQYXR0ZXJuLmlkbCAqLywKLQkJCQlBNzc5NzkxMDBENkI5RDBD
MDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgKi8sCi0JCQkJQTc3OTc5MTEwRDZCOUQw
QzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuaCAqLywKLQkJCQlBNzc5NzkxMjBENkI5RDBD
MDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5pZGwgKi8sCiAJCQkJOTNFRUMxRUQwOUMyODc3
NzAwQzUxNUQxIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCiAJCQkJOTNFRUMx
RUUwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJ
CTkzMENBQUQ2MDlDNDk1QjYwMDIyOUMwNCAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRs
ICovLApAQCAtMTE2MTUsOCArMTE2MDEsNiBAQAogCQkJCTY1REYzMjM0MDlEMURFNjUwMDBCRTMy
NSAvKiBKU0NhbnZhc0dyYWRpZW50LmggKi8sCiAJCQkJNjVERjMyMzUwOUQxREU2NTAwMEJFMzI1
IC8qIEpTQ2FudmFzUGF0dGVybi5jcHAgKi8sCiAJCQkJNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1
IC8qIEpTQ2FudmFzUGF0dGVybi5oICovLAotCQkJCUE3Nzk3OTIyMEQ2QjlFNjQwMDM4NTFCOSAv
KiBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwICovLAotCQkJCUE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFC
OSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuaCAqLywKIAkJCQk2NURGMzIzNzA5RDFERTY1MDAwQkUz
MjUgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICovLAogCQkJCTY1REYzMjM4MDlE
MURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCUJD
MDBGMDEwMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGUuY3BwICovLApAQCAtMTMyMzEsNyArMTMy
MTUsNiBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20u
Y3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBKU0NT
U1ZhbHVlQ3VzdG9tLmNwcCAqLywKLQkJCQk5MzBCM0JFMTBFODg0OTIxMDA5NzcwQzUgLyogSlND
YW52YXNQaXhlbEFycmF5Q3VzdG9tLmggKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYz
IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0E4M0U1
MTBEN0NFMjA1MDAzNDIxQTggLyogSlNDbGlwYm9hcmRDdXN0b20uY3BwICovLAogCQkJCUMwREZD
ODZGMERCNjg0MUEwMDNFQUU3QyAvKiBKU0NvbnNvbGVDdXN0b20uY3BwICovLApAQCAtMTQ0NDks
NyArMTQ0MzIsNiBAQAogCQkJCUJDQjE2QzI4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xT
dHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0VFQzIwMzA5QzI4Nzc3MDBDNTE1RDEg
LyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUVDMjA0MDlDMjg3Nzcw
MEM1MTVEMSAvKiBDYW52YXNQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzc5NzkxNzBE
NkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNFRUMyMDAwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNFRUMyMDEwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1N0eWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTkyRDBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBw
b3J0LmggaW4gSGVhZGVycyAqLywKQEAgLTE1NDg3LDggKzE1NDY5LDYgQEAKIAkJCQlCQzY4NkM3
RjBFMEMzMzAxMDBERThBMDggLyogSlNDU1NWYXJpYWJsZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NURGMzIzQTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVERjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTc3OTc5MjcwRDZCOUU2NDAwMzg1MUI5IC8qIEpTQ2Fu
dmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTMwQjNCRTIwRTg4NDkyMTAwOTc3
MEM1IC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVE
RjMyM0UwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NURGMzFGNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0ZXJE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4M0U1MDBEN0NFMUU5MDAzNDIxQTggLyogSlND
bGlwYm9hcmQuaCBpbiBIZWFkZXJzICovLApAQCAtMTY4ODIsNyArMTY4NjIsNiBAQAogCQkJCUJD
QjE2QzI3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRUVDMjAyMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzI2RjA5QzMyMTgwMDBDNTE1RDEgLyogQ2FudmFz
UGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzc5NzkxNjBENkI5RDBDMDAzODUxQjkg
LyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzFGRjA5QzI4
Nzc3MDBDNTE1RDEgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRUVDMjcxMDlDMzIxODgwMEM1MTVEMSAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjU1OTkyQzBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTc0NDUsNyArMTc0MjQsNiBAQAogCQkJCUJDNjg2QzdFMEUwQzMz
MDEwMERFOEEwOCAvKiBKU0NTU1ZhcmlhYmxlc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVERjMyMzkwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52
YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMjNEMDlEMURFNjUwMDBC
RTMyNSAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTlFRjQ1NzBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRjMwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTQ2hhcmFjdGVyRGF0YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwNTI3MjdiLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNQ
aXhlbEFycmF5Q3VzdG9tLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiSlNDYW52YXNQaXhlbEFycmF5LmgiCi0KLSNpbmNsdWRlICJDYW52YXNQaXhl
bEFycmF5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLSAgICBpbmxpbmUgSlNWYWx1ZSogSlNDYW52YXNQaXhlbEFycmF5OjpnZXRCeUluZGV4
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgY2hh
ciByZXN1bHQ7Ci0gICAgICAgIGlmICghaW1wbCgpLT5nZXQoaW5kZXgsIHJlc3VsdCkpCi0gICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRl
Ojpmcm9tKHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSB2b2lkIEpTQ2FudmFzUGl4
ZWxBcnJheTo6aW5kZXhTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBkb3VibGUgcGl4ZWxWYWx1ZSA9IHZhbHVlLT50
b051bWJlcihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX2ltcGwtPnNldChpbmRleCwgcGl4ZWxWYWx1ZSk7IAot
ICAgIH0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggNTBmMjM3YS4uNWZhNjljYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5j
bHVkZSAiSlNJbWFnZURhdGEuaCIKIAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0J5dGVBcnJh
eS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArNDYsMTAgQEAgSlNWYWx1ZSogdG9K
UyhFeGVjU3RhdGUqIGV4ZWMsIEltYWdlRGF0YSogaW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKICAgICAKICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihl
eGVjLCBJbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0gICAgCisgICAgSWRlbnRpZmllciBkYXRhTmFt
ZShleGVjLCAiZGF0YSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFN0cnVjdHVy
ZT4sIGNwYVN0cnVjdHVyZSwgKEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
KSk7CisgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBjcGFDbGFzc0luZm8gPSB7ICJDYW52YXNQ
aXhlbEFycmF5IiwgMCwgMCwgMCB9OworICAgIHdyYXBwZXItPnB1dERpcmVjdChkYXRhTmFtZSwg
bmV3IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0
YSgpLCAmY3BhQ2xhc3NJbmZvKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5o
ZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkp
OwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Nh
bnZhc1BpeGVsQXJyYXkuY3BwIGIvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmJjMjdiLi4wMDAwMDAwCi0tLSBhL1dlYkNv
cmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBDYW52
YXNQaXhlbEFycmF5OjpjcmVhdGUodW5zaWduZWQgc2l6ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENhbnZhc1BpeGVsQXJyYXkoc2l6ZSkpOwotfQotCi1DYW52YXNQaXhlbEFycmF5OjpD
YW52YXNQaXhlbEFycmF5KHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX2RhdGEoc2l6ZSkKLXsKLSAg
ICBBU1NFUlQoKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihtX2RhdGEuZGF0YSgpKSAmIDMpID09
IDApOwotfQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5o
IGIvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTU2MDUzOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxB
cnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDYW52YXNQaXhl
bEFycmF5X2gKLSNkZWZpbmUgQ2FudmFzUGl4ZWxBcnJheV9oCi0KLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICAKLSAgICBjbGFzcyBDYW52YXNQaXhlbEFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FudmFzUGl4ZWxBcnJheT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2FudmFzUGl4ZWxBcnJheT4gY3JlYXRlKHVuc2lnbmVkIHNpemUpOwotCi0gICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQotICAgICAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9Ci0KLSAgICAg
ICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKGluZGV4ID49IG1fZGF0YS5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgaWYgKCEodmFsdWUgPiAwKSkgLy8gQ2xhbXAgTmFOIHRvIDAKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA+IDI1
NSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IDI1NTsKLSAgICAgICAgICAgIG1fZGF0YVtpbmRl
eF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSArIDAuNSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGdldCh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgY2hhciYgcmVzdWx0
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9kYXRhLnNpemUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXN1bHQgPSBt
X2RhdGFbaW5kZXhdOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIENhbnZhc1BpeGVsQXJyYXkodW5zaWduZWQgc2l6ZSk7Ci0gICAg
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7Ci0gICAgfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENhbnZhc1BpeGVsQXJyYXlfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuaWRsIGIvV2ViQ29yZS9odG1sL0NhbnZh
c1BpeGVsQXJyYXkuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGRjZWNiLi4w
MDAwMDAwCi0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBodG1sIHsKLQotICAgIGludGVyZmFjZSBbCi0g
ICAgICAgIEN1c3RvbUhlYWRlciwKLSAgICAgICAgSGFzQ3VzdG9tSW5kZXhHZXR0ZXIsCi0gICAg
ICAgIEhhc0N1c3RvbUluZGV4U2V0dGVyCi0gICAgXSBDYW52YXNQaXhlbEFycmF5IHsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOwotICAgIH07Ci0KLX0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9o
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOTI0NjA4Mi4uZGUyZGRhYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJy
YXkuaCIKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCkBAIC01OCw2ICs1Nyw4IEBACiAj
aW5jbHVkZSAiU3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIK
ICNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
QEAgLTExNzIsNyArMTE3Myw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURh
dGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUGFz
c1JlZlB0cjxJbWFnZURhdGE+IGRhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOwotICAgIG1lbXNldChkYXRhLT5kYXRhKCktPmRhdGEoKS5kYXRhKCks
IDAsIGRhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOworICAgIG1lbXNldChkYXRhLT5kYXRhKCktPmRh
dGEoKSwgMCwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5jcHAKaW5kZXggMzY1MzAzMS4uMjBiZjkxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTI5
LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIK
IAotI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CeXRlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw3ICs0MSw3IEBA
IFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQogSW1hZ2VEYXRhOjpJbWFnZURhdGEodW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCkKICAgICA6IG1fd2lkdGgod2lkdGgpCiAgICAgLCBtX2hlaWdodChoZWln
aHQpCi0gICAgLCBtX2RhdGEoQ2FudmFzUGl4ZWxBcnJheTo6Y3JlYXRlKHdpZHRoICogaGVpZ2h0
ICogNCkpCisgICAgLCBtX2RhdGEoSlNDOjpCeXRlQXJyYXk6OmNyZWF0ZSh3aWR0aCAqIGhlaWdo
dCAqIDQpKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggMjFhZjFmOS4uNjI1Yzc4YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aApAQCAtMjksOCArMjksOSBAQAogI2lmbmRlZiBJbWFnZURhdGFfaAogI2RlZmluZSBJbWFnZURh
dGFfaAogCi0jaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICs0MSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdW5zaWduZWQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgICAgIENhbnZhc1BpeGVsQXJyYXkqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICAgICAgSlNDOjpCeXRlQXJyYXkqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEltYWdlRGF0YSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKICAgICAgICAgdW5z
aWduZWQgbV93aWR0aDsKICAgICAgICAgdW5zaWduZWQgbV9oZWlnaHQ7Ci0gICAgICAgIFJlZlB0
cjxDYW52YXNQaXhlbEFycmF5PiBtX2RhdGE7CisgICAgICAgIFJlZlB0cjxKU0M6OkJ5dGVBcnJh
eT4gbV9kYXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwK
aW5kZXggMjQ2NjMyZi4uNjljOTJhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKQEAgLTM0LDcgKzM0LDYgQEAg
bW9kdWxlIGh0bWwgewogICAgIF0gSW1hZ2VEYXRhIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgd2lkdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGhlaWdodDsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhbnZhc1BpeGVsQXJyYXkgZGF0YTsKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAppbmRleCA1MDIzMTNiLi43MmU3NGViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBJbWFnZSogSW1hZ2VC
dWZmZXI6OmltYWdlKCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgUGFzc1JlZlB0
cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3VsdC0+ZGF0YSgpLT5k
YXRhKCkuZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKS0+
ZGF0YSgpOwogCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAgfHwgKHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpKSA+IG1fc2l6ZS53aWR0aCgpIHx8IChyZWN0LnkoKSArIHJlY3Qu
aGVpZ2h0KCkpID4gbV9zaXplLmhlaWdodCgpKQogICAgICAgICBtZW1zZXQoZGF0YSwgMCwgcmVz
dWx0LT5kYXRhKCktPmxlbmd0aCgpKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEltYWdlQnVm
ZmVyOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiBzb3VyY2UsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbgogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZS0+d2lk
dGgoKTsKICAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogbV9zaXplLndpZHRoKCk7
CiAKLSAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCktPmRhdGEoKS5k
YXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKKyAgICB1bnNp
Z25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCktPmRhdGEoKSArIG9yaWdpbnkgKiBz
cmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dz
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRhLm1fZGF0YSkgKyBkZXN0
eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG51bVJvd3M7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7
IHgrKykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26445</attachid>
            <date>2009-01-05 15:40:56 -0800</date>
            <delta_ts>2009-01-05 15:53:34 -0800</delta_ts>
            <desc>Fixed issues pointed out by mark</desc>
            <filename>bytearray.patch</filename>
            <type>text/plain</type>
            <size>61051</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA5YTQyMGQ4Li42MDVlNjFmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMDktMDEtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXNQaXhlbEFycmF5
IHBlcmZvcm1hbmNlIGlzIHRvbyBzbG93IAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTIzPgorCisgICAgICAgIFRoZSBmaXggdG8gdGhpcyBpcyB0
byBkZXZpcnR1YWxpc2UgZ2V0IGFuZCBwdXQgaW4gYSBtYW5uZXIgc2ltaWxhciB0bworICAgICAg
ICBKU1N0cmluZyBhbmQgSlNBcnJheS4gIFRvIGRvIHRoaXMgSSd2ZSBhZGRlZCBhIEJ5dGVBcnJh
eSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBhbmQgSlNCeXRlQXJyYXkgd3JhcHBlciB0byBKU0Mu
ICBXZSBjYW4gdGhlbiBkbyB2cHRyIGNvbXBhcmlzb25zIHRvCisgICAgICAgIGRldmlydHVhbGlz
ZSB0aGUgY2FsbHMuCisKKyAgICAgICAgVGhpcyBkZXZpcnR1YWxpc2F0aW9uIGltcHJvdmVzIHBl
cmZvcm1hbmNlIGJ5IDEuNS0yeCBpbiBteSBzb21ld2hhdCBhZAorICAgICAgICBob2MgdGVzdHMu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5l
eHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnNjb25zOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpJbnRlcnByZXRlcik6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpjdGlfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjdGlf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzSlNCeXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvQnl0ZUFycmF5LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVBcnJheTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0J5dGVBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZUFycmF5OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlQXJyYXk6OnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVBcnJheTo6Z2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZUFycmF5OjpkYXRh
KToKKyAgICAgICAgKEpTQzo6Qnl0ZUFycmF5OjpCeXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCeXRlQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNCeXRlQXJyYXk6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjYW5BY2Nlc3NJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRJbmRleCk6CisgICAgICAgIChK
U0M6OkpTQnl0ZUFycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5Ojpj
bGFzc0luZm8pOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6bGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNCeXRlQXJyYXk6Oik6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVB
cnJheSk6CisgICAgICAgIChKU0M6OmFzQnl0ZUFycmF5KToKKwogMjAwOS0wMS0wNSAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZiNDlmOGEuLjBlZGM2MGIgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0yODksNiArMjg5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggXAogCUphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgXAogCUphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5
dGVBcnJheS5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZUFycmF5LmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXApA
QCAtMzMxLDYgKzMzMyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIFwKKwlKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAg
XAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGRh
NDI3ZmMuLmNiZjAzNzggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTk5LDYgKzk5
LDggQEAgX19aTjNKU0MxMEpTRnVuY3Rpb240aW5mb0UKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBO
U185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4
ZWNTdGF0ZUVOU185RXJyb3JUeXBlRVBLYwogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfOUVycm9yVHlwZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5
MTVjcmVhdGVTdHJ1Y3R1cmVFUE5TXzdKU1ZhbHVlRQorX19aTjNKU0MxMUpTQnl0ZUFycmF5QzFF
UE5TXzlFeGVjU3RhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVBOU185Qnl0
ZUFycmF5RVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTEybm9uSW5saW5l
TmFORXYKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTh0b09iamVjdEVQTlNfN0pTVmFsdWVFUE5TXzlF
eGVjU3RhdGVFCiBfX1pOM0pTQzExSlNJbW1lZGlhdGU4dG9TdHJpbmdFUE5TXzdKU1ZhbHVlRQpA
QCAtMjQ2LDYgKzI0OCw3IEBAIF9fWk4zSlNDOFByb2ZpbGVyMTRzdGFydFByb2ZpbGluZ0VQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXI4cHJvZmlsZXJFdgog
X19aTjNKU0M4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUk5TXzEwU2NvcGVDaGFpbkVSS05TXzEw
U291cmNlQ29kZUVQTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzhqc1N0cmluZ0VQTlNfMTJKU0dsb2Jh
bERhdGFFUktOU183VVN0cmluZ0UKK19fWk4zSlNDOUJ5dGVBcnJheTZjcmVhdGVFbQogX19aTjNK
U0M5Q29kZUJsb2NrRDFFdgogX19aTjNKU0M5Q29kZUJsb2NrRDJFdgogX19aTjNKU0M5U3RydWN0
dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5wcmkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKaW5kZXgg
ZGVkMWQ3MC4uMzc5YTE0MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQpAQCAtMTA1LDYg
KzEwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNw
cCBcCiAgICAgcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9CeXRlQXJyYXkuY3BwIFwKICAgICBydW50aW1l
L0NhbGxEYXRhLmNwcCBcCiAgICAgcnVudGltZS9Db2xsZWN0b3IuY3BwIFwKICAgICBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcCBcCkBAIC0xMjksNiArMTMwLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9Db21wbGV0
aW9uLmNwcCBcCiAgICAgcnVudGltZS9KU0FycmF5LmNwcCBcCisgICAgcnVudGltZS9KU0J5dGVB
cnJheS5jcHAgXAogICAgIHJ1bnRpbWUvSlNDZWxsLmNwcCBcCiAgICAgcnVudGltZS9KU0Z1bmN0
aW9uLmNwcCBcCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuc2NvbnMgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwppbmRleCAzN2I5ZDg5Li4yMDZhM2U0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucworKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwpAQCAtNDksNiArNDksNyBAQCBzb3VyY2VzWydydW50
aW1lJ10gPSBbCiAgICAgJ3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgJ3J1
bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAnLAogICAgICdydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
Y3BwJywKKyAgICAncnVudGltZS9CeXRlQXJyYXkuY3BwJywKICAgICAncnVudGltZS9DYWxsRGF0
YS5jcHAnLAogICAgICdydW50aW1lL0NvbGxlY3Rvci5jcHAnLAogICAgICdydW50aW1lL0NvbXBs
ZXRpb24uY3BwJywKQEAgLTcyLDYgKzczLDcgQEAgc291cmNlc1sncnVudGltZSddID0gWwogICAg
ICdydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwJywKICAgICAncnVudGltZS9KU0FjdGl2YXRp
b24uY3BwJywKICAgICAncnVudGltZS9KU0FycmF5LmNwcCcsCisgICAgJ3J1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwJywKICAgICAncnVudGltZS9KU0NlbGwuY3BwJywKICAgICAncnVudGltZS9KU0Z1
bmN0aW9uLmNwcCcsCiAgICAgJ3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBiZDg3ZGFhLi4yMzM2
ODI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
QEAgLTMyNSw2ICszMjUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxCeXRlQXJyYXkuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxCeXRl
QXJyYXkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcQ2FsbERhdGEuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAg
LTUyNSw2ICs1MzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU0J5dGVBcnJheS5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEpTQnl0
ZUFycmF5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXEpTQ2VsbC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGNmZGFmYy4uNzE3YWVhOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTgs
NiArMTU4LDEwIEBACiAJCUE3MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cCAqLzsgfTsKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4
REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4MkYxQTUwRUVDOUZBMjAw
MzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzgyRjFBNDBFRUM5RkEyMDAzNjI3M0YgLyog
RXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKKwkJQTc5MUVFNUIwRjExRDkwQzAw
QUUxRjY4IC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3OTFFRTVDMEYx
MUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVFNUEwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5jcHAgKi87IH07CisJCUE3OTFFRjI4MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVGMjYw
RjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpT
Qnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OTFFRjI3MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi87IH07CiAJ
CUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI2MEVFNzRD
RkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQkMwMkU5MEQw
RTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBF
cnJvckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUJDMDJFOTBGMEUxODM5REIwMDBGOTI5NyAvKiBF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggKi87IH07
CkBAIC02NDUsNiArNjQ5LDEwIEBACiAJCUE3MjdGRjY1MERBMzA1M0IwMEU1NDhENyAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
N0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODJGMUE0MEVFQzlGQTIwMDM2Mjcz
RiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVFNUEwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlQXJyYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzkxRUYyNjBGMTFFMDc5MDBBRTFGNjgg
LyogSlNCeXRlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRl
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MUVGMjcwRjExRTA3OTAw
QUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQnl0ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdC
NDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdFNDJD
MTgwRTM5Mzg4MzAwNjVBNTQ0IC8qIEpTU3RhdGljU2NvcGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdGF0aWNTY29wZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTMzNyw2ICsxMzQ1LDEwIEBACiAJCQkJNjUwN0QyOTcwRTg3MUU0
QTAwRDdEODk2IC8qIFR5cGVJbmZvLmggKi8sCiAJCQkJRjY5MkE4ODUwMjU1NTk3RDAxRkY2MEY3
IC8qIFVTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3Ry
aW5nLmggKi8sCisJCQkJQTc5MUVFNTkwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJheS5oICov
LAorCQkJCUE3OTFFRTVBMEYxMUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJyYXkuY3BwICovLAorCQkJ
CUE3OTFFRjI2MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5oICovLAorCQkJCUE3OTFF
RjI3MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY3NSw2ICsxNjg3
LDggQEAKIAkJCQlCQzE4QzQ0RDBFMTZGNUNEMDBCMzQ0NjAgLyogcGNyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NEUwRTE2RjVDRDAwQjM0NDYwIC8qIHBjcmVfaW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDcyMEUxNkY1Q0QwMEIzNDQ2MCAvKiB1Y3BpbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTc5MUVFNUIwRjExRDkwQzAwQUUxRjY4IC8qIEJ5dGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc5MUVGMjgwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0
ZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMjMsNiArMjAzNyw4IEBACiAJCQkJOTM3MDEz
NDgwQ0E5N0UwRTAwRkExNEQzIC8qIHBjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzRTI2QkQ0MDhCMTUxNDEwMEY4NTIyNiAvKiBwY3JlX3hjbGFzcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1RDZBNTY2QjBGMDU5OTU1MDAyNjYxNDUgLyogVGhyZWFkaW5nLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3OTFFRTVDMEYxMUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpT
Qnl0ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM2ODNmYjEuLmIyNTI3NzIgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJHbG9iYWxFdmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKQEAgLTYwNyw2ICs2MDgsMTAgQEAgSW50ZXJwcmV0ZXI6OkludGVy
cHJldGVyKCkKICAgICBtX2pzQXJyYXlWcHRyID0ganNBcnJheS0+dnB0cigpOwogICAgIGpzQXJy
YXktPn5KU0NlbGwoKTsKIAorICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IG5ldyAoc3Rv
cmFnZSkgSlNCeXRlQXJyYXkoSlNCeXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOworICAgIG1f
anNCeXRlQXJyYXlWcHRyID0ganNCeXRlQXJyYXktPnZwdHIoKTsKKyAgICBqc0J5dGVBcnJheS0+
fkpTQ2VsbCgpOworCiAgICAgSlNDZWxsKiBqc1N0cmluZyA9IG5ldyAoc3RvcmFnZSkgSlNTdHJp
bmcoSlNTdHJpbmc6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIG1fanNTdHJpbmdWcHRyID0ganNT
dHJpbmctPnZwdHIoKTsKICAgICBqc1N0cmluZy0+fkpTQ2VsbCgpOwpAQCAtMjg1Myw2ICsyODU4
LDggQEAgSlNWYWx1ZSogSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcg
ZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckYKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0ganNBcnJheS0+SlNBcnJheTo6Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleCgmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGkpOworICAgICAgICAgICAgZWxz
ZSBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmdldEluZGV4KGkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGJhc2VWYWx1ZS0+Z2V0KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0yODkzLDYgKzI5MDAsMTYgQEAgSlNWYWx1ZSogSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckYKICAgICAg
ICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoaSwgY2FsbEZyYW1lW3ZhbHVlXS5qc1Zh
bHVlKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAganNBcnJheS0+SlNBcnJheTo6cHV0KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1lW3ZhbHVlXS5q
c1ZhbHVlKGNhbGxGcmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTQnl0ZUFycmF5
KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
IHsKKyAgICAgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkVmFsdWUgPSAwOworICAgICAg
ICAgICAgICAgIEpTVmFsdWUqIGpzVmFsdWUgPSBjYWxsRnJhbWVbdmFsdWVdLmpzVmFsdWUoY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmlzTnVtYmVyKGpzVmFs
dWUpKQorICAgICAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgSlNJbW1l
ZGlhdGU6OmdldFRydW5jYXRlZEludDMyKGpzVmFsdWUpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChmYXN0SXNOdW1iZXIoanNWYWx1ZSwgZFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg
anNCeXRlQXJyYXktPnNldEluZGV4KGksIGRWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUtPnB1dChjYWxsRnJhbWUsIGksIGpzVmFsdWUp
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLT5wdXQoY2Fs
bEZyYW1lLCBpLCBjYWxsRnJhbWVbdmFsdWVdLmpzVmFsdWUoY2FsbEZyYW1lKSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC01MDk0LDcgKzUxMTEsOSBAQCBKU1ZhbHVlKiBJbnRlcnByZXRlcjo6Y3Rp
X29wX2dldF9ieV92YWwoU1RVQl9BUkdTKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGpzQXJyYXktPkpTQXJyYXk6OmdldChjYWxsRnJhbWUsIGkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGludGVycHJldGVyLT5pc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCi0gICAgICAgICAgICByZXN1bHQgPSBhc1N0
cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChBUkdfZ2xvYmFsRGF0YSwgaSk7CisgICAgICAgICAg
ICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoQVJHX2dsb2JhbERhdGEsIGkp
OworICAgICAgICBlbHNlIGlmIChpbnRlcnByZXRlci0+aXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
ICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAg
ICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICByZXN1bHQgPSBiYXNlVmFsdWUtPmdldChjYWxsRnJhbWUsIGkpOwog
ICAgIH0gZWxzZSB7CkBAIC01MTg3LDYgKzUyMDYsMTcgQEAgdm9pZCBJbnRlcnByZXRlcjo6Y3Rp
X29wX3B1dF9ieV92YWwoU1RVQl9BUkdTKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldElu
ZGV4KGksIHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBqc0FycmF5
LT5KU0FycmF5OjpwdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
aW50ZXJwcmV0ZXItPmlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpz
Qnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGRvdWJsZSBk
VmFsdWUgPSAwOworICAgICAgICAgICAgaWYgKEpTSW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSkp
IHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgSlNJbW1lZGlhdGU6
OmdldFRydW5jYXRlZEludDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChmYXN0SXNOdW1iZXIodmFsdWUsIGRWYWx1ZSkpIHsKKyAgICAg
ICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgZFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlVmFs
dWUtPnB1dChjYWxsRnJhbWUsIGksIHZhbHVlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBiYXNlVmFsdWUtPnB1dChjYWxsRnJhbWUsIGksIHZhbHVlKTsKICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZjkwYjIzYi4uYTExZjIw
YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0yOTIsNiAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0pTQXJyYXkoSlNWYWx1
ZSogdikgeyByZXR1cm4gIUpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh2KSAmJiB2LT5hc0NlbGwo
KS0+dnB0cigpID09IG1fanNBcnJheVZwdHI7IH0KICAgICAgICAgYm9vbCBpc0pTU3RyaW5nKEpT
VmFsdWUqIHYpIHsgcmV0dXJuICFKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodikgJiYgdi0+YXND
ZWxsKCktPnZwdHIoKSA9PSBtX2pzU3RyaW5nVnB0cjsgfQorICAgICAgICBib29sIGlzSlNCeXRl
QXJyYXkoSlNWYWx1ZSogdikgeyByZXR1cm4gIUpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh2KSAm
JiB2LT5hc0NlbGwoKS0+dnB0cigpID09IG1fanNCeXRlQXJyYXlWcHRyOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRpYWxpemVBbmRS
ZXR1cm4gfTsKQEAgLTM1OSw2ICszNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKICAgICAgICAgdm9pZCogbV9qc0Fy
cmF5VnB0cjsKKyAgICAgICAgdm9pZCogbV9qc0J5dGVBcnJheVZwdHI7CiAgICAgICAgIHZvaWQq
IG1fanNTdHJpbmdWcHRyOwogICAgICAgICB2b2lkKiBtX2pzRnVuY3Rpb25WcHRyOwogCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVBcnJheS5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0J5dGVBcnJheS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTAwOTc2NQotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qnl0ZUFycmF5LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVB
cnJheS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEJ5dGVB
cnJheTo6Y3JlYXRlKHNpemVfdCBzaXplKQoreworICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciA9
IG5ldyB1bnNpZ25lZCBjaGFyW3NpemUgKyBzaXplb2YoQnl0ZUFycmF5KV07CisgICAgQVNTRVJU
KChyZWludGVycHJldF9jYXN0PHNpemVfdD4oYnVmZmVyKSAmIDMpID09IDApOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgKGJ1ZmZlcikgQnl0ZUFycmF5KHNpemUpKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlQXJyYXkuaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQnl0ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWE4YmI4YQotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZUFy
cmF5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQnl0ZUFycmF5X2gKKyNkZWZpbmUgQnl0ZUFycmF5X2gKKwor
I2luY2x1ZGUgInd0Zi9QYXNzUmVmUHRyLmgiCisjaW5jbHVkZSAid3RmL1JlZkNvdW50ZWQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgQnl0ZUFycmF5IDogcHVibGljIFJlZkNvdW50
ZWQ8Qnl0ZUFycmF5PiB7CisgICAgcHVibGljOgorICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKworICAgICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRl
eCwgZG91YmxlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9z
aXplKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICghKHZhbHVlID4g
MCkpIC8vIENsYW1wIE5hTiB0byAwCisgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAg
ICAgICAgZWxzZSBpZiAodmFsdWUgPiAyNTUpCisgICAgICAgICAgICAgICAgdmFsdWUgPSAyNTU7
CisgICAgICAgICAgICBtX2RhdGFbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
dmFsdWUgKyAwLjUpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBnZXQodW5zaWduZWQgaW5k
ZXgsIHVuc2lnbmVkIGNoYXImIHJlc3VsdCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGluZGV4ID49IG1fc2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXN1bHQgPSBtX2RhdGFbaW5kZXhdOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6
ZV90IHNpemUpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXpl
KQorICAgICAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIHNpemVfdCBtX3NpemU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9kYXRhWzBdOworICAg
IH07Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWUwMjM2Ci0tLSAvZGV2L251bGwKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQnl0ZUFycmF5OjpzX2RlZmF1bHRJbmZvID0geyAi
Qnl0ZUFycmF5IiwgMCwgMCwgMCB9OworCitKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0
b3JhZ2UsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8pCisgICAgOiBKU09iamVjdChz
dHJ1Y3R1cmUpCisgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKKyAgICAsIG1fY2xhc3NJbmZvKGNs
YXNzSW5mbykKK3sKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlYywgbV9zdG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7Cit9CisgICAgCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gSlNCeXRlQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlKiBwcm90b3R5cGUpCit7CisgICAgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgSlNCeXRlQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGJvb2wgb2s7CisgICAg
dW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rLCBmYWxzZSk7CisgICAg
aWYgKG9rICYmIGNhbkFjY2Vzc0luZGV4KGluZGV4KSkgeworICAgICAgICBzbG90LnNldFZhbHVl
KGdldEluZGV4KGluZGV4KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworfQorICAgIAorYm9vbCBKU0J5dGVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgaWYgKGNhbkFjY2Vzc0luZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZShnZXRJbmRleChwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNCeXRlQXJy
YXk6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSogdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBib29sIG9rOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvaywgZmFsc2UpOwor
ICAgIGlmIChvaykgeworICAgICAgICBzZXRJbmRleChleGVjLCBpbmRleCwgdmFsdWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNCeXRlQXJyYXk6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUpCit7CisgICAgc2V0SW5k
ZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgSlNCeXRlQXJyYXk6Omdl
dFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3N0b3JhZ2UtPmxlbmd0aCgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgSlNPYmplY3Q6Omdl
dFByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7Cit9CisKK30KKwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmMzYTc5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQnl0ZUFycmF5X2gKKyNkZWZpbmUgSlNCeXRlQXJy
YXlfaAorCisjaW5jbHVkZSAiQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBKU0J5dGVBcnJheSA6IHB1YmxpYyBKU09iamVj
dCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlcjsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGJvb2wgY2FuQWNjZXNzSW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4gaSA8IG1fc3RvcmFn
ZS0+bGVuZ3RoKCk7IH0KKyAgICAgICAgSlNWYWx1ZSogZ2V0SW5kZXgodW5zaWduZWQgaSkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc0luZGV4KGkpKTsKKyAgICAgICAg
ICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6ZnJvbShtX3N0b3JhZ2UtPmRhdGEoKVtpXSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGksIGludCB2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc0luZGV4KGkpKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSAmIH4weEZGKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSAyNTU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX3N0b3JhZ2UtPmRhdGEoKVtpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVl
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBp
LCBkb3VibGUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NJ
bmRleChpKSk7CisgICAgICAgICAgICBpZiAoISh2YWx1ZSA+IDApKSAvLyBDbGFtcCBOYU4gdG8g
MAorICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVl
ID4gMjU1KQorICAgICAgICAgICAgICAgIHZhbHVlID0gMjU1OworICAgICAgICAgICAgbV9zdG9y
YWdlLT5kYXRhKClbaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSArIDAuNSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0SW5kZXgoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZG91YmxlIGJ5dGVWYWx1ZSA9IHZhbHVlLT50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBpZiAoY2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICAgICAgc2V0SW5kZXgoaSwg
Ynl0ZVZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSog
ZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBCeXRlQXJyYXkqIHN0b3JhZ2UsIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSogcHJvdG90eXBlKTsKKyAgICAg
ICAgCisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVy
dHlOYW1lcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTsKKworICAg
ICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm87IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2RlZmF1bHRJ
bmZvOworICAgICAgICAKKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZS0+bGVuZ3RoKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGVudW0gVlB0clN0
ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07CisgICAgICAgIEpTQnl0ZUFycmF5
KFZQdHJTdGVhbGluZ0hhY2tUeXBlKSAKKyAgICAgICAgICAgIDogSlNPYmplY3QoY3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSkKKyAgICAgICAgICAgICwgbV9jbGFzc0luZm8oMCkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPEJ5dGVBcnJheT4gbV9zdG9yYWdlOworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOworICAgIH07CisgICAgCisgICAgSlNC
eXRlQXJyYXkqIGFzQnl0ZUFycmF5KEpTVmFsdWUqIHZhbHVlKTsKKyAgICBpbmxpbmUgSlNCeXRl
QXJyYXkqIGFzQnl0ZUFycmF5KEpTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEpTQnl0ZUFycmF5Kj4oYXNDZWxsKHZhbHVlKSk7CisgICAgfQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNzQyNzUyYy4uMzhlZDQzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAwOS0wMS0wNSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENhbnZhc1BpeGVsQXJyYXkgcGVyZm9ybWFuY2UgaXMgdG9vIHNs
b3cgCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MjM+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJDb3JlIENhbnZhc1BpeGVsQXJyYXkgaW1wbGVt
ZW50YXRpb24gYW5kIHJlcGxhY2UKKyAgICAgICAgQ1BBIHVzYWdlIHdpdGggSlNDOjpCeXRlQXJy
YXkuICBSZXBsYWNlIHRoZSBKU0NhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgd3JhcHBlciB3aXRo
IGFuIGV4cGxpY2l0bHkgaW5zdGFudGlhdGVkIEpTQnl0ZUFycmF5IHB1dCBvbiB0aGUKKyAgICAg
ICAgSlNJbWFnZURhdGEgb2JqZWN0IGFzIGFuIG9yZGluYXJ5IFJlYWRPbmx5LCBEb250RGVsZXRl
IHByb3BlcnR5LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0J5dGVBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQnl0ZUFycmF5Lmg6IEFkZGVkLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUuc2NvbnM6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogaHRtbC9DYW52YXNQaXhlbEFycmF5Lmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9DYW52
YXNQaXhlbEFycmF5LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFbXB0eUltYWdlRGF0YSk6
CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURhdGE6OmRhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6CisKIDIwMDktMDEtMDUgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggMGYwNWFiMy4uNmFiNzRjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjUsNyAr
NjUsNiBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbiBcCiAg
ICAgQ2FudmFzR3JhZGllbnQgXAogICAgIENhbnZhc1BhdHRlcm4gXAotICAgIENhbnZhc1BpeGVs
QXJyYXkgXAogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBcCiAgICAgQ2hhcmFjdGVyRGF0
YSBcCiAgICAgQ2xpcGJvYXJkIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9CeXRlQXJyYXkuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9CeXRlQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGY0MGRj
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0J5
dGVBcnJheS5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CeXRlQXJy
YXkuaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0J5
dGVBcnJheS5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQnl0ZUFycmF5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUxM2FjZQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0J5dGVBcnJheS5o
CkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0J5dGVBcnJheS5oPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggYmJkMTAwYy4uYzM5YzZjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDMsNyArMTQzLDYgQEAgSURM
X0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2NhdGlvbi5pZGwgXAogCVdlYkNv
cmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwgXAogCVdlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJu
LmlkbCBcCi0JV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuaWRsIFwKIAlXZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAJV2ViQ29yZS9odG1sL0ZpbGUuaWRs
IFwKIAlXZWJDb3JlL2h0bWwvRmlsZUxpc3QuaWRsIFwKQEAgLTI0Niw3ICsyNDUsNiBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcCBc
Ci0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVsQXJyYXlDdXN0b20uaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAgXApAQCAtNzkwLDggKzc4OCw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmggXAogCVdlYkNv
cmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcCBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc1BhdHRlcm4u
aCBcCi0JV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXkuY3BwIFwKLQlXZWJDb3JlL2h0bWwv
Q2FudmFzUGl4ZWxBcnJheS5oIFwKIAlXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBcCiAJV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIFwKIAlX
ZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDQ3ZGM5MTYuLmRjMTdkMTUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
MzA4LDcgKzMwOCw2IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgZG9tL1dvcmtlckxvY2F0aW9u
LmlkbCBcCiAgICAgaHRtbC9DYW52YXNHcmFkaWVudC5pZGwgXAogICAgIGh0bWwvQ2FudmFzUGF0
dGVybi5pZGwgXAotICAgIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5pZGwgXAogICAgIGh0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAgaHRtbC9GaWxlLmlkbCBcCiAgICAgaHRt
bC9GaWxlTGlzdC5pZGwgXApAQCAtNjcyLDcgKzY3MSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAgICAgaHRtbC9DYW52YXNHcmFkaWVudC5jcHAgXAogICAg
IGh0bWwvQ2FudmFzUGF0dGVybi5jcHAgXAotICAgIGh0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHAg
XAogICAgIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBcCiAgICAgaHRtbC9DYW52
YXNTdHlsZS5jcHAgXAogICAgIGh0bWwvRmlsZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNjb25zCmluZGV4IGE4OGFiOGMuLjA1OTMw
NTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5zY29ucworKysgYi9XZWJDb3JlL1dlYkNv
cmUuc2NvbnMKQEAgLTE5OSw3ICsxOTksNiBAQCBzb3VyY2VzWydoaXN0b3J5J10gPSBbCiBzb3Vy
Y2VzWydodG1sJ10gPSBbCiAgICAgJ2h0bWwvQ2FudmFzR3JhZGllbnQuY3BwJywKICAgICAnaHRt
bC9DYW52YXNQYXR0ZXJuLmNwcCcsCi0gICAgJ2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHAnLAog
ICAgICdodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAnLAogICAgICdodG1sL0NhbnZh
c1N0eWxlLmNwcCcsCiAgICAgJ2h0bWwvRmlsZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZmZjNmI4Mi4uZmQ2MTBjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC01MzIsMTAgKzUzMiw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDYW52YXNQaXhlbEFycmF5LmgiDQotCQkJCT4N
Ci0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTI0OTQsMjIgKzEyNDkwLDYg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxDYW52YXNQaXhlbEFycmF5LmNwcCINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCi0JCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wN
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCVdob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj0idHJ1ZSINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxDYW52YXNQaXhl
bEFycmF5LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAiDQogCQkJCT4NCiAJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTM5NTcsMTAgKzEzOTM3LDYgQEAKIAkJCQkJPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJ
CTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzVjMTUzMi4uNWI5ZmUzMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NzksNyAr
MTc3OSw2IEBACiAJCTkzMDdGMUQ3MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDdGMUQ1
MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJOTMwN0YxRDgw
QUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDdGMUQ2MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRU
ZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTMwOTA4OTEwQUY3RURFNDAwODFERjAxIC8qIEhpdFRlc3RSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA5MDg5MDBBRjdFREU0
MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLzsgfTsKLQkJOTMwQjNCRTIwRTg4NDkyMTAw
OTc3MEM1IC8qIEpTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwQjNCRTEwRTg4NDkyMTAwOTc3MEM1IC8qIEpT
Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5oICovOyB9OwogCQk5MzI2REMwQzA5REFENUQ2MDBBRkM4
NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3IC8qIENoYXJzZXREYXRhLmNwcCAq
LzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI3
QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAqLzsgfTsK
IAkJOTMyODcxQzAwQjIwREVCNzAwNDkwMzVBIC8qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI4NzFCRjBC
MjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjAzNiwxMiArMjAzNSw4IEBA
CiAJCUE3NUU4QjhEMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvbmVudFRyYW5zZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4NTBFMURF
MkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oICovOyB9OwogCQlBNzVFOEI4RTBF
MURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODYwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29t
cG9zaXRlLmNwcCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9z
aXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVF
OEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAqLzsgfTsKLQkJQTc3OTc5MTYw
RDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTAwRDZCOUQwQzAwMzg1MUI5IC8q
IENhbnZhc1BpeGVsQXJyYXkuY3BwICovOyB9OwotCQlBNzc5NzkxNzBENkI5RDBDMDAzODUxQjkg
LyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc3OTc5MTEwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZhc1BpeGVsQXJyYXku
aCAqLzsgfTsKIAkJQTc3OTc5MTkwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxMzBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNwcCAqLzsgfTsKIAkJQTc3OTc5MUEwRDZCOUQwQzAw
Mzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovOyB9
OwotCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTIyMEQ2
QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuY3BwICovOyB9OwotCQlBNzc5Nzky
NzBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyMzBENkI5RTY0MDAzODUxQjkg
LyogSlNDYW52YXNQaXhlbEFycmF5LmggKi87IH07CiAJCUE3Nzk3OTI4MEQ2QjlFNjQwMDM4NTFC
OSAvKiBKU0ltYWdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzc5NzkyNDBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwICov
OyB9OwogCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQw
MDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9OwogCQlBNzg0OTQxQjBCNUZFNTA3MDAxRTIz
N0EgLyogQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwICovOyB9
OwpAQCAtNjYxNSw3ICs2NjEwLDYgQEAKIAkJOTMwN0YxRDUwQUYyRDU5MDAwREJBMzFBIC8qIEhp
dFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhp
dFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3RjFENjBB
RjJENTkwMDBEQkEzMUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzA5MDg5MDBBRjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpdFRlc3RSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTkzMEIzQkUxMEU4ODQ5MjEwMDk3NzBDNSAvKiBKU0NhbnZhc1BpeGVs
QXJyYXlDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQ
aXhlbEFycmF5Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMENBQUQ2
MDlDNDk1QjYwMDIyOUMwNCAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMENBQjg4MDlDNDlFRkEwMDIyOUMwNCAvKiBDYW52YXNHcmFk
aWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzR3JhZGllbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBDQUI4RjA5QzQ5RjFCMDAyMjlDMDQgLyogQ2Fu
dmFzUGF0dGVybi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzUGF0dGVybi5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODUzLDE0ICs2ODQ3LDkgQEAKIAkJQTc1
RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9uZW50VHJhbnNmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRkVDb21wb25lbnRUcmFuc2Zlci5oOyBwYXRoID0gZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3NUU4Qjg2MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvc2l0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUNvbXBvc2l0ZS5jcHA7IHBhdGggPSBmaWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RThCODcw
RTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9zaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEZFQ29tcG9zaXRlLmg7IHBhdGggPSBmaWx0ZXJzL0ZFQ29tcG9zaXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3Nzk3OTEwMEQ2QjlEMEMwMDM4NTFCOSAvKiBD
YW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbnZhc1BpeGVsQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzc5
NzkxMTBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3Nzk3OTEyMEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNQaXhlbEFycmF5LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3OTc5MTMwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdl
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzc5NzkxNDBENkI5RDBDMDAzODUx
QjkgLyogSW1hZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzc5NzkxNTBENkI5RDBDMDAz
ODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbWFnZURhdGEu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzc5NzkyMjBENkI5RTY0MDAzODUx
QjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQaXhlbEFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFCOSAvKiBK
U0ltYWdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lt
YWdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk3OTI1MEQ2QjlF
NjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0ltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzg0OTQx
QTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTEzMzEsOSArMTEzMjAsNiBAQAogCQkJCTkzRUVDMjZFMDlDMzIxODAwMEM1MTVEMSAv
KiBDYW52YXNQYXR0ZXJuLmNwcCAqLywKIAkJCQk5M0VFQzFGMjA5QzI4Nzc3MDBDNTE1RDEgLyog
Q2FudmFzUGF0dGVybi5oICovLAogCQkJCTkzMENBQjhGMDlDNDlGMUIwMDIyOUMwNCAvKiBDYW52
YXNQYXR0ZXJuLmlkbCAqLywKLQkJCQlBNzc5NzkxMDBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFz
UGl4ZWxBcnJheS5jcHAgKi8sCi0JCQkJQTc3OTc5MTEwRDZCOUQwQzAwMzg1MUI5IC8qIENhbnZh
c1BpeGVsQXJyYXkuaCAqLywKLQkJCQlBNzc5NzkxMjBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFz
UGl4ZWxBcnJheS5pZGwgKi8sCiAJCQkJOTNFRUMxRUQwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCiAJCQkJOTNFRUMxRUUwOUMyODc3NzAwQzUxNUQx
IC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCTkzMENBQUQ2MDlDNDk1QjYw
MDIyOUMwNCAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLApAQCAtMTE2MTUsOCAr
MTE2MDEsNiBAQAogCQkJCTY1REYzMjM0MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRp
ZW50LmggKi8sCiAJCQkJNjVERjMyMzUwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVy
bi5jcHAgKi8sCiAJCQkJNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVy
bi5oICovLAotCQkJCUE3Nzk3OTIyMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVsQXJy
YXkuY3BwICovLAotCQkJCUE3Nzk3OTIzMEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0NhbnZhc1BpeGVs
QXJyYXkuaCAqLywKIAkJCQk2NURGMzIzNzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwICovLAogCQkJCTY1REYzMjM4MDlEMURFNjUwMDBCRTMyNSAvKiBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCUJDMDBGMDEwMEUwQTE4OTUwMEZE
MDRFMyAvKiBKU0ZpbGUuY3BwICovLApAQCAtMTMyMzEsNyArMTMyMTUsNiBAQAogCQkJCUJDNDZD
MUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDNTgy
NUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICov
LAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAq
LywKLQkJCQk5MzBCM0JFMTBFODg0OTIxMDA5NzcwQzUgLyogSlNDYW52YXNQaXhlbEFycmF5Q3Vz
dG9tLmggKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0E4M0U1MTBEN0NFMjA1MDAzNDIxQTgg
LyogSlNDbGlwYm9hcmRDdXN0b20uY3BwICovLAogCQkJCUMwREZDODZGMERCNjg0MUEwMDNFQUU3
QyAvKiBKU0NvbnNvbGVDdXN0b20uY3BwICovLApAQCAtMTQ0NDksNyArMTQ0MzIsNiBAQAogCQkJ
CUJDQjE2QzI4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0VFQzIwMzA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUVDMjA0MDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNQ
YXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzc5NzkxNzBENkI5RDBDMDAzODUxQjkgLyog
Q2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFRUMyMDAwOUMyODc3NzAw
QzUxNUQxIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNFRUMyMDEwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjU1OTkyRDBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0LmggaW4gSGVhZGVycyAq
LywKQEAgLTE1NDg3LDggKzE1NDY5LDYgQEAKIAkJCQlCQzY4NkM3RjBFMEMzMzAxMDBERThBMDgg
LyogSlNDU1NWYXJpYWJsZXNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQTA5RDFE
RTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVE
RjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTc3OTc5MjcwRDZCOUU2NDAwMzg1MUI5IC8qIEpTQ2FudmFzUGl4ZWxBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJOTMwQjNCRTIwRTg4NDkyMTAwOTc3MEM1IC8qIEpTQ2FudmFzUGl4
ZWxBcnJheUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0UwOUQxREU2NTAwMEJF
MzI1IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NURGMzFGNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0E4M0U1MDBEN0NFMUU5MDAzNDIxQTggLyogSlNDbGlwYm9hcmQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTY4ODIsNyArMTY4NjIsNiBAQAogCQkJCUJDQjE2QzI3MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRUVD
MjAyMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0VFQzI2RjA5QzMyMTgwMDBDNTE1RDEgLyogQ2FudmFzUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlBNzc5NzkxNjBENkI5RDBDMDAzODUxQjkgLyogQ2FudmFzUGl4ZWxBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzFGRjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRUVDMjcxMDlD
MzIxODgwMEM1MTVEMSAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1
OTkyQzBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTc0NDUsNyArMTc0MjQsNiBAQAogCQkJCUJDNjg2QzdFMEUwQzMzMDEwMERFOEEwOCAvKiBKU0NT
U1ZhcmlhYmxlc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMyMzkwOUQxREU2NTAw
MEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMy
M0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlBNzc5NzkyNjBENkI5RTY0MDAzODUxQjkgLyogSlNDYW52YXNQaXhlbEFycmF5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTY1REYzMjNEMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTlFRjQ1NzBBMUI5NTdE
MDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVERjMxRjMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTQ2hhcmFjdGVyRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNQaXhlbEFycmF5Q3VzdG9tLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUGl4ZWxB
cnJheUN1c3RvbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTI3MjdiLi4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiSlNDYW52
YXNQaXhlbEFycmF5LmgiCi0KLSNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSAgICBpbmxpbmUg
SlNWYWx1ZSogSlNDYW52YXNQaXhlbEFycmF5OjpnZXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7Ci0gICAgICAg
IGlmICghaW1wbCgpLT5nZXQoaW5kZXgsIHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjpmcm9tKHJlc3VsdCk7Ci0g
ICAgfQotICAgIAotICAgIGlubGluZSB2b2lkIEpTQ2FudmFzUGl4ZWxBcnJheTo6aW5kZXhTZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSogdmFsdWUpCi0gICAg
ewotICAgICAgICBkb3VibGUgcGl4ZWxWYWx1ZSA9IHZhbHVlLT50b051bWJlcihleGVjKTsKLSAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX2ltcGwtPnNldChpbmRleCwgcGl4ZWxWYWx1ZSk7IAotICAgIH0KLSAgICAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZURhdGFDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAKaW5kZXggNTBmMjM3YS4uNTYyZmNlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
RGF0YUN1c3RvbS5jcHAKQEAgLTI3LDYgKzI3LDExIEBACiAjaW5jbHVkZSAiSlNJbWFnZURhdGEu
aCIKIAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisKKyNpbmNsdWRlIDxydW50aW1lL0pTQnl0ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MSw3ICs0NiwxMCBAQCBKU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSW1hZ2VE
YXRhKiBpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIAogICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIEltYWdlRGF0YSwgaW1hZ2VEYXRh
KTsKLSAgICAKKyAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8U3RydWN0dXJlPiwgY3BhU3RydWN0dXJlLCAoSlNCeXRl
QXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsKKyAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAwLCAwLCAwIH07Cisg
ICAgd3JhcHBlci0+cHV0RGlyZWN0KGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4
ZWMsIGNwYVN0cnVjdHVyZSwgaW1hZ2VEYXRhLT5kYXRhKCksICZjcGFDbGFzc0luZm8pLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlD
b3N0KGltYWdlRGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBw
ZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHAgYi9XZWJD
b3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgyYmMyN2IuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1BpeGVsQXJyYXku
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Q
YXNzUmVmUHRyPENhbnZhc1BpeGVsQXJyYXk+IENhbnZhc1BpeGVsQXJyYXk6OmNyZWF0ZSh1bnNp
Z25lZCBzaXplKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzUGl4ZWxBcnJheShz
aXplKSk7Ci19Ci0KLUNhbnZhc1BpeGVsQXJyYXk6OkNhbnZhc1BpeGVsQXJyYXkodW5zaWduZWQg
c2l6ZSkKLSAgICA6IG1fZGF0YShzaXplKQotewotICAgIEFTU0VSVCgocmVpbnRlcnByZXRfY2Fz
dDxzaXplX3Q+KG1fZGF0YS5kYXRhKCkpICYgMykgPT0gMCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmggYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4
ZWxBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTYwNTM4Li4wMDAwMDAw
Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIENhbnZhc1BpeGVsQXJyYXlfaAotI2RlZmluZSBDYW52YXNQ
aXhlbEFycmF5X2gKLQotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotICAgIGNsYXNzIENhbnZh
c1BpeGVsQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNQaXhlbEFycmF5PiB7Ci0gICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBjcmVh
dGUodW5zaWduZWQgc2l6ZSk7Ci0KLSAgICAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBkYXRh
KCkgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5zaXplKCk7IH0KLQotICAgICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRl
eCwgZG91YmxlIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9k
YXRhLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoISh2
YWx1ZSA+IDApKSAvLyBDbGFtcCBOYU4gdG8gMAotICAgICAgICAgICAgICAgIHZhbHVlID0gMDsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gMjU1KQotICAgICAgICAgICAgICAgIHZhbHVl
ID0gMjU1OwotICAgICAgICAgICAgbV9kYXRhW2luZGV4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KHZhbHVlICsgMC41KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZ2V0KHVuc2ln
bmVkIGluZGV4LCB1bnNpZ25lZCBjaGFyJiByZXN1bHQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChpbmRleCA+PSBtX2RhdGEuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG1fZGF0YVtpbmRleF07Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQ2FudmFz
UGl4ZWxBcnJheSh1bnNpZ25lZCBzaXplKTsKLSAgICAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+
IG1fZGF0YTsKLSAgICB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gQ2FudmFzUGl4ZWxBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4
ZWxBcnJheS5pZGwgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGl4ZWxBcnJheS5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZGNlY2IuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9odG1s
L0NhbnZhc1BpeGVsQXJyYXkuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9k
dWxlIGh0bWwgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tSGVhZGVyLAotICAg
ICAgICBIYXNDdXN0b21JbmRleEdldHRlciwKLSAgICAgICAgSGFzQ3VzdG9tSW5kZXhTZXR0ZXIK
LSAgICBdIENhbnZhc1BpeGVsQXJyYXkgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBsZW5ndGg7Ci0gICAgfTsKLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAppbmRleCA5MjQ2MDgyLi5iNTkxZTU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhY2hlZElt
YWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0
ZXJuLmgiCi0jaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkNhbnZhc1N0
eWxlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1N0eWxl
U2VsZWN0b3IuaCIKQEAgLTU4LDYgKzU3LDggQEAKICNpbmNsdWRlICJTdHJva2VTdHlsZUFwcGxp
ZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNp
bmNsdWRlIDxydW50aW1lL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xMTcyLDcgKzExNzMsNyBAQCBHcmFwaGljc0Nv
bnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAog
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBkYXRhID0gSW1hZ2VE
YXRhOjpjcmVhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBtZW1zZXQoZGF0
YS0+ZGF0YSgpLT5kYXRhKCkuZGF0YSgpLCAwLCBkYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKKyAg
ICBtZW1zZXQoZGF0YS0+ZGF0YSgpLT5kYXRhKCksIDAsIGRhdGEtPmRhdGEoKS0+bGVuZ3RoKCkp
OwogICAgIHJldHVybiBkYXRhOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmNwcCBiL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IDM2NTMwMzEuLmYwNjIy
OGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAKLSNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5Lmgi
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0
YTo6Y3JlYXRlKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCkBAIC00MSw3ICszOSw3
IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQogSW1hZ2VEYXRhOjpJbWFnZURhdGEodW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCkKICAgICA6IG1fd2lkdGgod2lkdGgpCiAgICAgLCBtX2hlaWdodCho
ZWlnaHQpCi0gICAgLCBtX2RhdGEoQ2FudmFzUGl4ZWxBcnJheTo6Y3JlYXRlKHdpZHRoICogaGVp
Z2h0ICogNCkpCisgICAgLCBtX2RhdGEoSlNDOjpCeXRlQXJyYXk6OmNyZWF0ZSh3aWR0aCAqIGhl
aWdodCAqIDQpKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgg
Yi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggMjFhZjFmOS4uYWQ2M2UxOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuaApAQCAtMjksOCArMjksOSBAQAogI2lmbmRlZiBJbWFnZURhdGFfaAogI2RlZmluZSBJbWFn
ZURhdGFfaAogCi0jaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTMgKzQxLDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2lkdGg7IH0KICAgICAgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9oZWlnaHQ7IH0KLSAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgICAgICBKU0M6OkJ5dGVBcnJheSogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW1h
Z2VEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwogICAgICAgICB1bnNpZ25l
ZCBtX3dpZHRoOwogICAgICAgICB1bnNpZ25lZCBtX2hlaWdodDsKLSAgICAgICAgUmVmUHRyPENh
bnZhc1BpeGVsQXJyYXk+IG1fZGF0YTsKKyAgICAgICAgUmVmUHRyPEpTQzo6Qnl0ZUFycmF5PiBt
X2RhdGE7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5pZGwgYi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAppbmRl
eCAyNDY2MzJmLi42OWM5MmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlk
bAorKysgYi9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbApAQCAtMzQsNyArMzQsNiBAQCBtb2R1
bGUgaHRtbCB7CiAgICAgXSBJbWFnZURhdGEgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaGVpZ2h0OwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FudmFzUGl4ZWxBcnJheSBkYXRhOwogICAgIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmlu
ZGV4IDUwMjMxM2IuLjcyZTc0ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIEltYWdlKiBJbWFnZUJ1ZmZl
cjo6aW1hZ2UoKSBjb25zdAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUocmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCktPmRhdGEo
KS5kYXRhKCk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3VsdC0+ZGF0YSgpLT5kYXRh
KCk7CiAKICAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC54KCkg
KyByZWN0LndpZHRoKCkpID4gbV9zaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWln
aHQoKSkgPiBtX3NpemUuaGVpZ2h0KCkpCiAgICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQt
PmRhdGEoKS0+bGVuZ3RoKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlLT53aWR0aCgp
OwogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBtX3NpemUud2lkdGgoKTsKIAot
ICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLmRhdGEo
KSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworICAgIHVuc2lnbmVk
IGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpICsgb3JpZ2lueSAqIHNyY0J5
dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEubV9kYXRhKSArIGRlc3R5ICog
ZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVt
Um93czsgKyt5KSB7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtQ29sdW1uczsgeCsr
KSB7Cg==
</data>
<flag name="review"
          id="12541"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>