<?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>23205</bug_id>
          
          <creation_ts>2009-01-08 21:23:27 -0800</creation_ts>
          <short_desc>Immediate int should be stored in low word of JSValuePtr on x86-64.</short_desc>
          <delta_ts>2009-01-09 00:11:24 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104989</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-01-08 21:23:27 -0800</bug_when>
    <thetext>This will simplify arithmetic, by removing the need to de-tag values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104990</commentid>
    <comment_count>1</comment_count>
      <attachid>26554</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-01-08 21:24:30 -0800</bug_when>
    <thetext>Created attachment 26554
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104991</commentid>
    <comment_count>2</comment_count>
      <attachid>26555</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-01-08 21:30:12 -0800</bug_when>
    <thetext>Created attachment 26555
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104994</commentid>
    <comment_count>3</comment_count>
      <attachid>26555</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-01-08 21:48:08 -0800</bug_when>
    <thetext>Comment on attachment 26555
The patch

Awesome!  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105006</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-01-09 00:11:24 -0800</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/assembler/MacroAssembler.h
Sending        JavaScriptCore/assembler/X86Assembler.h
Sending        JavaScriptCore/jit/JIT.cpp
Sending        JavaScriptCore/jit/JIT.h
Sending        JavaScriptCore/jit/JITArithmetic.cpp
Sending        JavaScriptCore/jit/JITCall.cpp
Sending        JavaScriptCore/jit/JITInlineMethods.h
Sending        JavaScriptCore/jit/JITPropertyAccess.cpp
Sending        JavaScriptCore/runtime/JSImmediate.h
Sending        JavaScriptCore/wtf/Platform.h
Transmitting file data ...........
Committed revision 39738.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26554</attachid>
            <date>2009-01-08 21:24:30 -0800</date>
            <delta_ts>2009-01-08 21:30:12 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.altimmFFFFiVe.txt</filename>
            <type>text/plain</type>
            <size>54469</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5NzM2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODggQEAKKzIwMDktMDEt
MDggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuY29kZSBpbW1lZGlhdGVz
IGluIHRoZSBsb3cgd29yZCBvZiBKU1ZhbHVlUHRycywgb24geDg2LTY0LgorCisgICAgICAgIE9u
IDMyLWJpdCBwbGF0Zm9ybXMgYSBKU1ZhbHVlUHRyIG1heSByZXByZXNlbnQgYSAzMS1iaXQgc2ln
bmVkIGludGVnZXIuCisgICAgICAgIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIGlmIFVTRShBTFRFUk5B
VEVfSlNJTU1FRElBVEUpIGlzIGRlZmluZWQsIGEgZnVsbAorICAgICAgICAzMi1iaXQgaW50ZWdl
ciBtYXkgYmUgc3RvcmVkIGluIGFuIGltbWVkaWF0ZS4KKyAgICAgICAgCisgICAgICAgIFByZXNl
bnRseSBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKSB1c2VzIHRoZSBzYW1lIGVuY29kaW5nIGFz
IHRoZSBkZWZhdWx0CisgICAgICAgIGltbWVkaWF0ZSBmb3JtYXQgLSB0aGUgdmFsdWUgaXMgbGVm
dCBzaGlmdGVkIGJ5IG9uZSwgc28gYSBvbmUgYml0IHRhZyBjYW4KKyAgICAgICAgYmUgYWRkZWQg
dG8gaW5kaWNhdGUgdGhlIHZhbHVlIGlzIGFuIGltbWVkaWF0ZS4gIEhvd2V2ZXIgdGhpcyBtZWFu
cyB0aGF0CisgICAgICAgIHZhbHVlcyBtdXN0IGJlIGNvbW1vbmx5IGJlIGRldGFnZ2VkIChieSBy
aWdodCBzaGlmdGluZyBieSBvbmUpIGJlZm9yZQorICAgICAgICBhcml0aG1ldGljIG9wZXJhdGlv
bnMgY2FuIGJlIHBlcmZvcm1lZCBvbiBpbW1lZGlhdGVzLiAgVGhpcyBwYXRjaCBtb2RpZmllcwor
ICAgICAgICB0aGUgZm9ybWF0dHRpbmcgc28gdGhlIHRoZSBoaWdoIGJpdHMgb2YgdGhlIGltbWVk
aWF0ZSBtYXJrIHZhbHVlcyBhcyBiZWluZworICAgICAgICBpbnRlZ2VyLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Ojpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpvclB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjp6ZXJvRXh0ZW5kMzJUb1B0cik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpqYWVQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
amJQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6am56UHRyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXI6Omp6UHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6KToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpub3RsX3IpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3Rx
X2kzMnIpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFt
cG9saW5lcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFzdEFyaXRoX29wX2xzaGlmdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9yc2hpZnQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlRmFzdEFyaXRoU2xvd19vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVGYXN0QXJpdGhfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFz
dEFyaXRoU2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVGYXN0QXJpdGhf
b3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFzdEFyaXRoX29wX211bCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wb3N0X2luYyk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wb3N0X2RlYyk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wcmVfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlRmFzdEFyaXRoX29wX3ByZV9kZWMpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dERvdWJs
ZVJlc3VsdFRvSlNOdW1iZXJDZWxsT3JKU0ltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZkpTQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5vdEpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEp1bXBJZkltbU51bSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tTnVtKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1OdW1zKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZUp1bXBJZlpl
cm8pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEZhc3RBcml0aEltbVRvSW50KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0VGFnQXNCb29sSW1tZWRpYXRlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpyZXNpemVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRS
ZXBsYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTSW1tZWRpYXRlLmg6CisgICAgICAgIChKU0M6
OkpTSW1tZWRpYXRlOjppc051bWJlcik6CisgICAgICAgIChKU0M6OkpTSW1tZWRpYXRlOjppc1Bv
c2l0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OmFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OnhvckltbWVkaWF0ZU51bWJl
cnMpOgorICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6cmlnaHRTaGlmdEltbWVkaWF0ZU51bWJl
cnMpOgorICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6Y2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRp
b25zKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OmFkZEltbWVkaWF0ZU51bWJlcnMpOgor
ICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6c3ViSW1tZWRpYXRlTnVtYmVycyk6CisgICAgICAg
IChKU0M6OkpTSW1tZWRpYXRlOjptYWtlSW50KToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6
OnRvQm9vbGVhbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMDktMDEtMDggIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAzOTczNikKKysrIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfaTMycihzcmMsIGltbS5tX3ZhbHVlLCBkZXN0
KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBub3QzMihSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX3Ioc3JjRGVzdCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgb3JQdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYg
UExBVEZPUk0oWDg2XzY0KQpAQCAtNTg4LDYgKzU5MywxNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB9CiAKKyAgICB2b2lkIG9yUHRyKEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNjcmF0Y2hSZWdpc3RlciwgZGVzdCk7Cisj
ZWxzZQorICAgICAgICBvcjMyKEltbTMyKGltbSksIGRlc3QpOworI2VuZGlmCisgICAgfQorCiAg
ICAgdm9pZCBvclB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgUExB
VEZPUk0oWDg2XzY0KQpAQCAtMTAwMiw2ICsxMDE3LDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZsX3JyKHNyYywgZGVzdCk7CisjZWxzZQorICAgICAgICBpZiAoc3JjICE9IGRlc3QpCisg
ICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CisjZW5kaWYKKyAgICB9CiAKIAogICAgIC8vIEZv
cndhcmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CkBAIC0xMTE3LDYgKzEx
NDEsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qYSgpKTsK
ICAgICB9CiAgICAgCisgICAgSnVtcCBqYWVQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQorICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1fYXNzZW1ibGVy
LmNtcHFfcnIocmlnaHQsIGxlZnQpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
YWUoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gamFlMzIobGVmdCwgcmlnaHQpOworI2VuZGlm
CisgICAgfQorCisgICAgSnVtcCBqYWVQdHIoUmVnaXN0ZXJJRCByZWcsIEltbVB0ciBwdHIpCisg
ICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgaW50cHRyX3QgaW1tID0gcHRyLmFz
SW50cHRyKCk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfMzJfNjQoaW1tKSkgeworICAg
ICAgICAgICAgY29tcGFyZUltbTY0Rm9yQnJhbmNoKHJlZywgaW1tKTsKKyAgICAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmphZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUocHRyLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgcmV0dXJuIGphZVB0
cihyZWcsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIHJldHVy
biBqYWUzMihyZWcsIEltbTMyKHB0cikpOworI2VuZGlmCisgICAgfQorCiAgICAgSnVtcCBqYWUz
MihSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgY29tcGFyZUlt
bTMyRm9yQnJhbmNoKGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOwpAQCAtMTEzNSw2ICsxMTg1LDMyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuamFlKCkpOwogICAgIH0K
ICAgICAKKyAgICBKdW1wIGpiUHRyKFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
KyAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX3Jy
KHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuamIoKSk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gamIzMihsZWZ0LCByaWdodCk7CisjZW5kaWYKKyAgICB9CisK
KyAgICBKdW1wIGpiUHRyKFJlZ2lzdGVySUQgcmVnLCBJbW1QdHIgcHRyKQorICAgIHsKKyNpZiBQ
TEFURk9STShYODZfNjQpCisgICAgICAgIGludHB0cl90IGltbSA9IHB0ci5hc0ludHB0cigpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbSkpIHsKKyAgICAgICAgICAgIGNv
bXBhcmVJbW02NEZvckJyYW5jaChyZWcsIGltbSk7CisgICAgICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qYigpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUocHRy
LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgcmV0dXJuIGpiUHRyKHJlZywgc2NyYXRj
aFJlZ2lzdGVyKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgcmV0dXJuIGpiMzIocmVnLCBJ
bW0zMihwdHIpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIEp1bXAgamIzMihSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX21yKHJp
Z2h0Lm9mZnNldCwgcmlnaHQuYmFzZSwgbGVmdCk7CkBAIC0xNDY4LDYgKzE1NDQsMTcgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgfQogCisgICAgSnVtcCBqbnpQdHIoUmVnaXN0ZXJJRCByZWcsIElt
bVB0ciBtYXNrKQorICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1vdmUobWFz
aywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoc2NyYXRj
aFJlZ2lzdGVyLCByZWcpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbmUoKSk7
CisjZWxzZQorICAgICAgICByZXR1cm4gam56MzIocmVnLCBJbW0zMihtYXNrKSk7CisjZW5kaWYK
KyAgICB9CisKICAgICBKdW1wIGpuelB0cihBZGRyZXNzIGFkZHJlc3MsIEltbTMyIG1hc2sgPSBJ
bW0zMigtMSkpCiAgICAgewogI2lmIFBMQVRGT1JNKFg4Nl82NCkKQEAgLTE1MDAsNiArMTU4Nywx
NyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICBKdW1wIGp6UHRyKFJlZ2lzdGVySUQg
cmVnLCBJbW1QdHIgbWFzaykKKyAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBt
b3ZlKG1hc2ssIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3Jy
KHNjcmF0Y2hSZWdpc3RlciwgcmVnKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
amUoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4ganozMihyZWcsIEltbTMyKG1hc2spKTsKKyNl
bmRpZgorICAgIH0KKwogICAgIEp1bXAganpQdHIoQWRkcmVzcyBhZGRyZXNzLCBJbW0zMiBtYXNr
ID0gSW1tMzIoLTEpKQogICAgIHsKICNpZiBQTEFURk9STShYODZfNjQpCkluZGV4OiBhc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
CShyZXZpc2lvbiAzOTczNikKKysrIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgR1JPVVAyX09QX1NBUiA9
IDcsCiAKICAgICAgICAgR1JPVVAzX09QX1RFU1QgPSAwLAorICAgICAgICBHUk9VUDNfT1BfTk9U
ICA9IDIsCiAgICAgICAgIEdST1VQM19PUF9JRElWID0gNywKIAogICAgICAgICBHUk9VUDVfT1Bf
Q0FMTE4gPSAyLApAQCAtMzYzLDYgKzM2NCwxMSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAK
KyAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGRzdCk7CisgICAgfQor
CiAgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgZHN0KTsKQEAg
LTcxNSw3ICs3MjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlc3RxX2kzMnIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGRzdCk7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgZHN0KTsKICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKSW5kZXg6IGppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGppdC9KSVQuY3BwCShyZXZpc2lvbiAzOTczNikKKysrIGppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsMTIgKzM0OCwxNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVJbnQob3AyKSkgewogICAgICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AxLCBYODY6OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tTnVtKFg4Njo6ZWF4KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGpsUHRyKFg4Njo6ZWF4
LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKGdldENvbnN0YW50T3BlcmFuZChvcDIpKSkpLCB0
YXJnZXQgKyAzKTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICAgICAg
ICAgIGludDMyX3Qgb3AyaW1tID0gSlNJbW1lZGlhdGU6OmludFZhbHVlKGdldENvbnN0YW50T3Bl
cmFuZChvcDIpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaW50MzJfdCBvcDJpbW0gPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6cmF3VmFsdWUoZ2V0Q29uc3RhbnRPcGVyYW5k
KG9wMikpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGFkZEp1bXAoamwzMihYODY6OmVheCwg
SW1tMzIob3AyaW1tKSksIHRhcmdldCArIDMpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhvcDEsIFg4Njo6ZWF4LCBvcDIsIFg4
Njo6ZWR4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2
OjplYXgpOwogICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6
OmVkeCk7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChqbFB0cihYODY6OmVheCwgWDg2OjplZHgp
LCB0YXJnZXQgKyAzKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGpsMzIoWDg2OjplYXgsIFg4
Njo6ZWR4KSwgdGFyZ2V0ICsgMyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9sb29wX2lmX2xlc3MpOwogICAgICAgICB9CkBAIC0zNjYsMTIgKzM3MSwxNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewogICAgICAgICAgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIob3AxLCBYODY6OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGps
ZVB0cihYODY6OmVheCwgSW1tUHRyKEpTVmFsdWVQdHI6OmVuY29kZShnZXRDb25zdGFudE9wZXJh
bmQob3AyKSkpKSwgdGFyZ2V0ICsgMyk7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkK
KyAgICAgICAgICAgICAgICBpbnQzMl90IG9wMmltbSA9IEpTSW1tZWRpYXRlOjppbnRWYWx1ZShn
ZXRDb25zdGFudE9wZXJhbmQob3AyKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGludDMyX3Qg
b3AyaW1tID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNJbW1lZGlhdGU6OnJhd1ZhbHVlKGdldENv
bnN0YW50T3BlcmFuZChvcDIpKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGps
ZTMyKFg4Njo6ZWF4LCBJbW0zMihvcDJpbW0pKSwgdGFyZ2V0ICsgMyk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9wMSwgWDg2
OjplYXgsIG9wMiwgWDg2OjplZHgpOwogICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbU51bShYODY6OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tTnVtKFg4Njo6ZWR4KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGpsZVB0cihYODY6
OmVheCwgWDg2OjplZHgpLCB0YXJnZXQgKyAzKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGps
ZTMyKFg4Njo6ZWF4LCBYODY6OmVkeCksIHRhcmdldCArIDMpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbG9vcF9pZl9sZXNzKTsKICAgICAgICAgfQpAQCAtMzk1
LDggKzQwNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIAogICAgICAg
ICAgICAgLy8gY2hlY2sgaWYgYW55IGFyZSBpbW1lZGlhdGVzCiAgICAgICAgICAgICBtb3ZlKFg4
Njo6ZWF4LCBYODY6OmVieCk7Ci0gICAgICAgICAgICBvcjMyKFg4Njo6ZWN4LCBYODY6OmVieCk7
Ci0gICAgICAgICAgICBvcjMyKFg4Njo6ZWR4LCBYODY6OmVieCk7CisgICAgICAgICAgICBvclB0
cihYODY6OmVjeCwgWDg2OjplYngpOworICAgICAgICAgICAgb3JQdHIoWDg2OjplZHgsIFg4Njo6
ZWJ4KTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChYODY6OmVieCk7
CiAKICAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgYWxsIGFyZSBvYmplY3QgdHlwZSAtIHRoaXMg
aXMgYSBiaXQgb2YgYSBiaXRoYWNrIHRvIGF2b2lkIGV4Y2VzcyBicmFuY2hpbmc7CkBAIC01NjMs
NyArNTczLDE3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfdmFsOiB7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBYODY6OmVheCwgY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCwgWDg2OjplZHgpOwogICAgICAgICAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWR4KTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRF
KQorICAgICAgICAgICAgLy8gVGhpcyBpcyB0ZWNobmljYWxseSBpbmNvcnJlY3QgLSB3ZSdyZSB6
ZXJvLWV4dGVuZGluZyBhbiBpbnQzMi4gIE9uIHRoZSBob3QgcGF0aCB0aGlzIGRvZXNuJ3QgbWF0
dGVyLgorICAgICAgICAgICAgLy8gV2UgY2hlY2sgdGhlIHZhbHVlIGFzIGlmIGl0IHdhcyBhIHVp
bnQzMiBhZ2FpbnN0IHRoZSBtX2Zhc3RBY2Nlc3NDdXRvZmYgLSB3aGljaCB3aWxsIGFsd2F5cyBm
YWlsIGlmCisgICAgICAgICAgICAvLyBudW1iZXIgd2FzIHNpZ25lZCBzaW5jZSBtX2Zhc3RBY2Nl
c3NDdXRvZmYgaXMgYWx3YXlzIGxlc3MgdGhhbiBpbnRtYXggKHNpbmNlIHRoZSB0b3RhbCBhbGxv
Y2F0aW9uCisgICAgICAgICAgICAvLyBzaXplIGlzIGFsd2F5cyBsZXNzIHRoYW4gNEdiKS4gIEFz
IHN1Y2ggemVybyBleHRlbmRpbmcgd2lsIGhhdmUgYmVlbiBjb3JyZWN0IChhbmQgZXh0ZW5kaW5n
IHRoZSB2YWx1ZQorICAgICAgICAgICAgLy8gdG8gNjQtYml0cyBpcyBuZWNlc3Nhcnkgc2luY2Ug
aXQncyB1c2VkIGluIHRoZSBhZGRyZXNzIGNhbGN1bGF0aW9uLiAgV2UgemVybyBleHRlbmQgcmF0
aGVyIHRoYW4gc2lnbgorICAgICAgICAgICAgLy8gZXh0ZW5kaW5nIHNpbmNlIGl0IG1ha2VzIGl0
IGVhc2llciB0byByZS10YWcgdGhlIHZhbHVlIGluIHRoZSBzbG93IGNhc2UuCisgICAgICAgICAg
ICB6ZXJvRXh0ZW5kMzJUb1B0cihYODY6OmVkeCwgWDg2OjplZHgpOworI2Vsc2UKICAgICAgICAg
ICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVkeCk7CisjZW5kaWYKICAgICAgICAgICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChYODY6OmVheCk7CiAgICAgICAgICAgICBhZGRT
bG93Q2FzZShqbmVQdHIoQWRkcmVzcyhYODY6OmVheCksIEltbVB0cihtX2ludGVycHJldGVyLT5t
X2pzQXJyYXlWcHRyKSkpOwogCkBAIC01OTEsNyArNjExLDEyIEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBYODY6OmVheCwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgWDg2OjplZHgp
OwogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWR4KTsKKyNp
ZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICAgICAgLy8gU2VlIGNvbW1lbnQg
aW4gb3BfZ2V0X2J5X3ZhbC4KKyAgICAgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKFg4Njo6ZWR4
LCBYODY6OmVkeCk7CisjZWxzZQogICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4
Njo6ZWR4KTsKKyNlbmRpZgogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGpuZVB0cihBZGRyZXNzKFg4Njo6
ZWF4KSwgSW1tUHRyKG1faW50ZXJwcmV0ZXItPm1fanNBcnJheVZwdHIpKSk7CiAKQEAgLTYxOSw3
ICs2NDQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IFg4Njo6ZWF4KTsKIAogICAgICAgICAgICAgSnVtcCBpc1plcm8gPSBqZVB0cihYODY6OmVheCwg
SW1tUHRyKEpTVmFsdWVQdHI6OmVuY29kZShKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSkp
OwotICAgICAgICAgICAgYWRkSnVtcChqbnozMihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6
OlRhZ0JpdFR5cGVJbnRlZ2VyKSksIHRhcmdldCArIDIpOworICAgICAgICAgICAgYWRkSnVtcChl
bWl0SnVtcElmSW1tTnVtKFg4Njo6ZWF4KSwgdGFyZ2V0ICsgMik7CiAKICAgICAgICAgICAgIGFk
ZEp1bXAoamVQdHIoWDg2OjplYXgsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUoanNCb29sZWFu
KHRydWUpKSkpLCB0YXJnZXQgKyAyKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGpuZVB0cihY
ODY6OmVheCwgSW1tUHRyKEpTVmFsdWVQdHI6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKSkpKTsK
QEAgLTY5MSwyMCArNzE2LDI1IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CiAg
ICAgICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIFg4Njo6ZWF4KTsKICAg
ICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwotICAg
ICAgICAgICAgICAgIGFkZEp1bXAoamdlUHRyKFg4Njo6ZWF4LCBJbW1QdHIoSlNWYWx1ZVB0cjo6
ZW5jb2RlKGdldENvbnN0YW50T3BlcmFuZChvcDIpKSkpLCB0YXJnZXQgKyAzKTsKKyNpZiBVU0Uo
QUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICAgICAgICAgIGludDMyX3Qgb3AyaW1tID0g
SlNJbW1lZGlhdGU6OmludFZhbHVlKGdldENvbnN0YW50T3BlcmFuZChvcDIpKTsKKyNlbHNlCisg
ICAgICAgICAgICAgICAgaW50MzJfdCBvcDJpbW0gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0lt
bWVkaWF0ZTo6cmF3VmFsdWUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpKTsKKyNlbmRpZgorICAg
ICAgICAgICAgICAgIGFkZEp1bXAoamdlMzIoWDg2OjplYXgsIEltbTMyKG9wMmltbSkpLCB0YXJn
ZXQgKyAzKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcnMob3AxLCBYODY6OmVheCwgb3AyLCBYODY6OmVkeCk7CiAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKICAgICAgICAgICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplZHgpOwotICAgICAgICAgICAg
ICAgIGFkZEp1bXAoamdlUHRyKFg4Njo6ZWF4LCBYODY6OmVkeCksIHRhcmdldCArIDMpOworICAg
ICAgICAgICAgICAgIGFkZEp1bXAoamdlMzIoWDg2OjplYXgsIFg4Njo6ZWR4KSwgdGFyZ2V0ICsg
Myk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9qbmxlc3MpOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CiAgICAgICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsK
LSAgICAgICAgICAgIHhvclB0cihJbW0zMihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sKSwg
WDg2OjplYXgpOwotICAgICAgICAgICAgYWRkU2xvd0Nhc2Uoam56MzIoWDg2OjplYXgsIEltbTMy
KEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZU1hc2spKSk7Ci0gICAgICAgICAgICB4b3JQdHIoSW1t
MzIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlQm9vbCB8IEpTSW1tZWRpYXRlOjpFeHRlbmRlZFBh
eWxvYWRCaXRCb29sVmFsdWUpLCBYODY6OmVheCk7CisgICAgICAgICAgICB4b3JQdHIoSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlQm9vbCkpLCBYODY6
OmVheCk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShqbnpQdHIoWDg2OjplYXgsIEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KH5KU0ltbWVkaWF0ZTo6RXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZh
bHVlKSkpKTsKKyAgICAgICAgICAgIHhvclB0cihJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sIHwgSlNJbW1lZGlhdGU6OkV4dGVuZGVkUGF5bG9h
ZEJpdEJvb2xWYWx1ZSkpLCBYODY6OmVheCk7CiAgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3Bfbm90KTsKICAgICAgICAgfQpAQCAtNzEzLDcgKzc0Myw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgWDg2OjplYXgpOwogCiAgICAg
ICAgICAgICBhZGRKdW1wKGplUHRyKFg4Njo6ZWF4LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2Rl
KEpTSW1tZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkpKSksIHRhcmdldCArIDIpOwotICAgICAgICAg
ICAgSnVtcCBpc05vblplcm8gPSBqbnozMihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRh
Z0JpdFR5cGVJbnRlZ2VyKSk7CisgICAgICAgICAgICBKdW1wIGlzTm9uWmVybyA9IGVtaXRKdW1w
SWZJbW1OdW0oWDg2OjplYXgpOwogCiAgICAgICAgICAgICBhZGRKdW1wKGplUHRyKFg4Njo6ZWF4
LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSksIHRhcmdldCAr
IDIpOwogICAgICAgICAgICAgYWRkU2xvd0Nhc2Uoam5lUHRyKFg4Njo6ZWF4LCBJbW1QdHIoSlNW
YWx1ZVB0cjo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CkBAIC04MDYsNyArODM2LDEyIEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgY2FzZSBvcF9iaXRu
b3Q6IHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgWDg2OjplYXgpOwogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIHhvclB0cihJbW0zMih+SlNJbW1l
ZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyKSwgWDg2OjplYXgpOworI2lmIFVTRShBTFRFUk5BVEVf
SlNJTU1FRElBVEUpCisgICAgICAgICAgICBub3QzMihYODY6OmVheCk7CisgICAgICAgICAgICBl
bWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4LCBYODY6OmVheCk7CisjZWxzZQor
ICAgICAgICAgICAgeG9yUHRyKEltbTMyKH5KU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpLCBY
ODY6OmVheCk7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9iaXRub3QpOwogICAgICAgICB9CkBAIC04MzQsNyArODY5LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBYODY6OmVheCk7CiAKICAgICAgICAgICAg
IEp1bXAgaXNaZXJvID0gamVQdHIoWDg2OjplYXgsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUo
SlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSkpKTsKLSAgICAgICAgICAgIGFkZEp1bXAoam56
MzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlcikpLCB0YXJn
ZXQgKyAyKTsKKyAgICAgICAgICAgIGFkZEp1bXAoZW1pdEp1bXBJZkltbU51bShYODY6OmVheCks
IHRhcmdldCArIDIpOwogCiAgICAgICAgICAgICBhZGRKdW1wKGplUHRyKFg4Njo6ZWF4LCBJbW1Q
dHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSwgdGFyZ2V0ICsgMik7CiAg
ICAgICAgICAgICBhZGRTbG93Q2FzZShqbmVQdHIoWDg2OjplYXgsIEltbVB0cihKU1ZhbHVlUHRy
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpKSk7CkBAIC04NjIsNyArODk3LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgWDg2OjplYXgsIGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEltbU51bXMoWDg2OjplYXgsIFg4Njo6ZWR4LCBYODY6OmVjeCk7CiAg
ICAgICAgICAgICB4b3JQdHIoWDg2OjplZHgsIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRG
YXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0RmFzdEFy
aXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplYXgsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9iaXR4b3IpOwogICAgICAgICB9CkBAIC05NDUsNyArOTgw
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgaW50
IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCBYODY6OmVheCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIEp1bXAgd2FzSW1tZWRpYXRlID0gam56MzIoWDg2OjplYXgsIEltbTMyKEpT
SW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlcikpOworICAgICAgICAgICAgSnVtcCB3YXNJbW1l
ZGlhdGUgPSBlbWl0SnVtcElmSW1tTnVtKFg4Njo6ZWF4KTsKIAogICAgICAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKFg4Njo6ZWF4LCBzcmNWUmVnKTsKICAgICAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhYODY6OmVheCwgRklFTERfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUp
KSwgWDg2OjplY3gpOwpAQCAtMTI1Myw3ICsxMjg4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIEp1bXAgbm90SW1tID0gZ2V0U2xvd0Nhc2UoaXRl
cik7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7Ci0gICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4
Njo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2Ojpl
ZHgsIFg4Njo6ZWR4KTsKICAgICAgICAgICAgIG5vdEltbS5saW5rKHRoaXMpOwogICAgICAgICAg
ICAgZW1pdFB1dEpJVFN0dWJBcmcoWDg2OjplYXgsIDEpOwogICAgICAgICAgICAgZW1pdFB1dEpJ
VFN0dWJBcmcoWDg2OjplZHgsIDIpOwpAQCAtMTM0Miw3ICsxMzc3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIEp1bXAgbm90SW1tID0gZ2V0U2xv
d0Nhc2UoaXRlcik7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1O
b0NoZWNrKFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hl
Y2soWDg2OjplZHgsIFg4Njo6ZWR4KTsKICAgICAgICAgICAgIG5vdEltbS5saW5rKHRoaXMpOwog
ICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kLCBYODY6OmVjeCk7CiAgICAgICAgICAgICBlbWl0UHV0SklUU3R1YkFyZyhYODY6
OmVheCwgMSk7CkBAIC0xMzk1LDcgKzE0MzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CiAgICAgICAgICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgICAgICAgICB4b3JQdHIoSW1tMzIoSlNJbW1lZGlh
dGU6OkZ1bGxUYWdUeXBlQm9vbCksIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIHhvclB0cihJbW0z
MihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sKSksIFg4
Njo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnKFg4Njo6ZWF4LCAxKTsKICAg
ICAgICAgICAgIGVtaXRDVElDYWxsKEludGVycHJldGVyOjpjdGlfb3Bfbm90KTsKICAgICAgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CkBAIC0xNjk2LDggKzE3MzEsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNo
aW5lVHJhbXBvCiAKICAgICBKdW1wIGFycmF5X2ZhaWx1cmVDYXNlczMgPSBqYTMyKFg4Njo6ZWF4
LCBJbW0zMihKU0ltbWVkaWF0ZTo6bWF4SW1tZWRpYXRlSW50KSk7CiAKLSAgICAvLyBYODY6OmVh
eCBjb250YWlucyBhIDY0IGJpdCB2YWx1ZSAoaXMgc2lnbmVkLCBpcyB6ZXJvIGV4dGVuZGVkKSBz
byB3ZSBkb24ndCBuZWVkIHNpZ24gZXh0ZW5kIGhlcmUuCi0gICAgZW1pdEZhc3RBcml0aEludFRv
SW1tTm9DaGVjayhYODY6OmVheCk7CisgICAgLy8gWDg2OjplYXggY29udGFpbnMgYSA2NCBiaXQg
dmFsdWUgKGlzIHBvc2l0aXZlLCBpcyB6ZXJvIGV4dGVuZGVkKSBzbyB3ZSBkb24ndCBuZWVkIHNp
Z24gZXh0ZW5kIGhlcmUuCisgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6OmVh
eCwgWDg2OjplYXgpOwogCiAgICAgcmV0KCk7CiAKQEAgLTE3MTQsOCArMTc0OSw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG8KIAogICAgIEp1bXAgc3RyaW5nX2Zh
aWx1cmVDYXNlczMgPSBqYTMyKFg4Njo6ZWF4LCBJbW0zMihKU0ltbWVkaWF0ZTo6bWF4SW1tZWRp
YXRlSW50KSk7CiAKLSAgICAvLyBYODY6OmVheCBjb250YWlucyBhIDY0IGJpdCB2YWx1ZSAoaXMg
c2lnbmVkLCBpcyB6ZXJvIGV4dGVuZGVkKSBzbyB3ZSBkb24ndCBuZWVkIHNpZ24gZXh0ZW5kIGhl
cmUuCi0gICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6OmVheCk7CisgICAgLy8g
WDg2OjplYXggY29udGFpbnMgYSA2NCBiaXQgdmFsdWUgKGlzIHBvc2l0aXZlLCBpcyB6ZXJvIGV4
dGVuZGVkKSBzbyB3ZSBkb24ndCBuZWVkIHNpZ24gZXh0ZW5kIGhlcmUuCisgICAgZW1pdEZhc3RB
cml0aEludFRvSW1tTm9DaGVjayhYODY6OmVheCwgWDg2OjplYXgpOwogICAgIAogICAgIHJldCgp
OwogI2VuZGlmCkluZGV4OiBqaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaml0L0pJVC5oCShyZXZp
c2lvbiAzOTczNikKKysrIGppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDEz
IEBACiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotI2RlZmluZSBTVFVCX0FSR1NfY29kZSAweDBDCi0jZGVmaW5lIFNUVUJfQVJHU19yZWdp
c3RlckZpbGUgMHgwRAotI2RlZmluZSBTVFVCX0FSR1NfY2FsbEZyYW1lIDB4MEUKLSNkZWZpbmUg
U1RVQl9BUkdTX2V4Y2VwdGlvbiAweDBGCi0jZGVmaW5lIFNUVUJfQVJHU19wcm9maWxlclJlZmVy
ZW5jZSAweDEwCi0jZGVmaW5lIFNUVUJfQVJHU19nbG9iYWxEYXRhIDB4MTEKKyNkZWZpbmUgU1RV
Ql9BUkdTX29mZnNldCAweDBDCisjZGVmaW5lIFNUVUJfQVJHU19jb2RlIChTVFVCX0FSR1Nfb2Zm
c2V0KQorI2RlZmluZSBTVFVCX0FSR1NfcmVnaXN0ZXJGaWxlIChTVFVCX0FSR1Nfb2Zmc2V0ICsg
MSkKKyNkZWZpbmUgU1RVQl9BUkdTX2NhbGxGcmFtZSAoU1RVQl9BUkdTX29mZnNldCArIDIpCisj
ZGVmaW5lIFNUVUJfQVJHU19leGNlcHRpb24gKFNUVUJfQVJHU19vZmZzZXQgKyAzKQorI2RlZmlu
ZSBTVFVCX0FSR1NfcHJvZmlsZXJSZWZlcmVuY2UgKFNUVUJfQVJHU19vZmZzZXQgKyA0KQorI2Rl
ZmluZSBTVFVCX0FSR1NfZ2xvYmFsRGF0YSAoU1RVQl9BUkdTX29mZnNldCArIDUpCiAKICNkZWZp
bmUgQVJHX2NhbGxGcmFtZSBzdGF0aWNfY2FzdDxDYWxsRnJhbWUqPihBUkdTW1NUVUJfQVJHU19j
YWxsRnJhbWVdKQogI2RlZmluZSBBUkdfcmVnaXN0ZXJGaWxlIHN0YXRpY19jYXN0PFJlZ2lzdGVy
RmlsZSo+KEFSR1NbU1RVQl9BUkdTX3JlZ2lzdGVyRmlsZV0pCkBAIC00MzUsNyArNDM2LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWVQdHIgZ2V0Q29uc3RhbnRPcGVyYW5kKHVu
c2lnbmVkIHNyYyk7CiAgICAgICAgIGludDMyX3QgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRl
SW50KHVuc2lnbmVkIHNyYyk7CiAgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlh
dGVJbnQodW5zaWduZWQgc3JjKTsKLSAgICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFudDMxQml0
SW1tZWRpYXRlSW50KHVuc2lnbmVkIHNyYyk7CiAKICAgICAgICAgSnVtcCBlbWl0SnVtcElmSlND
ZWxsKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbChS
ZWdpc3RlcklEKTsKQEAgLTQ1NCwxNiArNDU0LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAgICAgICAgIHZvaWQgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYsIGludCB2UmVnKTsKIAorICAgICAgICBKSVQ6Okp1bXAgZW1pdEp1
bXBJZkltbU51bShSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbW1OdW0oUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tTnVtcyhSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKIAogICAgICAgICBK
dW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7
CiAKKyNpZiAhVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKICAgICAgICAgdm9pZCBlbWl0RmFz
dEFyaXRoRGVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEZhc3RB
cml0aERlVGFnSW1tZWRpYXRlSnVtcElmWmVybyhSZWdpc3RlcklEKTsKLSAgICAgICAgdm9pZCBl
bWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCk7CisjZW5kaWYKKyAgICAgICAg
dm9pZCBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCk7CiAgICAgICAgIHZvaWQgZW1pdEZhc3RBcml0aEltbVRvSW50KFJlZ2lzdGVySUQp
OwotICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVnaXN0ZXJJRCk7
CisgICAgICAgIHZvaWQgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KTsKIAogICAgICAgICB2b2lkIGVtaXRUYWdBc0Jvb2xJbW1lZGlh
dGUoUmVnaXN0ZXJJRCByZWcpOwogCkluZGV4OiBqaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAzOTczNikKKysrIGppdC9K
SVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTMgKzYwLDExIEBAIHZvaWQg
SklUOjpjb21waWxlRmFzdEFyaXRoX29wX2xzaGlmdCh1bnMKICAgICBhbmQzMihJbW0zMigweDFm
KSwgWDg2OjplY3gpOwogI2VuZGlmCiAgICAgbHNoaWZ0MzIoWDg2OjplY3gsIFg4Njo6ZWF4KTsK
LSNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0lt
bU5vQ2hlY2soWDg2OjplYXgpOwotI2Vsc2UKKyNpZiAhVVNFKEFMVEVSTkFURV9KU0lNTUVESUFU
RSkKICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKFg4Njo6ZWF4LCBYODY6OmVheCkpOwogICAgIHNp
Z25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6OmVheCk7Ci0gICAgZW1pdEZhc3RBcml0aFJl
VGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsKICNlbmRpZgorICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0lt
bWVkaWF0ZShYODY6OmVheCwgWDg2OjplYXgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0KTsKIH0KIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoU2xvd19vcF9sc2hpZnQodW5z
aWduZWQgcmVzdWx0LCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTk3LDcgKzk1LDExIEBAIHZvaWQgSklUOjpjb21w
aWxlRmFzdEFyaXRoX29wX3JzaGlmdCh1bnMKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihvcDEsIFg4Njo6ZWF4KTsKICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4
Njo6ZWF4KTsKICAgICAgICAgLy8gTWFzayB3aXRoIDB4MWYgYXMgcGVyIGVjbWEtMjYyIDExLjcu
MiBzdGVwIDcuCisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKKyAgICAgICAgcnNoaWZ0
MzIoSW1tMzIoSlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZFVJbnQzMihnZXRDb25zdGFudE9wZXJh
bmQob3AyKSkgJiAweDFmKSwgWDg2OjplYXgpOworI2Vsc2UKICAgICAgICAgcnNoaWZ0UHRyKElt
bTMyKEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRVSW50MzIoZ2V0Q29uc3RhbnRPcGVyYW5kKG9w
MikpICYgMHgxZiksIFg4Njo6ZWF4KTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9wMSwgWDg2OjplYXgsIG9wMiwgWDg2OjplY3gpOwogICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwpAQCAtMTA4LDkgKzEx
MCwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9yc2hpZnQodW5zCiAgICAgICAg
IC8vIE9uIDMyLWJpdCB4ODYgdGhpcyBpcyBub3QgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgc2hpZnQg
YW5vdW50IGlzIGltcGxpY2l0bHkgbWFza2VkIGluIHRoZSBpbnN0cnVjdGlvbi4KICAgICAgICAg
YW5kMzIoSW1tMzIoMHgxZiksIFg4Njo6ZWN4KTsKICNlbmRpZgorI2lmIFVTRShBTFRFUk5BVEVf
SlNJTU1FRElBVEUpCisgICAgICAgIHJzaGlmdDMyKFg4Njo6ZWN4LCBYODY6OmVheCk7CisjZWxz
ZQogICAgICAgICByc2hpZnRQdHIoWDg2OjplY3gsIFg4Njo6ZWF4KTsKKyNlbmRpZgogICAgIH0K
LSAgICBvclB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIpLCBYODY6OmVh
eCk7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKKyAgICBlbWl0RmFzdEFyaXRoSW50
VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4LCBYODY6OmVheCk7CisjZWxzZQorICAgIG9yUHRyKEltbTMy
KEpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlciksIFg4Njo6ZWF4KTsKKyNlbmRpZgogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KIHZvaWQgSklUOjpjb21waWxlRmFzdEFy
aXRoU2xvd19vcF9yc2hpZnQodW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCwgdW5zaWduZWQgb3Ay
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTMwLDE0ICsxNDAs
MjggQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhTbG93X29wX3JzaGlmdAogCiB2b2lkIEpJ
VDo6Y29tcGlsZUZhc3RBcml0aF9vcF9iaXRhbmQodW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCBv
cDEsIHVuc2lnbmVkIG9wMikKIHsKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnQzMUJpdEltbWVk
aWF0ZUludChvcDEpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9w
MSkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIFg4Njo6ZWF4KTsKICAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKKyNpZiBVU0UoQUxU
RVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICBpbnQzMl90IGltbSA9IEpTSW1tZWRpYXRlOjpp
bnRWYWx1ZShnZXRDb25zdGFudE9wZXJhbmQob3AxKSk7CisgICAgICAgIGFuZFB0cihJbW0zMihp
bW0pLCBYODY6OmVheCk7CisgICAgICAgIGlmIChpbW0gPj0gMCkKKyAgICAgICAgICAgIGVtaXRG
YXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyNlbHNlCiAgICAg
ICAgIGFuZFB0cihJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6cmF3VmFs
dWUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkpKSksIFg4Njo6ZWF4KTsKLSAgICB9IGVsc2UgaWYg
KGlzT3BlcmFuZENvbnN0YW50MzFCaXRJbW1lZGlhdGVJbnQob3AyKSkgeworI2VuZGlmCisgICAg
fSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CiAgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBYODY6OmVheCk7CiAgICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVE
SUFURSkKKyAgICAgICAgaW50MzJfdCBpbW0gPSBKU0ltbWVkaWF0ZTo6aW50VmFsdWUoZ2V0Q29u
c3RhbnRPcGVyYW5kKG9wMikpOworICAgICAgICBhbmRQdHIoSW1tMzIoaW1tKSwgWDg2OjplYXgp
OworICAgICAgICBpZiAoaW1tID49IDApCisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9J
bW1Ob0NoZWNrKFg4Njo6ZWF4LCBYODY6OmVheCk7CisjZWxzZQogICAgICAgICBhbmRQdHIoSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNJbW1lZGlhdGU6OnJhd1ZhbHVlKGdldENvbnN0YW50
T3BlcmFuZChvcDIpKSkpLCBYODY6OmVheCk7CisjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhvcDEsIFg4Njo6ZWF4LCBvcDIsIFg4Njo6ZWR4KTsK
ICAgICAgICAgYW5kUHRyKFg4Njo6ZWR4LCBYODY6OmVheCk7CkBAIC0xNDgsMTAgKzE3MiwxMCBA
QCB2b2lkIEpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9iaXRhbmQodW5zCiB2b2lkIEpJVDo6Y29t
cGlsZUZhc3RBcml0aFNsb3dfb3BfYml0YW5kKHVuc2lnbmVkIHJlc3VsdCwgdW5zaWduZWQgb3Ax
LCB1bnNpZ25lZCBvcDIsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGlmIChpc09wZXJhbmRDb25zdGFudDMxQml0
SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQob3AxKSkgewogICAgICAgICBlbWl0UHV0SklUU3R1YkFyZ0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
b3AxLCAxLCBYODY6OmVjeCk7CiAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnKFg4Njo6ZWF4LCAy
KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50MzFCaXRJbW1lZGlhdGVJbnQob3Ay
KSkgeworICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkg
ewogICAgICAgICBlbWl0UHV0SklUU3R1YkFyZyhYODY6OmVheCwgMSk7CiAgICAgICAgIGVtaXRQ
dXRKSVRTdHViQXJnRnJvbVZpcnR1YWxSZWdpc3RlcihvcDIsIDIsIFg4Njo6ZWN4KTsKICAgICB9
IGVsc2UgewpAQCAtMTY4LDE5ICsxOTIsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhf
b3BfbW9kKHVuc2lnbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWN4KTsKICNpZiBVU0UoQUxU
RVJOQVRFX0pTSU1NRURJQVRFKQotICAgIGFkZFNsb3dDYXNlKGplUHRyKFg4Njo6ZWN4LCBJbW1Q
dHIoSlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSkpKTsKLSAgICBlbWl0RmFzdEFyaXRoSW1t
VG9JbnQoWDg2OjplYXgpOwotICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVjeCk7Cisg
ICAgYWRkU2xvd0Nhc2UoamVQdHIoWDg2OjplY3gsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUo
SlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSkpKSk7CiAgICAgbW9kMzIoWDg2OjplY3gsIFg4
Njo6ZWF4LCBYODY6OmVkeCk7Ci0gICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6
OmVkeCk7CiAjZWxzZQogICAgIGVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7
CiAgICAgYWRkU2xvd0Nhc2UoZW1pdEZhc3RBcml0aERlVGFnSW1tZWRpYXRlSnVtcElmWmVybyhY
ODY6OmVjeCkpOwogICAgIG1vZDMyKFg4Njo6ZWN4LCBYODY6OmVheCwgWDg2OjplZHgpOwogICAg
IHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWR4LCBYODY6OmVkeCk7Ci0gICAgZW1pdEZhc3RBcml0
aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWR4KTsKICNlbmRpZgotICAgIG1vdmUoWDg2OjplZHgsIFg4
Njo6ZWF4KTsKKyAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplZHgsIFg4Njo6
ZWF4KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7CiB9CiB2b2lkIEpJVDo6
Y29tcGlsZUZhc3RBcml0aFNsb3dfb3BfbW9kKHVuc2lnbmVkIHJlc3VsdCwgdW5zaWduZWQsIHVu
c2lnbmVkLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTkzLDgg
KzIxMyw4IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoU2xvd19vcF9tb2QodW4KICAgICBK
dW1wIG5vdEltbTEgPSBnZXRTbG93Q2FzZShpdGVyKTsKICAgICBKdW1wIG5vdEltbTIgPSBnZXRT
bG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgZW1pdEZhc3RBcml0
aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsKLSAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlh
dGUoWDg2OjplY3gpOworICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCwg
WDg2OjplYXgpOworICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVjeCwgWDg2
OjplY3gpOwogICAgIG5vdEltbTEubGluayh0aGlzKTsKICAgICBub3RJbW0yLmxpbmsodGhpcyk7
CiAjZW5kaWYKQEAgLTIxNiw5ICsyMzYsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZUZhc3RBcml0aF9v
cF9hZGQoSW5zdHJ1CiAjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKICAgICAgICAgLy8g
RklYTUU6IGludmVzdGlnYXRlIHBlcmZvcm1pbmcgYSAzMS1iaXQgYWRkIGhlcmUgKGNhbiB3ZSBw
cmVzZXJ2ZSB1cHBlciBiaXQgJiBkZXRlY3Qgb3ZlcmZsb3cgZnJvbSBsb3cgd29yZCB0byBoaWdo
PykKICAgICAgICAgLy8gICAgICAgIChvciwgZGV0ZWN0IGNhcnJ5PyAtIGlmIGNvbnN0IGlzIHBv
c2l0aXZlLCB3aWxsIG9ubHkgY2Fycnkgd2hlbiBvdmVyZmxvd2luZyBmcm9tIG5lZ2F0aXZlIHRv
IHBvc2l0aXZlPykKLSAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWF4KTsKICAg
ICAgICAgYWRkU2xvd0Nhc2Uoam9BZGQzMihJbW0zMihnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlh
dGVJbnQob3AxKSksIFg4Njo6ZWF4KSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5v
Q2hlY2soWDg2OjplYXgpOworICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4
Njo6ZWF4LCBYODY6OmVheCk7CiAjZWxzZQogICAgICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKElt
bTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDEpIDw8IEpTSW1tZWRpYXRlOjpJ
bnRlZ2VyUGF5bG9hZFNoaWZ0KSwgWDg2OjplYXgpKTsKICAgICAgICAgc2lnbkV4dGVuZDMyVG9Q
dHIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKQEAgLTIzMCw3ICsyNDksNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZUZhc3RBcml0aF9vcF9hZGQoSW5zdHJ1CiAjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFU
RSkKICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWF4KTsKICAgICAgICAgYWRk
U2xvd0Nhc2Uoam9BZGQzMihJbW0zMihnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3Ay
KSksIFg4Njo6ZWF4KSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2
OjplYXgpOworICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4LCBY
ODY6OmVheCk7CiAjZWxzZQogICAgICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKEltbTMyKGdldENv
bnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpIDw8IEpTSW1tZWRpYXRlOjpJbnRlZ2VyUGF5
bG9hZFNoaWZ0KSwgWDg2OjplYXgpKTsKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2Ojpl
YXgsIFg4Njo6ZWF4KTsKQEAgLTMwNSwyOSArMzI0LDI1IEBAIHZvaWQgSklUOjpjb21waWxlRmFz
dEFyaXRoX29wX211bChJbnN0cnUKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIs
IFg4Njo6ZWF4KTsKICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4
KTsKICNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQotICAgICAgICBlbWl0RmFzdEFyaXRo
SW1tVG9JbnQoWDg2OjplYXgpOwogICAgICAgICBhZGRTbG93Q2FzZShqb011bDMyKEltbTMyKHZh
bHVlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0lt
bU5vQ2hlY2soWDg2OjplYXgpOwogI2Vsc2UKICAgICAgICAgZW1pdEZhc3RBcml0aERlVGFnSW1t
ZWRpYXRlKFg4Njo6ZWF4KTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoam9NdWwzMihJbW0zMih2YWx1
ZSksIFg4Njo6ZWF4LCBYODY6OmVheCkpOwogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihYODY6
OmVheCwgWDg2OjplYXgpOwotICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoWDg2
OjplYXgpOwogI2VuZGlmCisgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6
OmVheCwgWDg2OjplYXgpOwogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7
CiAgICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpICYmICgo
dmFsdWUgPSBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSkgPiAwKSkgewogICAg
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgWDg2OjplYXgpOwogICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwogI2lmIFVTRShBTFRFUk5BVEVfSlNJ
TU1FRElBVEUpCi0gICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVheCk7CiAgICAg
ICAgIGFkZFNsb3dDYXNlKGpvTXVsMzIoSW1tMzIodmFsdWUpLCBYODY6OmVheCwgWDg2OjplYXgp
KTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6OmVheCk7CiAjZWxz
ZQogICAgICAgICBlbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOwogICAgICAg
ICBhZGRTbG93Q2FzZShqb011bDMyKEltbTMyKHZhbHVlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KSk7
CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6OmVheCk7Ci0gICAgICAg
IGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7CiAjZW5kaWYKKyAgICAgICAg
ZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4LCBYODY6OmVheCk7CiAgICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29t
cGlsZUJpbmFyeUFyaXRoT3Aob3BfbXVsLCByZXN1bHQsIG9wMSwgb3AyLCBPcGVyYW5kVHlwZXM6
OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOwpAQCAtMzU3LDkgKzM3
Miw4IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoX29wX3Bvc3RfaW5jKHUKICAgICBtb3Zl
KFg4Njo6ZWF4LCBYODY6OmVkeCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4
Njo6ZWF4KTsKICNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQotICAgIGVtaXRGYXN0QXJp
dGhJbW1Ub0ludChYODY6OmVkeCk7CiAgICAgYWRkU2xvd0Nhc2Uoam9BZGQzMihJbW0zMigxKSwg
WDg2OjplZHgpKTsKLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWR4KTsK
KyAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWR4LCBYODY6OmVkeCk7CiAj
ZWxzZQogICAgIGFkZFNsb3dDYXNlKGpvQWRkMzIoSW1tMzIoMSA8PCBKU0ltbWVkaWF0ZTo6SW50
ZWdlclBheWxvYWRTaGlmdCksIFg4Njo6ZWR4KSk7CiAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2
OjplZHgsIFg4Njo6ZWR4KTsKQEAgLTM4Myw5ICszOTcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZUZh
c3RBcml0aF9vcF9wb3N0X2RlYyh1CiAgICAgbW92ZShYODY6OmVheCwgWDg2OjplZHgpOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CiAjaWYgVVNFKEFMVEVSTkFU
RV9KU0lNTUVESUFURSkKLSAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplZHgpOwogICAg
IGFkZFNsb3dDYXNlKGpvU3ViMzIoSW1tMzIoMSksIFg4Njo6ZWR4KSk7Ci0gICAgZW1pdEZhc3RB
cml0aEludFRvSW1tTm9DaGVjayhYODY6OmVkeCk7CisgICAgZW1pdEZhc3RBcml0aEludFRvSW1t
Tm9DaGVjayhYODY6OmVkeCwgWDg2OjplZHgpOwogI2Vsc2UKICAgICBhZGRTbG93Q2FzZShqb1N1
YjMyKEltbTMyKDEgPDwgSlNJbW1lZGlhdGU6OkludGVnZXJQYXlsb2FkU2hpZnQpLCBYODY6OmVk
eCkpOwogICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWR4LCBYODY6OmVkeCk7CkBAIC00MDgs
MTAgKzQyMSw5IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoX29wX3ByZV9pbmModW4KICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgWDg2OjplYXgpOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CiAjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVE
SUFURSkKLSAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplYXgpOwogICAgIC8vIEZJWE1F
OiBDb3VsZCBhZGQgcHRyICYgc3BlY2lmeSBpbnQ2NDsgbm8gbmVlZCB0byByZS1zaWduLWV4dGVu
ZD8KICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKEltbTMyKDEpLCBYODY6OmVheCkpOwotICAgIGVt
aXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplYXgpOworICAgIGVtaXRGYXN0QXJpdGhJ
bnRUb0ltbU5vQ2hlY2soWDg2OjplYXgsIFg4Njo6ZWF4KTsKICNlbHNlCiAgICAgYWRkU2xvd0Nh
c2Uoam9BZGQzMihJbW0zMigxIDw8IEpTSW1tZWRpYXRlOjpJbnRlZ2VyUGF5bG9hZFNoaWZ0KSwg
WDg2OjplYXgpKTsKICAgICBzaWduRXh0ZW5kMzJUb1B0cihYODY6OmVheCwgWDg2OjplYXgpOwpA
QCAtNDM0LDkgKzQ0Niw4IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoX29wX3ByZV9kZWMo
dW4KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgWDg2OjplYXgpOwogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CiAjaWYgVVNFKEFMVEVSTkFURV9K
U0lNTUVESUFURSkKLSAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplYXgpOwogICAgIGFk
ZFNsb3dDYXNlKGpvU3ViMzIoSW1tMzIoMSksIFg4Njo6ZWF4KSk7Ci0gICAgZW1pdEZhc3RBcml0
aEludFRvSW1tTm9DaGVjayhYODY6OmVheCk7CisgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9D
aGVjayhYODY6OmVheCwgWDg2OjplYXgpOwogI2Vsc2UKICAgICBhZGRTbG93Q2FzZShqb1N1YjMy
KEltbTMyKDEgPDwgSlNJbW1lZGlhdGU6OkludGVnZXJQYXlsb2FkU2hpZnQpLCBYODY6OmVheCkp
OwogICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6OmVheCk7CkBAIC01NTUsOSAr
NTY2LDcgQEAgdm9pZCBKSVQ6OnB1dERvdWJsZVJlc3VsdFRvSlNOdW1iZXJDZWxsTwogICAgIF9f
IGNtcGxfaXIoMHg4MDAwLCB0ZW1wUmVnMik7CiAgICAgX18gbGluayhfXyBqZSgpLCByZXN1bHRM
b29rZWRMaWtlSW1tQnV0QWN0dWFsbHlJc250KTsgLy8gQWN0dWFsbHkgd2FzIC0wCiAgICAgLy8g
WWVzIGl0IHJlYWxseSByZWFsbHkgcmVhbGx5IGlzIHJlcHJlc2VudGFibGUgYXMgYSBKU0ltbWVk
aWF0ZS4KLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHRlbXBSZWcxKTsKLSAgICBp
ZiAodGVtcFJlZzEgIT0gWDg2OjplYXgpCi0gICAgICAgIF9fIG1vdmxfcnIodGVtcFJlZzEsIFg4
Njo6ZWF4KTsKKyAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHRlbXBSZWcxLCBYODY6
OmVheCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC01NzUsNyAr
NTg0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIAogICAgICAg
ICBBU1NFUlQodHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKTsKIAogICAgICAgICAvLyBD
aGVjayBvcDIgaXMgYSBudW1iZXIKLSAgICAgICAgX18gdGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6
VGFnQml0VHlwZUludGVnZXIsIFg4Njo6ZWR4KTsKKyAgICAgICAgX18gdGVzdGxfaTMycihKU0lt
bWVkaWF0ZTo6VGFnVHlwZUludGVnZXIsIFg4Njo6ZWR4KTsKICAgICAgICAgSm1wU3JjIG9wMmlt
bSA9IF9fIGpuZSgpOwogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051
bWJlcigpKSB7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoWDg2Ojpl
ZHgsIHNyYzIpOwpAQCAtNTg1LDcgKzU5NCw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJp
dGhPcChPcGNvZGVJRCAKIAogICAgICAgICAvLyAoMSkgSW4gdGhpcyBjYXNlIHNyYzIgaXMgYSBy
ZXVzYWJsZSBudW1iZXIgY2VsbC4KICAgICAgICAgLy8gICAgIFNsb3cgY2FzZSBpZiBzcmMxIGlz
IG5vdCBhIG51bWJlciB0eXBlLgotICAgICAgICBfXyB0ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpU
YWdCaXRUeXBlSW50ZWdlciwgWDg2OjplYXgpOworICAgICAgICBfXyB0ZXN0bF9pMzJyKEpTSW1t
ZWRpYXRlOjpUYWdUeXBlSW50ZWdlciwgWDg2OjplYXgpOwogICAgICAgICBKbXBTcmMgb3AxaW1t
ID0gX18gam5lKCk7CiAgICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1i
ZXIoKSkgewogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFg4Njo6ZWF4
LCBzcmMxKTsKQEAgLTYyMiw3ICs2MzEsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRo
T3AoT3Bjb2RlSUQgCiAgICAgICAgIEFTU0VSVCh0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIo
KSk7CiAKICAgICAgICAgLy8gQ2hlY2sgb3AxIGlzIGEgbnVtYmVyCi0gICAgICAgIF9fIHRlc3Rs
X2kzMnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCBYODY6OmVheCk7CisgICAgICAg
IF9fIHRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyLCBYODY6OmVheCk7CiAg
ICAgICAgIEptcFNyYyBvcDFpbW0gPSBfXyBqbmUoKTsKICAgICAgICAgaWYgKCF0eXBlcy5maXJz
dCgpLmRlZmluaXRlbHlJc051bWJlcigpKSB7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoWDg2OjplYXgsIHNyYzEpOwpAQCAtNjMyLDcgKzY0MSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCAKIAogICAgICAgICAvLyAoMSkgSW4gdGhp
cyBjYXNlIHNyYzEgaXMgYSByZXVzYWJsZSBudW1iZXIgY2VsbC4KICAgICAgICAgLy8gICAgIFNs
b3cgY2FzZSBpZiBzcmMyIGlzIG5vdCBhIG51bWJlciB0eXBlLgotICAgICAgICBfXyB0ZXN0bF9p
MzJyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlciwgWDg2OjplZHgpOworICAgICAgICBf
XyB0ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlciwgWDg2OjplZHgpOwogICAg
ICAgICBKbXBTcmMgb3AyaW1tID0gX18gam5lKCk7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25k
KCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChYODY6OmVkeCwgc3JjMik7CkBAIC02NzksNyArNjg4LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIAogICAgICAgICBfXyBzdWJsX3JyKFg4Njo6
ZWR4LCBYODY6OmVheCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKF9fIGpvKCkpOwogICAgICAgICBz
aWduRXh0ZW5kMzJUb1B0cihYODY6OmVheCwgWDg2OjplYXgpOwotICAgICAgICBlbWl0RmFzdEFy
aXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOworICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJ
bW1lZGlhdGUoWDg2OjplYXgsIFg4Njo6ZWF4KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQob3Bjb2RlSUQgPT0gb3BfbXVsKTsKICAgICAgICAgLy8gY29udmVydCBlYXggJiBlZHggZnJv
bSBKU0ltbWVkaWF0ZXMgdG8gaW50cywgYW5kIGNoZWNrIGlmIGVpdGhlciBhcmUgemVybwpAQCAt
Njk4LDcgKzcwNyw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCAK
ICAgICAgICAgX18gaW11bGxfcnIoWDg2OjplZHgsIFg4Njo6ZWF4KTsKICAgICAgICAgYWRkU2xv
d0Nhc2UoX18gam8oKSk7CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6
OmVheCk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7Cisg
ICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCwgWDg2OjplYXgpOwog
ICAgIH0KICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiAKSW5kZXg6IGppdC9KSVRD
YWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBqaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDM5NzM2KQor
Kysgaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShJbnN0cnVjdAogICAgICAgICBjb21waWxlT3BD
b25zdHJ1Y3RTZXR1cEFyZ3MoaW5zdHJ1Y3Rpb24pOwogCiAgICAgLy8gRmFzdCBjaGVjayBmb3Ig
SlMgZnVuY3Rpb24uCi0gICAgSnVtcCBjYWxsTGlua0ZhaWxOb3RPYmplY3QgPSBqbnozMihYODY6
OmVjeCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ01hc2spKTsKKyAgICBKdW1wIGNhbGxMaW5rRmFp
bE5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwoWDg2OjplY3gpOwogICAgIEp1bXAgY2Fs
bExpbmtGYWlsTm90SlNGdW5jdGlvbiA9IGpuZVB0cihBZGRyZXNzKFg4Njo6ZWN4KSwgSW1tUHRy
KG1faW50ZXJwcmV0ZXItPm1fanNGdW5jdGlvblZwdHIpKTsKIAogICAgIC8vIEZpcnN0LCBpbiB0
aGUgY2FzZSBvZiBhIGNvbnN0cnVjdCwgYWxsb2NhdGUgdGhlIG5ldyBvYmplY3QuCkBAIC0zMDks
NyArMzA5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShJbnN0cnVjdAogICAg
ICAgICBjb21waWxlT3BDb25zdHJ1Y3RTZXR1cEFyZ3MoaW5zdHJ1Y3Rpb24pOwogCiAgICAgLy8g
Q2hlY2sgZm9yIEpTRnVuY3Rpb25zLgotICAgIEp1bXAgaXNOb3RPYmplY3QgPSBqbnpQdHIoWDg2
OjplY3gsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNrKSk7CisgICAgSnVtcCBpc05vdE9iamVj
dCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwoWDg2OjplY3gpOwogICAgIEp1bXAgaXNKU0Z1bmN0aW9u
ID0gamVQdHIoQWRkcmVzcyhYODY6OmVjeCksIEltbVB0cihtX2ludGVycHJldGVyLT5tX2pzRnVu
Y3Rpb25WcHRyKSk7CiAKICAgICAvLyBUaGlzIGhhbmRsZXMgaG9zdCBmdW5jdGlvbnMKSW5kZXg6
IGppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaml0L0pJVElubGluZU1ldGhv
ZHMuaAkocmV2aXNpb24gMzk3MzYpCisrKyBqaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjgsMjQgKzEyOCw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3Bl
cmFuZENvbnN0YW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rlcklu
ZGV4KHNyYykgJiYgSlNJbW1lZGlhdGU6OmlzTnVtYmVyKGdldENvbnN0YW50T3BlcmFuZChzcmMp
KTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnQzMUJpdElt
bWVkaWF0ZUludCh1bnNpZ25lZCBzcmMpCi17Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNDb25z
dGFudFJlZ2lzdGVySW5kZXgoc3JjKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSlNW
YWx1ZVB0ciB2YWx1ZSA9IGdldENvbnN0YW50T3BlcmFuZChzcmMpOwotCi0jaWYgVVNFKEFMVEVS
TkFURV9KU0lNTUVESUFURSkKLSAgICBpZiAoIUpTSW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludDMyX3QgaW1tID0gSlNJbW1lZGlhdGU6
OmludFZhbHVlKHZhbHVlKTsKLSAgICByZXR1cm4gKGltbSA9PSAoKGltbSA8PCAxKSA+PiAxKSk7
Ci0jZWxzZQotICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6aXNOdW1iZXIodmFsdWUpOwotI2VuZGlm
Ci19Ci0KIC8vIGdldCBhcmcgcHV0cyBhbiBhcmcgZnJvbSB0aGUgU0YgcmVnaXN0ZXIgYXJyYXkg
b250byB0aGUgc3RhY2ssIGFzIGFuIGFyZyB0byBhIGNvbnRleHQgdGhyZWFkZWQgZnVuY3Rpb24u
CiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0SklUU3R1YkFyZ0Zyb21WaXJ0dWFsUmVn
aXN0ZXIodW5zaWduZWQgc3JjLCB1bnNpZ25lZCBhcmd1bWVudE51bWJlciwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQogewpAQCAtMjgxLDcgKzI2MywxMSBAQCBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBK
SVQ6OmNoZWNrU3RydWN0CiAKIEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJ
ZkpTQ2VsbChSZWdpc3RlcklEIHJlZykKIHsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRF
KQorICAgIHJldHVybiBqelB0cihyZWcsIEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihK
U0ltbWVkaWF0ZTo6VGFnTWFzaykpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGp6MzIocmVnLCBJbW0z
MihKU0ltbWVkaWF0ZTo6VGFnTWFzaykpOworI2VuZGlmCiB9CiAKIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbChSZWdpc3RlcklEIHJlZykKQEAgLTI5MSw3
ICsyNzcsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZQogCiBB
TFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZOb3RKU0NlbGwoUmVnaXN0ZXJJ
RCByZWcpCiB7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKKyAgICByZXR1cm4gam56
UHRyKHJlZywgSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTSW1tZWRpYXRlOjpUYWdN
YXNrKSkpOworI2Vsc2UKICAgICByZXR1cm4gam56MzIocmVnLCBJbW0zMihKU0ltbWVkaWF0ZTo6
VGFnTWFzaykpOworI2VuZGlmCiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZykKQEAgLTMxMSw0OSArMzAxLDgxIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm8KICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwogfQogCitBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1w
SWZJbW1OdW0oUmVnaXN0ZXJJRCByZWcpCit7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFU
RSkKKyAgICByZXR1cm4gamFlUHRyKHJlZywgSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlcikpKTsKKyNlbHNlCisgICAgcmV0dXJuIGpuejMy
KHJlZywgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSk7CisjZW5kaWYKK30KKwog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFJlZ2lz
dGVySUQgcmVnKQogewotICAgIGFkZFNsb3dDYXNlKGp6MzIocmVnLCBJbW0zMihKU0ltbWVkaWF0
ZTo6VGFnQml0VHlwZUludGVnZXIpKSk7CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkK
KyAgICBhZGRTbG93Q2FzZShqYlB0cihyZWcsIEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQq
PihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpKSkpOworI2Vsc2UKKyAgICBhZGRTbG93Q2Fz
ZShqejMyKHJlZywgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSkpOworI2VuZGlm
CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51
bXMoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIFJlZ2lzdGVySUQgc2NyYXRjaCkK
IHsKICAgICBtb3ZlKHJlZzEsIHNjcmF0Y2gpOwotICAgIGFuZDMyKHJlZzIsIHNjcmF0Y2gpOwor
ICAgIGFuZFB0cihyZWcyLCBzY3JhdGNoKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1O
dW0oc2NyYXRjaCk7CiB9CiAKKyNpZiAhVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklE
IHJlZykKIHsKLSAgICBzdWJQdHIoSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2Vy
KSwgcmVnKTsKKyAgICBzdWJQdHIoSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSwg
cmVnKTsKIH0KIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0RmFzdEFyaXRoRGVU
YWdJbW1lZGlhdGVKdW1wSWZaZXJvKFJlZ2lzdGVySUQgcmVnKQogewotICAgIHJldHVybiBqelN1
YlB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIpLCByZWcpOworICAgIHJl
dHVybiBqelN1YlB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpLCByZWcpOwog
fQorI2VuZGlmCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRGYXN0QXJpdGhSZVRhZ0lt
bWVkaWF0ZShSZWdpc3RlcklEIHJlZykKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRGYXN0
QXJpdGhSZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogewot
ICAgIGFkZFB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIpLCByZWcpOwor
I2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgZW1pdEZhc3RBcml0aEludFRvSW1t
Tm9DaGVjayhzcmMsIGRlc3QpOworI2Vsc2UKKyAgICBpZiAoc3JjICE9IGRlc3QpCisgICAgICAg
IG1vdmUoc3JjLCBkZXN0KTsKKyAgICBhZGRQdHIoSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJ
bnRlZ2VyKSwgZGVzdCk7CisjZW5kaWYKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dEZhc3RBcml0aEltbVRvSW50KFJlZ2lzdGVySUQgcmVnKQogeworI2lmIFVTRShBTFRFUk5BVEVf
SlNJTU1FRElBVEUpCisgICAgVU5VU0VEX1BBUkFNKHJlZyk7CisjZWxzZQogICAgIHJzaGlmdFB0
cihJbW0zMihKU0ltbWVkaWF0ZTo6SW50ZWdlclBheWxvYWRTaGlmdCksIHJlZyk7CisjZW5kaWYK
IH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVj
ayhSZWdpc3RlcklEIHJlZykKKy8vIG9wZXJhbmQgaXMgaW50MzJfdCwgbXVzdCBoYXZlIGJlZW4g
emVyby1leHRlbmRlZCBpZiByZWdpc3RlciBpcyA2NC1iaXQuCitBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiB7Ci0gICAgc2lnbkV4dGVuZDMyVG9QdHIocmVnLCByZWcpOwotICAgIGFkZFB0
cihyZWcsIHJlZyk7Ci0gICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKHJlZyk7CisjaWYg
VVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKKyAgICBpZiAoc3JjICE9IGRlc3QpCisgICAgICAg
IG1vdmUoc3JjLCBkZXN0KTsKKyAgICBvclB0cihJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSksIGRlc3QpOworI2Vsc2UKKyAgICBzaWdu
RXh0ZW5kMzJUb1B0cihzcmMsIGRlc3QpOworICAgIGFkZFB0cihkZXN0LCBkZXN0KTsKKyAgICBl
bWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoZGVzdCwgZGVzdCk7CisjZW5kaWYKIH0KIAogQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShSZWdpc3RlcklEIHJl
ZykKIHsKICAgICBsc2hpZnQzMihJbW0zMihKU0ltbWVkaWF0ZTo6RXh0ZW5kZWRQYXlsb2FkU2hp
ZnQpLCByZWcpOwotICAgIG9yMzIoSW1tMzIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlQm9vbCks
IHJlZyk7CisgICAgb3IzMihJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6
RnVsbFRhZ1R5cGVCb29sKSksIHJlZyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFk
ZFNsb3dDYXNlKEp1bXAganVtcCkKSW5kZXg6IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMzk3MzYpCisr
KyBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMTAgKzE4
MiwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZVB1dEJ5SWRTbG93Q2FzZShpbnQgYmFzCiAgICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mb1twcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5k
ZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlRW5jb2Rl
ZEFzUG9pbnRlciogcmVzaXplUHJvcGVydHlTdG9yYWdlKEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBp
bnQzMl90IG9sZFNpemUsIGludDMyX3QgbmV3U2l6ZSkKK3N0YXRpYyBKU09iamVjdCogcmVzaXpl
UHJvcGVydHlTdG9yYWdlKEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBpbnQzMl90IG9sZFNpemUsIGlu
dDMyX3QgbmV3U2l6ZSkKIHsKICAgICBiYXNlT2JqZWN0LT5hbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShvbGRTaXplLCBuZXdTaXplKTsKLSAgICByZXR1cm4gSlNWYWx1ZVB0cjo6ZW5jb2RlKGJhc2VP
YmplY3QpOworICAgIHJldHVybiBiYXNlT2JqZWN0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
dHJhbnNpdGlvbldpbGxOZWVkU3RvcmFnZVJlYWxsb2MoU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2Fz
ZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJl
LgotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoam56MzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRp
YXRlOjpUYWdNYXNrKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpT
Q2VsbChYODY6OmVheCkpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoam5lUHRyKEFkZHJlc3Mo
WDg2OjplYXgsIEZJRUxEX09GRlNFVChKU0NlbGwsIG1fc3RydWN0dXJlKSksIEltbVB0cihvbGRT
dHJ1Y3R1cmUpKSk7CiAgICAgSnVtcExpc3Qgc3VjY2Vzc0Nhc2VzOwogCkBAIC0zMTcsMTMgKzMx
NywxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAKICAgICAv
LyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAg
IGxvYWRQdHIoQWRkcmVzcyhYODY6OmVheCwgRklFTERfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFn
ZSkpLCBYODY6OmVjeCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKFg4Njo6ZWN4LCBGSUVMRF9PRkZT
RVQoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBYODY6OmVjeCk7CisgICAgbG9hZDMyKEFkZHJl
c3MoWDg2OjplY3gsIEZJRUxEX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIFg4Njo6
ZWN4KTsKIAogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGphMzIoWDg2OjplY3gsIEltbTMyKEpT
SW1tZWRpYXRlOjptYXhJbW1lZGlhdGVJbnQpKTsKIAotICAgIGFkZDMyKFg4Njo6ZWN4LCBYODY6
OmVjeCk7Ci0gICAgYWRkMzIoSW1tMzIoMSksIFg4Njo6ZWN4KTsKLSAgICBzaWduRXh0ZW5kMzJU
b1B0cihYODY6OmVjeCwgWDg2OjplYXgpOworICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hl
Y2soWDg2OjplY3gsIFg4Njo6ZWF4KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKICAg
ICB2b2lkKiBjb2RlID0gbV9hc3NlbWJsZXIuZXhlY3V0YWJsZUNvcHkobV9jb2RlQmxvY2stPmV4
ZWN1dGFibGVQb29sKCkpOwpAQCAtMzQ5LDcgKzM0Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVBhdGNoR2V0QXJyYXlMZW4KIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIHZvaWQqIHJldHVybkFkZHJlc3MpCiB7CiAgICAgLy8gQ2hlY2sgZWF4
IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgotICAgIEp1bXAgZmFpbHVyZUNh
c2VzMSA9IGpuejMyKFg4Njo6ZWF4LCBJbW0zMihKU0ltbWVkaWF0ZTo6VGFnTWFzaykpOworICAg
IEp1bXAgZmFpbHVyZUNhc2VzMSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwoWDg2OjplYXgpOwogICAg
IEp1bXAgZmFpbHVyZUNhc2VzMiA9IGNoZWNrU3RydWN0dXJlKFg4Njo6ZWF4LCBzdHJ1Y3R1cmUp
OwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldERpcmVjdE9mZnNldApAQCAtNDIzLDcg
KzQyMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKICAgICBs
b2FkUHRyKHByb3RvUHJvcGVydHlTdG9yYWdlLCBYODY6OmVkeCk7CiAKICAgICAvLyBDaGVjayBl
YXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmUuCi0gICAgSnVtcCBmYWlsdXJl
Q2FzZXMxID0gam5lMzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNrKSk7Cisg
ICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6OmVheCk7CiAg
ICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gY2hlY2tTdHJ1Y3R1cmUoWDg2OjplYXgsIHN0cnVjdHVy
ZSk7CiAKICAgICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQg
bm90IGNoYW5nZWQuCkBAIC02NDEsNyArNjM5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKFN0cgogICAgIEp1bXBMaXN0IGJ1Y2tldHNPZkZhaWw7CiAKICAgICAvLyBD
aGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmUuCi0gICAgYnVja2V0
c09mRmFpbC5hcHBlbmQoam5lMzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNr
KSkpOworICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwoWDg2Ojpl
YXgpKTsKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShYODY6OmVheCwg
c3RydWN0dXJlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7
CkBAIC02ODAsNyArNjc4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFJlcGxhY2UoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgdm9pZCogcmV0dXJuQWRkcmVzcykKIHsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0
IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmUuCi0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gam5lMzIo
WDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNrKSk7CisgICAgSnVtcCBmYWlsdXJl
Q2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6OmVheCk7CiAgICAgSnVtcCBmYWlsdXJl
Q2FzZXMyID0gY2hlY2tTdHJ1Y3R1cmUoWDg2OjplYXgsIHN0cnVjdHVyZSk7CiAKICAgICAvLyBj
aGVja3Mgb3V0IG9rYXkhIC0gcHV0RGlyZWN0T2Zmc2V0CkluZGV4OiBydW50aW1lL0pTSW1tZWRp
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcnVudGltZS9KU0ltbWVkaWF0ZS5oCShyZXZpc2lvbiAzOTcz
NikKKysrIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMzMgKzgy
LDUxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqICAgICAgICAgICAgICAgICAgICAgIFsgemVy
byBdICAgICAgICAgICAgICAgICAgICAgICBbIHplcm8gXSAgICAgICBbIHRhZyAnb3RoZXInIF0K
ICAgICAgKi8KIAorICAgIC8qCisgICAgICogT24gNjQtYml0IHBsYXRmb3Jtcywgd2Ugc3VwcG9y
dCBhbiBhbHRlcm5hdGl2ZSBlbmNvZGluZyBmb3JtIGZvciBpbW1lZGlhdGVzLCBpZgorICAgICAq
IFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpIGlzIGRlZmluZWQuCisgICAgICoKKyAgICAgKiBU
aGUgdG9wIDE2LWJpdHMgZGVub3RlIHRoZSB0eXBlOgorICAgICAqCisgICAgICogUG9pbnRlcjog
MDAwMDpQUFBQOlBQUFA6UFBQUAorICAgICAqIEludGVnZXI6IEZGRkY6MDAwMDpJSUlJOklJSUkK
KyAgICAgKgorICAgICAqIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgYXJlIG1hcmtlZCB3aXRoIHRo
ZSAxNi1iaXQgdGFnICcweEZGRkYnLiAgVGhlIHRhZyAnMHgwMDAwJworICAgICAqIGRlbm90ZXMg
YSBwb2ludGVyLCBvciBhbm90aGVyIGZvcm0gb2YgdGFnZ2VkIGltbWVkaWF0ZS4gIEJvb2xlYW4s
IG51bGwgYW5kIHVuZGVmaW5lZAorICAgICAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiB0aGUgc2Ft
ZSBtYW5uZXIgYXMgdGhlIGRlZmF1bHQgZm9ybWF0LgorICAgICAqLworCiAgICAgY2xhc3MgSlNJ
bW1lZGlhdGUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IFRhZ01hc2sgICAgICAgICAgID0gMHgzOyAv
LyBwcmltYXJ5IHRhZyBpcyAyIGJpdHMgbG9uZwotICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJf
dCBUYWdCaXRUeXBlSW50ZWdlciA9IDB4MTsgLy8gYm90dG9tIGJpdCBzZXQgaW5kaWNhdGVzIGlu
dGVnZXIsIHRoaXMgZG9taW5hdGVzIHRoZSBmb2xsb3dpbmcgYml0Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQzMl90IFRhZ0JpdFR5cGVPdGhlciAgID0gMHgyOyAvLyBzZWNvbmQgYml0IHNldCBp
bmRpY2F0ZXMgaW1tZWRpYXRlIG90aGVyIHRoYW4gYW4gaW50ZWdlcgotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBpbnQzMl90IEV4dGVuZGVkVGFnTWFzayAgICAgICAgID0gMHhDOyAvLyBleHRlbmRl
ZCB0YWcgaG9sZHMgYSBmdXJ0aGVyIHR3byBiaXRzCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQz
Ml90IEV4dGVuZGVkVGFnQml0Qm9vbCAgICAgID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50MzJfdCBFeHRlbmRlZFRhZ0JpdFVuZGVmaW5lZCA9IDB4ODsKLQotICAgICAgICBzdGF0aWMg
Y29uc3QgaW50MzJfdCBGdWxsVGFnVHlwZU1hc2sgICAgICA9IFRhZ01hc2sgfCBFeHRlbmRlZFRh
Z01hc2s7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IEZ1bGxUYWdUeXBlQm9vbCAgICAg
ID0gVGFnQml0VHlwZU90aGVyIHwgRXh0ZW5kZWRUYWdCaXRCb29sOwotICAgICAgICBzdGF0aWMg
Y29uc3QgaW50MzJfdCBGdWxsVGFnVHlwZVVuZGVmaW5lZCA9IFRhZ0JpdFR5cGVPdGhlciB8IEV4
dGVuZGVkVGFnQml0VW5kZWZpbmVkOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBGdWxs
VGFnVHlwZU51bGwgICAgICA9IFRhZ0JpdFR5cGVPdGhlcjsKKyNpZiBVU0UoQUxURVJOQVRFX0pT
SU1NRURJQVRFKQorICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgVGFnVHlwZUludGVnZXIg
PSAweGZmZmYwMDAwMDAwMDAwMDBsbDsgLy8gYm90dG9tIGJpdCBzZXQgaW5kaWNhdGVzIGludGVn
ZXIsIHRoaXMgZG9taW5hdGVzIHRoZSBmb2xsb3dpbmcgYml0CisjZWxzZQorICAgICAgICBzdGF0
aWMgY29uc3QgaW50cHRyX3QgVGFnVHlwZUludGVnZXIgPSAweDE7IC8vIGJvdHRvbSBiaXQgc2V0
IGluZGljYXRlcyBpbnRlZ2VyLCB0aGlzIGRvbWluYXRlcyB0aGUgZm9sbG93aW5nIGJpdAorI2Vu
ZGlmCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBUYWdCaXRUeXBlT3RoZXIgICA9IDB4
MjsgLy8gc2Vjb25kIGJpdCBzZXQgaW5kaWNhdGVzIGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGlu
dGVnZXIKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFRhZ01hc2sgICAgICAgICAgID0g
VGFnVHlwZUludGVnZXIgfCBUYWdCaXRUeXBlT3RoZXI7CiAKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludHB0cl90IEV4dGVuZGVkVGFnTWFzayAgICAgICAgID0gMHhDOyAvLyBleHRlbmRlZCB0YWcg
aG9sZHMgYSBmdXJ0aGVyIHR3byBiaXRzCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBF
eHRlbmRlZFRhZ0JpdEJvb2wgICAgICA9IDB4NDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0
cl90IEV4dGVuZGVkVGFnQml0VW5kZWZpbmVkID0gMHg4OworCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnRwdHJfdCBGdWxsVGFnVHlwZU1hc2sgICAgICA9IFRhZ01hc2sgfCBFeHRlbmRlZFRhZ01h
c2s7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGdWxsVGFnVHlwZUJvb2wgICAgICA9
IFRhZ0JpdFR5cGVPdGhlciB8IEV4dGVuZGVkVGFnQml0Qm9vbDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludHB0cl90IEZ1bGxUYWdUeXBlVW5kZWZpbmVkID0gVGFnQml0VHlwZU90aGVyIHwgRXh0
ZW5kZWRUYWdCaXRVbmRlZmluZWQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGdWxs
VGFnVHlwZU51bGwgICAgICA9IFRhZ0JpdFR5cGVPdGhlcjsKKworI2lmIFVTRShBTFRFUk5BVEVf
SlNJTU1FRElBVEUpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IEludGVnZXJQYXlsb2Fk
U2hpZnQgID0gMDsKKyNlbHNlCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IEludGVnZXJQ
YXlsb2FkU2hpZnQgID0gMTsKKyNlbmRpZgogICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBF
eHRlbmRlZFBheWxvYWRTaGlmdCA9IDQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qg
RXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZhbHVlID0gMSA8PCBFeHRlbmRlZFBheWxvYWRTaGlmdDsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1
ZSA9IDEgPDwgRXh0ZW5kZWRQYXlsb2FkU2hpZnQ7CiAKLSNpZiBVU0UoQUxURVJOQVRFX0pTSU1N
RURJQVRFKQotICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3Qgc2lnbkJpdCA9IDB4MTAwMDAw
MDAwbGw7Ci0jZWxzZQogICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBzaWduQml0ID0gMHg4
MDAwMDAwMDsKLSNlbmRpZgogIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0ltbWVkaWF0ZShKU1ZhbHVlUHRyIHYpCkBAIC0xMTgsMTMgKzEzNiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNOdW1iZXIoSlNWYWx1ZVB0ciB2KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gcmF3VmFsdWUodikgJiBUYWdCaXRUeXBlSW50ZWdlcjsKKyAgICAgICAgICAgIHJldHVybiBy
YXdWYWx1ZSh2KSAmIFRhZ1R5cGVJbnRlZ2VyOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1Bvc2l0aXZlTnVtYmVyKEpTVmFsdWVQdHIgdikKICAgICAg
ICAgewogICAgICAgICAgICAgLy8gQSBzaW5nbGUgbWFzayB0byBjaGVjayBmb3IgdGhlIHNpZ24g
Yml0IGFuZCB0aGUgbnVtYmVyIHRhZyBhbGwgYXQgb25jZS4KLSAgICAgICAgICAgIHJldHVybiAo
cmF3VmFsdWUodikgJiAoc2lnbkJpdCB8IFRhZ0JpdFR5cGVJbnRlZ2VyKSkgPT0gVGFnQml0VHlw
ZUludGVnZXI7CisgICAgICAgICAgICByZXR1cm4gKHJhd1ZhbHVlKHYpICYgKHNpZ25CaXQgfCBU
YWdUeXBlSW50ZWdlcikpID09IFRhZ1R5cGVJbnRlZ2VyOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQm9vbGVhbihKU1ZhbHVlUHRyIHYp
CkBAIC0xNzQsNyArMTkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEFM
V0FZU19JTkxJTkUgYm9vbCBhcmVCb3RoSW1tZWRpYXRlTnVtYmVycyhKU1ZhbHVlUHRyIHYxLCBK
U1ZhbHVlUHRyIHYyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmF3VmFsdWUodjEp
ICYgcmF3VmFsdWUodjIpICYgVGFnQml0VHlwZUludGVnZXI7CisgICAgICAgICAgICByZXR1cm4g
cmF3VmFsdWUodjEpICYgcmF3VmFsdWUodjIpICYgVGFnVHlwZUludGVnZXI7CiAgICAgICAgIH0K
IAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRyIGFuZEltbWVkaWF0ZU51
bWJlcnMoSlNWYWx1ZVB0ciB2MSwgSlNWYWx1ZVB0ciB2MikKQEAgLTE4Niw3ICsyMDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZVB0ciB4
b3JJbW1lZGlhdGVOdW1iZXJzKEpTVmFsdWVQdHIgdjEsIEpTVmFsdWVQdHIgdjIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChhcmVCb3RoSW1tZWRpYXRlTnVtYmVycyh2MSwgdjIpKTsK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUoKHJhd1ZhbHVlKHYxKSBeIHJhd1ZhbHVlKHYy
KSkgfCBUYWdCaXRUeXBlSW50ZWdlcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKChy
YXdWYWx1ZSh2MSkgXiByYXdWYWx1ZSh2MikpIHwgVGFnVHlwZUludGVnZXIpOwogICAgICAgICB9
CiAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZVB0ciBvckltbWVkaWF0ZU51
bWJlcnMoSlNWYWx1ZVB0ciB2MSwgSlNWYWx1ZVB0ciB2MikKQEAgLTE5OCwyOCArMjE2LDMyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRy
IHJpZ2h0U2hpZnRJbW1lZGlhdGVOdW1iZXJzKEpTVmFsdWVQdHIgdmFsLCBKU1ZhbHVlUHRyIHNo
aWZ0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoYXJlQm90aEltbWVkaWF0ZU51bWJl
cnModmFsLCBzaGlmdCkpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZSgocmF3VmFsdWUo
dmFsKSA+PiAoKHJhd1ZhbHVlKHNoaWZ0KSA+PiBJbnRlZ2VyUGF5bG9hZFNoaWZ0KSAmIDB4MWYp
KSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZShzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHN0YXRpY19jYXN0PGludDMyX3Q+KHJhd1ZhbHVlKHZhbCkpID4+ICgo
cmF3VmFsdWUoc2hpZnQpID4+IEludGVnZXJQYXlsb2FkU2hpZnQpICYgMHgxZikpKSB8IFRhZ1R5
cGVJbnRlZ2VyKTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKChyYXdWYWx1
ZSh2YWwpID4+ICgocmF3VmFsdWUoc2hpZnQpID4+IEludGVnZXJQYXlsb2FkU2hpZnQpICYgMHgx
ZikpIHwgVGFnVHlwZUludGVnZXIpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyhKU1ZhbHVl
UHRyIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE51bWJlciBpcyBub24tbmVnYXRpdmUg
YW5kIGFuIG9wZXJhdGlvbiBpbnZvbHZpbmcgdHdvIG9mIHRoZXNlIGNhbid0IG92ZXJmbG93Lgog
ICAgICAgICAgICAgLy8gQ2hlY2tpbmcgZm9yIGFsbG93ZWQgbmVnYXRpdmUgbnVtYmVycyB0YWtl
cyBtb3JlIHRpbWUgdGhhbiBpdCdzIHdvcnRoIG9uIFN1blNwaWRlci4KLSAgICAgICAgICAgIHJl
dHVybiAocmF3VmFsdWUodikgJiAoVGFnQml0VHlwZUludGVnZXIgKyAoc2lnbkJpdCB8IChzaWdu
Qml0ID4+IDEpKSkpID09IFRhZ0JpdFR5cGVJbnRlZ2VyOworICAgICAgICAgICAgcmV0dXJuIChy
YXdWYWx1ZSh2KSAmIChUYWdUeXBlSW50ZWdlciArIChzaWduQml0IHwgKHNpZ25CaXQgPj4gMSkp
KSkgPT0gVGFnVHlwZUludGVnZXI7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1ZhbHVlUHRyIGFkZEltbWVkaWF0ZU51bWJlcnMoSlNWYWx1ZVB0ciB2MSwgSlNW
YWx1ZVB0ciB2MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0
aXZlT3BlcmF0aW9ucyh2MSkpOwogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZl
T3BlcmF0aW9ucyh2MikpOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZShyYXdWYWx1ZSh2
MSkgKyByYXdWYWx1ZSh2MikgLSBUYWdCaXRUeXBlSW50ZWdlcik7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVZhbHVlKHJhd1ZhbHVlKHYxKSArIHJhd1ZhbHVlKHYyKSAtIFRhZ1R5cGVJbnRlZ2Vy
KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWVQdHIg
c3ViSW1tZWRpYXRlTnVtYmVycyhKU1ZhbHVlUHRyIHYxLCBKU1ZhbHVlUHRyIHYyKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKHYxKSk7
CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKHYyKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKHJhd1ZhbHVlKHYxKSAtIHJhd1ZhbHVlKHYyKSAr
IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUocmF3VmFs
dWUodjEpIC0gcmF3VmFsdWUodjIpICsgVGFnVHlwZUludGVnZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZVB0ciBpbmNJbW1lZGlhdGVOdW1iZXIo
SlNWYWx1ZVB0ciB2KQpAQCAtMjczLDkgKzI5NSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUHRyOjptYWtlSW1tZWRpYXRlKGludGVnZXIpOwogICAgICAg
ICB9CiAKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1ZhbHVlUHRyIG1ha2VJbnQodWludDMyX3QgdmFsdWUpCisjZWxzZQogICAg
ICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRyIG1ha2VJbnQoaW50MzJfdCB2YWx1
ZSkKKyNlbmRpZgogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKChzdGF0
aWNfY2FzdDxpbnRwdHJfdD4odmFsdWUpIDw8IEludGVnZXJQYXlsb2FkU2hpZnQpIHwgVGFnQml0
VHlwZUludGVnZXIpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZSgoc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHZhbHVlKSA8PCBJbnRlZ2VyUGF5bG9hZFNoaWZ0KSB8IFRhZ1R5cGVJbnRlZ2Vy
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZVB0ciBtYWtlQm9vbChib29sIGIpCkBAIC0zMzAsOCArMzU2LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgICAgICBBU1NFUlQoaXNJbW1lZGlhdGUodikpOwogICAgICAgICBpbnRw
dHJfdCBiaXRzID0gcmF3VmFsdWUodik7Ci0gICAgICAgIHJldHVybiAoYml0cyAmIFRhZ0JpdFR5
cGVJbnRlZ2VyKQotICAgICAgICAgICAgPyBiaXRzICE9IFRhZ0JpdFR5cGVJbnRlZ2VyIC8vICEw
IGludHMKKyAgICAgICAgcmV0dXJuIChiaXRzICYgVGFnVHlwZUludGVnZXIpCisgICAgICAgICAg
ICA/IGJpdHMgIT0gVGFnVHlwZUludGVnZXIgLy8gITAgaW50cwogICAgICAgICAgICAgOiBiaXRz
ID09IChGdWxsVGFnVHlwZUJvb2wgfCBFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUpOyAvLyBi
b29sIHRydWUKICAgICB9CiAKSW5kZXg6IHd0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHd0
Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzOTczNikKKysrIHd0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MzksOSArNDM5LDkgQEAKIC8qIHg4Ni02NCBzdXBwb3J0IGlzIHVuZGVyIGRl
dmVsb3BtZW50LiAqLwogI2lmIFBMQVRGT1JNKFg4Nl82NCkgJiYgUExBVEZPUk0oTUFDKQogICAg
ICNkZWZpbmUgRU5BQkxFX0pJVCAwCi0gICAgI2RlZmluZSBXVEZfVVNFX0pJVF9TVFVCX0FSR1VN
RU5UX1JFR0lTVEVSIDAKLSAgICAjZGVmaW5lIEVOQUJMRV9KSVRfT1BUSU1JWkVfQ0FMTCAwCi0g
ICAgI2RlZmluZSBFTkFCTEVfSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUyAwCisgICAgI2Rl
ZmluZSBXVEZfVVNFX0pJVF9TVFVCX0FSR1VNRU5UX1JFR0lTVEVSIDEKKyAgICAjZGVmaW5lIEVO
QUJMRV9KSVRfT1BUSU1JWkVfQ0FMTCAxCisgICAgI2RlZmluZSBFTkFCTEVfSklUX09QVElNSVpF
X1BST1BFUlRZX0FDQ0VTUyAxCiAgICAgI2RlZmluZSBXVEZfVVNFX0FMVEVSTkFURV9KU0lNTUVE
SUFURSAxCiAvKiBUaGUgSklUIGlzIHRlc3RlZCAmIHdvcmtpbmcgb24geDg2IE1hYyAqLwogI2Vs
aWYgUExBVEZPUk0oWDg2KSAmJiBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26555</attachid>
            <date>2009-01-08 21:30:12 -0800</date>
            <delta_ts>2009-01-08 21:48:08 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.altimmFFFFiVe6.txt</filename>
            <type>text/plain</type>
            <size>54927</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5NzM2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODggQEAKKzIwMDktMDEt
MDggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuY29kZSBpbW1lZGlhdGVz
IGluIHRoZSBsb3cgd29yZCBvZiBKU1ZhbHVlUHRycywgb24geDg2LTY0LgorCisgICAgICAgIE9u
IDMyLWJpdCBwbGF0Zm9ybXMgYSBKU1ZhbHVlUHRyIG1heSByZXByZXNlbnQgYSAzMS1iaXQgc2ln
bmVkIGludGVnZXIuCisgICAgICAgIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIGlmIFVTRShBTFRFUk5B
VEVfSlNJTU1FRElBVEUpIGlzIGRlZmluZWQsIGEgZnVsbAorICAgICAgICAzMi1iaXQgaW50ZWdl
ciBtYXkgYmUgc3RvcmVkIGluIGFuIGltbWVkaWF0ZS4KKyAgICAgICAgCisgICAgICAgIFByZXNl
bnRseSBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKSB1c2VzIHRoZSBzYW1lIGVuY29kaW5nIGFz
IHRoZSBkZWZhdWx0CisgICAgICAgIGltbWVkaWF0ZSBmb3JtYXQgLSB0aGUgdmFsdWUgaXMgbGVm
dCBzaGlmdGVkIGJ5IG9uZSwgc28gYSBvbmUgYml0IHRhZyBjYW4KKyAgICAgICAgYmUgYWRkZWQg
dG8gaW5kaWNhdGUgdGhlIHZhbHVlIGlzIGFuIGltbWVkaWF0ZS4gIEhvd2V2ZXIgdGhpcyBtZWFu
cyB0aGF0CisgICAgICAgIHZhbHVlcyBtdXN0IGJlIGNvbW1vbmx5IGJlIGRldGFnZ2VkIChieSBy
aWdodCBzaGlmdGluZyBieSBvbmUpIGJlZm9yZQorICAgICAgICBhcml0aG1ldGljIG9wZXJhdGlv
bnMgY2FuIGJlIHBlcmZvcm1lZCBvbiBpbW1lZGlhdGVzLiAgVGhpcyBwYXRjaCBtb2RpZmllcwor
ICAgICAgICB0aGUgZm9ybWF0dHRpbmcgc28gdGhlIHRoZSBoaWdoIGJpdHMgb2YgdGhlIGltbWVk
aWF0ZSBtYXJrIHZhbHVlcyBhcyBiZWluZworICAgICAgICBpbnRlZ2VyLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Ojpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpvclB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjp6ZXJvRXh0ZW5kMzJUb1B0cik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpqYWVQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
amJQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6am56UHRyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXI6Omp6UHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6KToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpub3RsX3IpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3Rx
X2kzMnIpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFt
cG9saW5lcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFzdEFyaXRoX29wX2xzaGlmdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9yc2hpZnQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlRmFzdEFyaXRoU2xvd19vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVGYXN0QXJpdGhfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFz
dEFyaXRoU2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVGYXN0QXJpdGhf
b3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlRmFzdEFyaXRoX29wX211bCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wb3N0X2luYyk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wb3N0X2RlYyk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUZhc3RBcml0aF9vcF9wcmVfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlRmFzdEFyaXRoX29wX3ByZV9kZWMpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dERvdWJs
ZVJlc3VsdFRvSlNOdW1iZXJDZWxsT3JKU0ltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZkpTQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5vdEpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEp1bXBJZkltbU51bSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tTnVtKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1OdW1zKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZUp1bXBJZlpl
cm8pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEZhc3RBcml0aEltbVRvSW50KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0VGFnQXNCb29sSW1tZWRpYXRlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpyZXNpemVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRS
ZXBsYWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTSW1tZWRpYXRlLmg6CisgICAgICAgIChKU0M6
OkpTSW1tZWRpYXRlOjppc051bWJlcik6CisgICAgICAgIChKU0M6OkpTSW1tZWRpYXRlOjppc1Bv
c2l0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OmFyZUJvdGhJbW1lZGlh
dGVOdW1iZXJzKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OnhvckltbWVkaWF0ZU51bWJl
cnMpOgorICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6cmlnaHRTaGlmdEltbWVkaWF0ZU51bWJl
cnMpOgorICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6Y2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRp
b25zKToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6OmFkZEltbWVkaWF0ZU51bWJlcnMpOgor
ICAgICAgICAoSlNDOjpKU0ltbWVkaWF0ZTo6c3ViSW1tZWRpYXRlTnVtYmVycyk6CisgICAgICAg
IChKU0M6OkpTSW1tZWRpYXRlOjptYWtlSW50KToKKyAgICAgICAgKEpTQzo6SlNJbW1lZGlhdGU6
OnRvQm9vbGVhbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMDktMDEtMDggIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KSW5kZXg6IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAzOTczNikKKysrIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfaTMycihzcmMsIGltbS5tX3ZhbHVlLCBkZXN0
KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBub3QzMihSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX3Ioc3JjRGVzdCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgb3JQdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYg
UExBVEZPUk0oWDg2XzY0KQpAQCAtNTg4LDYgKzU5MywxNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB9CiAKKyAgICB2b2lkIG9yUHRyKEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNjcmF0Y2hSZWdpc3RlciwgZGVzdCk7Cisj
ZWxzZQorICAgICAgICBvcjMyKEltbTMyKGltbSksIGRlc3QpOworI2VuZGlmCisgICAgfQorCiAg
ICAgdm9pZCBvclB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgUExB
VEZPUk0oWDg2XzY0KQpAQCAtMTAwMiw2ICsxMDE3LDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZsX3JyKHNyYywgZGVzdCk7CisjZWxzZQorICAgICAgICBpZiAoc3JjICE9IGRlc3QpCisg
ICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CisjZW5kaWYKKyAgICB9CiAKIAogICAgIC8vIEZv
cndhcmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CkBAIC0xMTE3LDYgKzEx
NDEsMzggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qYSgpKTsK
ICAgICB9CiAgICAgCisgICAgSnVtcCBqYWVQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQorICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAgIG1fYXNzZW1ibGVy
LmNtcHFfcnIocmlnaHQsIGxlZnQpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
YWUoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gamFlMzIobGVmdCwgcmlnaHQpOworI2VuZGlm
CisgICAgfQorCisgICAgSnVtcCBqYWVQdHIoUmVnaXN0ZXJJRCByZWcsIEltbVB0ciBwdHIpCisg
ICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgaW50cHRyX3QgaW1tID0gcHRyLmFz
SW50cHRyKCk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfMzJfNjQoaW1tKSkgeworICAg
ICAgICAgICAgY29tcGFyZUltbTY0Rm9yQnJhbmNoKHJlZywgaW1tKTsKKyAgICAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmphZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUocHRyLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgcmV0dXJuIGphZVB0
cihyZWcsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIHJldHVy
biBqYWUzMihyZWcsIEltbTMyKHB0cikpOworI2VuZGlmCisgICAgfQorCisgICAgSnVtcCBqYWUz
MihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsX3JyKHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuamFlKCkpOworICAgIH0KKwogICAgIEp1bXAgamFlMzIoUmVnaXN0ZXJJRCBsZWZ0LCBJ
bW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGNvbXBhcmVJbW0zMkZvckJyYW5jaChsZWZ0LCBy
aWdodC5tX3ZhbHVlKTsKQEAgLTExMzUsNiArMTE5MSw0NCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmphZSgpKTsKICAgICB9CiAgICAgCisgICAgSnVtcCBqYlB0
cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworI2lmIFBMQVRGT1JN
KFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9ycihyaWdodCwgbGVmdCk7CisgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpiKCkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJu
IGpiMzIobGVmdCwgcmlnaHQpOworI2VuZGlmCisgICAgfQorCisgICAgSnVtcCBqYlB0cihSZWdp
c3RlcklEIHJlZywgSW1tUHRyIHB0cikKKyAgICB7CisjaWYgUExBVEZPUk0oWDg2XzY0KQorICAg
ICAgICBpbnRwdHJfdCBpbW0gPSBwdHIuYXNJbnRwdHIoKTsKKyAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF8zMl82NChpbW0pKSB7CisgICAgICAgICAgICBjb21wYXJlSW1tNjRGb3JCcmFuY2go
cmVnLCBpbW0pOworICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuamIoKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHB0ciwgc2NyYXRjaFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIHJldHVybiBqYlB0cihyZWcsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAg
IH0KKyNlbHNlCisgICAgICAgIHJldHVybiBqYjMyKHJlZywgSW1tMzIocHRyKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBKdW1wIGpiMzIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ycihyaWdodCwgbGVmdCk7CisgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpiKCkpOworICAgIH0KKworICAgIEp1bXAgamIz
MihSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0KQorICAgIHsKKyAgICAgICAgY29tcGFyZUlt
bTMyRm9yQnJhbmNoKGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qYigpKTsKKyAgICB9CisgICAgCiAgICAgSnVtcCBqYjMyKFJlZ2lzdGVySUQg
bGVmdCwgQWRkcmVzcyByaWdodCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfbXIo
cmlnaHQub2Zmc2V0LCByaWdodC5iYXNlLCBsZWZ0KTsKQEAgLTE0NjgsNiArMTU2MiwxNyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICBKdW1wIGpuelB0cihSZWdpc3RlcklEIHJlZywg
SW1tUHRyIG1hc2spCisgICAgeworI2lmIFBMQVRGT1JNKFg4Nl82NCkKKyAgICAgICAgbW92ZSht
YXNrLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihzY3Jh
dGNoUmVnaXN0ZXIsIHJlZyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpuZSgp
KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBqbnozMihyZWcsIEltbTMyKG1hc2spKTsKKyNlbmRp
ZgorICAgIH0KKwogICAgIEp1bXAgam56UHRyKEFkZHJlc3MgYWRkcmVzcywgSW1tMzIgbWFzayA9
IEltbTMyKC0xKSkKICAgICB7CiAjaWYgUExBVEZPUk0oWDg2XzY0KQpAQCAtMTUwMCw2ICsxNjA1
LDE3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIEp1bXAganpQdHIoUmVnaXN0ZXJJ
RCByZWcsIEltbVB0ciBtYXNrKQorICAgIHsKKyNpZiBQTEFURk9STShYODZfNjQpCisgICAgICAg
IG1vdmUobWFzaywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFf
cnIoc2NyYXRjaFJlZ2lzdGVyLCByZWcpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qZSgpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBqejMyKHJlZywgSW1tMzIobWFzaykpOwor
I2VuZGlmCisgICAgfQorCiAgICAgSnVtcCBqelB0cihBZGRyZXNzIGFkZHJlc3MsIEltbTMyIG1h
c2sgPSBJbW0zMigtMSkpCiAgICAgewogI2lmIFBMQVRGT1JNKFg4Nl82NCkKSW5kZXg6IGFzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHJldmlzaW9uIDM5NzM2KQorKysgYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBHUk9VUDJfT1BfU0FS
ID0gNywKIAogICAgICAgICBHUk9VUDNfT1BfVEVTVCA9IDAsCisgICAgICAgIEdST1VQM19PUF9O
T1QgID0gMiwKICAgICAgICAgR1JPVVAzX09QX0lESVYgPSA3LAogCiAgICAgICAgIEdST1VQNV9P
UF9DQUxMTiA9IDIsCkBAIC0zNjMsNiArMzY0LDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYK
IAorICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgZHN0KTsKKyAgICB9
CisKICAgICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwpA
QCAtNzE1LDcgKzcyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVzdHFfaTMycihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgZHN0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2SXosIEdST1VQM19PUF9URVNULCBkc3QpOwogICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgIH0KIApJbmRleDogaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaml0L0pJVC5jcHAJKHJldmlzaW9uIDM5NzM2KQorKysgaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCwxMiArMzQ4LDE3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChvcDIpKSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihvcDEsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbW1OdW0oWDg2OjplYXgpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAoamxQdHIoWDg2Ojpl
YXgsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpKSks
IHRhcmdldCArIDMpOworI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgICAgICAg
ICAgICAgaW50MzJfdCBvcDJpbW0gPSBKU0ltbWVkaWF0ZTo6aW50VmFsdWUoZ2V0Q29uc3RhbnRP
cGVyYW5kKG9wMikpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBpbnQzMl90IG9wMmltbSA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTSW1tZWRpYXRlOjpyYXdWYWx1ZShnZXRDb25zdGFudE9wZXJh
bmQob3AyKSkpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYWRkSnVtcChqbDMyKFg4Njo6ZWF4
LCBJbW0zMihvcDJpbW0pKSwgdGFyZ2V0ICsgMyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9wMSwgWDg2OjplYXgsIG9wMiwg
WDg2OjplZHgpOwogICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShY
ODY6OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4
Njo6ZWR4KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGpsUHRyKFg4Njo6ZWF4LCBYODY6OmVk
eCksIHRhcmdldCArIDMpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoamwzMihYODY6OmVheCwg
WDg2OjplZHgpLCB0YXJnZXQgKyAzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2xvb3BfaWZfbGVzcyk7CiAgICAgICAgIH0KQEAgLTM2NiwxMiArMzcxLDE3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CiAgICAgICAgICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihvcDEsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAo
amxlUHRyKFg4Njo6ZWF4LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKGdldENvbnN0YW50T3Bl
cmFuZChvcDIpKSkpLCB0YXJnZXQgKyAzKTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRF
KQorICAgICAgICAgICAgICAgIGludDMyX3Qgb3AyaW1tID0gSlNJbW1lZGlhdGU6OmludFZhbHVl
KGdldENvbnN0YW50T3BlcmFuZChvcDIpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaW50MzJf
dCBvcDJpbW0gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6cmF3VmFsdWUoZ2V0
Q29uc3RhbnRPcGVyYW5kKG9wMikpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGFkZEp1bXAo
amxlMzIoWDg2OjplYXgsIEltbTMyKG9wMmltbSkpLCB0YXJnZXQgKyAzKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCBY
ODY6OmVheCwgb3AyLCBYODY6OmVkeCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW1OdW0oWDg2OjplZHgpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAoamxlUHRyKFg4
Njo6ZWF4LCBYODY6OmVkeCksIHRhcmdldCArIDMpOworICAgICAgICAgICAgICAgIGFkZEp1bXAo
amxlMzIoWDg2OjplYXgsIFg4Njo6ZWR4KSwgdGFyZ2V0ICsgMyk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9sb29wX2lmX2xlc3MpOwogICAgICAgICB9CkBAIC0z
OTUsOCArNDA1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAg
ICAgICAgICAvLyBjaGVjayBpZiBhbnkgYXJlIGltbWVkaWF0ZXMKICAgICAgICAgICAgIG1vdmUo
WDg2OjplYXgsIFg4Njo6ZWJ4KTsKLSAgICAgICAgICAgIG9yMzIoWDg2OjplY3gsIFg4Njo6ZWJ4
KTsKLSAgICAgICAgICAgIG9yMzIoWDg2OjplZHgsIFg4Njo6ZWJ4KTsKKyAgICAgICAgICAgIG9y
UHRyKFg4Njo6ZWN4LCBYODY6OmVieCk7CisgICAgICAgICAgICBvclB0cihYODY6OmVkeCwgWDg2
OjplYngpOwogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFg4Njo6ZWJ4
KTsKIAogICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBhbGwgYXJlIG9iamVjdCB0eXBlIC0gdGhp
cyBpcyBhIGJpdCBvZiBhIGJpdGhhY2sgdG8gYXZvaWQgZXhjZXNzIGJyYW5jaGluZzsKQEAgLTU2
Myw3ICs1NzMsMTcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBjYXNlIG9wX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIFg4Njo6ZWF4LCBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kLCBYODY6OmVkeCk7CiAgICAgICAgICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplZHgpOworI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElB
VEUpCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGluY29ycmVjdCAtIHdlJ3Jl
IHplcm8tZXh0ZW5kaW5nIGFuIGludDMyLiAgT24gdGhlIGhvdCBwYXRoIHRoaXMgZG9lc24ndCBt
YXR0ZXIuCisgICAgICAgICAgICAvLyBXZSBjaGVjayB0aGUgdmFsdWUgYXMgaWYgaXQgd2FzIGEg
dWludDMyIGFnYWluc3QgdGhlIG1fZmFzdEFjY2Vzc0N1dG9mZiAtIHdoaWNoIHdpbGwgYWx3YXlz
IGZhaWwgaWYKKyAgICAgICAgICAgIC8vIG51bWJlciB3YXMgc2lnbmVkIHNpbmNlIG1fZmFzdEFj
Y2Vzc0N1dG9mZiBpcyBhbHdheXMgbGVzcyB0aGFuIGludG1heCAoc2luY2UgdGhlIHRvdGFsIGFs
bG9jYXRpb24KKyAgICAgICAgICAgIC8vIHNpemUgaXMgYWx3YXlzIGxlc3MgdGhhbiA0R2IpLiAg
QXMgc3VjaCB6ZXJvIGV4dGVuZGluZyB3aWwgaGF2ZSBiZWVuIGNvcnJlY3QgKGFuZCBleHRlbmRp
bmcgdGhlIHZhbHVlCisgICAgICAgICAgICAvLyB0byA2NC1iaXRzIGlzIG5lY2Vzc2FyeSBzaW5j
ZSBpdCdzIHVzZWQgaW4gdGhlIGFkZHJlc3MgY2FsY3VsYXRpb24uICBXZSB6ZXJvIGV4dGVuZCBy
YXRoZXIgdGhhbiBzaWduCisgICAgICAgICAgICAvLyBleHRlbmRpbmcgc2luY2UgaXQgbWFrZXMg
aXQgZWFzaWVyIHRvIHJlLXRhZyB0aGUgdmFsdWUgaW4gdGhlIHNsb3cgY2FzZS4KKyAgICAgICAg
ICAgIHplcm9FeHRlbmQzMlRvUHRyKFg4Njo6ZWR4LCBYODY6OmVkeCk7CisjZWxzZQogICAgICAg
ICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWR4KTsKKyNlbmRpZgogICAgICAgICAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKGpuZVB0cihBZGRyZXNzKFg4Njo6ZWF4KSwgSW1tUHRyKG1faW50ZXJwcmV0ZXIt
Pm1fanNBcnJheVZwdHIpKSk7CiAKQEAgLTU5MSw3ICs2MTEsMTIgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAgICAg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIFg4Njo6ZWF4LCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBYODY6OmVk
eCk7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplZHgpOwor
I2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgICAgICAgICAvLyBTZWUgY29tbWVu
dCBpbiBvcF9nZXRfYnlfdmFsLgorICAgICAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoWDg2Ojpl
ZHgsIFg4Njo6ZWR4KTsKKyNlbHNlCiAgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQo
WDg2OjplZHgpOworI2VuZGlmCiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoWDg2OjplYXgpOwogICAgICAgICAgICAgYWRkU2xvd0Nhc2Uoam5lUHRyKEFkZHJlc3MoWDg2
OjplYXgpLCBJbW1QdHIobV9pbnRlcnByZXRlci0+bV9qc0FycmF5VnB0cikpKTsKIApAQCAtNjE5
LDcgKzY0NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgWDg2OjplYXgpOwogCiAgICAgICAgICAgICBKdW1wIGlzWmVybyA9IGplUHRyKFg4Njo6ZWF4
LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKEpTSW1tZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkp
KSk7Ci0gICAgICAgICAgICBhZGRKdW1wKGpuejMyKFg4Njo6ZWF4LCBJbW0zMihKU0ltbWVkaWF0
ZTo6VGFnQml0VHlwZUludGVnZXIpKSwgdGFyZ2V0ICsgMik7CisgICAgICAgICAgICBhZGRKdW1w
KGVtaXRKdW1wSWZJbW1OdW0oWDg2OjplYXgpLCB0YXJnZXQgKyAyKTsKIAogICAgICAgICAgICAg
YWRkSnVtcChqZVB0cihYODY6OmVheCwgSW1tUHRyKEpTVmFsdWVQdHI6OmVuY29kZShqc0Jvb2xl
YW4odHJ1ZSkpKSksIHRhcmdldCArIDIpOwogICAgICAgICAgICAgYWRkU2xvd0Nhc2Uoam5lUHRy
KFg4Njo6ZWF4LCBJbW1QdHIoSlNWYWx1ZVB0cjo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSkp
OwpAQCAtNjkxLDIwICs3MTYsMjUgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsK
ICAgICAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgWDg2OjplYXgpOwog
ICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7Ci0g
ICAgICAgICAgICAgICAgYWRkSnVtcChqZ2VQdHIoWDg2OjplYXgsIEltbVB0cihKU1ZhbHVlUHRy
OjplbmNvZGUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpKSksIHRhcmdldCArIDMpOworI2lmIFVT
RShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgICAgICAgICAgICAgaW50MzJfdCBvcDJpbW0g
PSBKU0ltbWVkaWF0ZTo6aW50VmFsdWUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICBpbnQzMl90IG9wMmltbSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
SW1tZWRpYXRlOjpyYXdWYWx1ZShnZXRDb25zdGFudE9wZXJhbmQob3AyKSkpOworI2VuZGlmCisg
ICAgICAgICAgICAgICAgYWRkSnVtcChqZ2UzMihYODY6OmVheCwgSW1tMzIob3AyaW1tKSksIHRh
cmdldCArIDMpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVycyhvcDEsIFg4Njo6ZWF4LCBvcDIsIFg4Njo6ZWR4KTsKICAgICAgICAg
ICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwogICAgICAgICAg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVkeCk7Ci0gICAgICAgICAg
ICAgICAgYWRkSnVtcChqZ2VQdHIoWDg2OjplYXgsIFg4Njo6ZWR4KSwgdGFyZ2V0ICsgMyk7Cisg
ICAgICAgICAgICAgICAgYWRkSnVtcChqZ2UzMihYODY6OmVheCwgWDg2OjplZHgpLCB0YXJnZXQg
KyAzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2pubGVzcyk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKICAgICAgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgWDg2OjplYXgp
OwotICAgICAgICAgICAgeG9yUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wp
LCBYODY6OmVheCk7Ci0gICAgICAgICAgICBhZGRTbG93Q2FzZShqbnozMihYODY6OmVheCwgSW1t
MzIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlTWFzaykpKTsKLSAgICAgICAgICAgIHhvclB0cihJ
bW0zMihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sIHwgSlNJbW1lZGlhdGU6OkV4dGVuZGVk
UGF5bG9hZEJpdEJvb2xWYWx1ZSksIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIHhvclB0cihJbW0z
MihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sKSksIFg4
Njo6ZWF4KTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGpuelB0cihYODY6OmVheCwgSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4ofkpTSW1tZWRpYXRlOjpFeHRlbmRlZFBheWxvYWRCaXRCb29s
VmFsdWUpKSkpOworICAgICAgICAgICAgeG9yUHRyKEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wgfCBKU0ltbWVkaWF0ZTo6RXh0ZW5kZWRQYXls
b2FkQml0Qm9vbFZhbHVlKSksIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9ub3QpOwogICAgICAgICB9CkBAIC03MTMsNyArNzQzLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBYODY6OmVheCk7CiAKICAg
ICAgICAgICAgIGFkZEp1bXAoamVQdHIoWDg2OjplYXgsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNv
ZGUoSlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSkpKSwgdGFyZ2V0ICsgMik7Ci0gICAgICAg
ICAgICBKdW1wIGlzTm9uWmVybyA9IGpuejMyKFg4Njo6ZWF4LCBJbW0zMihKU0ltbWVkaWF0ZTo6
VGFnQml0VHlwZUludGVnZXIpKTsKKyAgICAgICAgICAgIEp1bXAgaXNOb25aZXJvID0gZW1pdEp1
bXBJZkltbU51bShYODY6OmVheCk7CiAKICAgICAgICAgICAgIGFkZEp1bXAoamVQdHIoWDg2Ojpl
YXgsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpKSwgdGFyZ2V0
ICsgMik7CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShqbmVQdHIoWDg2OjplYXgsIEltbVB0cihK
U1ZhbHVlUHRyOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpKTsKQEAgLTgwNiw3ICs4MzYsMTIg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX2Jp
dG5vdDogewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kLCBYODY6OmVheCk7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOwotICAgICAgICAgICAgeG9yUHRyKEltbTMyKH5KU0lt
bWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIpLCBYODY6OmVheCk7CisjaWYgVVNFKEFMVEVSTkFU
RV9KU0lNTUVESUFURSkKKyAgICAgICAgICAgIG5vdDMyKFg4Njo6ZWF4KTsKKyAgICAgICAgICAg
IGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyNlbHNl
CisgICAgICAgICAgICB4b3JQdHIoSW1tMzIofkpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlciks
IFg4Njo6ZWF4KTsKKyNlbmRpZgogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2JpdG5vdCk7CiAgICAgICAgIH0KQEAgLTgzNCw3ICs4NjksNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKIAogICAgICAgICAg
ICAgSnVtcCBpc1plcm8gPSBqZVB0cihYODY6OmVheCwgSW1tUHRyKEpTVmFsdWVQdHI6OmVuY29k
ZShKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSkpOwotICAgICAgICAgICAgYWRkSnVtcChq
bnozMihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyKSksIHRh
cmdldCArIDIpOworICAgICAgICAgICAgYWRkSnVtcChlbWl0SnVtcElmSW1tTnVtKFg4Njo6ZWF4
KSwgdGFyZ2V0ICsgMik7CiAKICAgICAgICAgICAgIGFkZEp1bXAoamVQdHIoWDg2OjplYXgsIElt
bVB0cihKU1ZhbHVlUHRyOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpLCB0YXJnZXQgKyAyKTsK
ICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGpuZVB0cihYODY6OmVheCwgSW1tUHRyKEpTVmFsdWVQ
dHI6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKSkpKTsKQEAgLTg2Miw3ICs4OTcsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBYODY6OmVheCwgY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgWDg2OjplZHgpOwogICAgICAgICAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtcyhYODY6OmVheCwgWDg2OjplZHgsIFg4Njo6ZWN4KTsK
ICAgICAgICAgICAgIHhvclB0cihYODY6OmVkeCwgWDg2OjplYXgpOwotICAgICAgICAgICAgZW1p
dEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRGYXN0
QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCwgWDg2OjplYXgpOwogICAgICAgICAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2JpdHhvcik7CiAgICAgICAgIH0KQEAgLTk0NSw3ICs5
ODAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBp
bnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY1ZSZWcsIFg4Njo6ZWF4KTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgSnVtcCB3YXNJbW1lZGlhdGUgPSBqbnozMihYODY6OmVheCwgSW1tMzIo
SlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyKSk7CisgICAgICAgICAgICBKdW1wIHdhc0lt
bWVkaWF0ZSA9IGVtaXRKdW1wSWZJbW1OdW0oWDg2OjplYXgpOwogCiAgICAgICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoWDg2OjplYXgsIHNyY1ZSZWcpOwogICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKFg4Njo6ZWF4LCBGSUVMRF9PRkZTRVQoSlNDZWxsLCBtX3N0cnVjdHVy
ZSkpLCBYODY6OmVjeCk7CkBAIC0xMjUzLDcgKzEyODgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgSnVtcCBub3RJbW0gPSBnZXRTbG93Q2FzZShp
dGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2so
WDg2OjplZHgpOworICAgICAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6
OmVkeCwgWDg2OjplZHgpOwogICAgICAgICAgICAgbm90SW1tLmxpbmsodGhpcyk7CiAgICAgICAg
ICAgICBlbWl0UHV0SklUU3R1YkFyZyhYODY6OmVheCwgMSk7CiAgICAgICAgICAgICBlbWl0UHV0
SklUU3R1YkFyZyhYODY6OmVkeCwgMik7CkBAIC0xMzQyLDcgKzEzNzcsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgSnVtcCBub3RJbW0gPSBnZXRT
bG93Q2FzZShpdGVyKTsKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAg
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0lt
bU5vQ2hlY2soWDg2OjplZHgpOworICAgICAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9D
aGVjayhYODY6OmVkeCwgWDg2OjplZHgpOwogICAgICAgICAgICAgbm90SW1tLmxpbmsodGhpcyk7
CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnKFg4
Njo6ZWF4LCAxKTsKQEAgLTEzOTUsNyArMTQzMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKICAgICAgICAg
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgICAgIHhvclB0cihJbW0zMihKU0ltbWVk
aWF0ZTo6RnVsbFRhZ1R5cGVCb29sKSwgWDg2OjplYXgpOworICAgICAgICAgICAgeG9yUHRyKElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wpKSwg
WDg2OjplYXgpOwogICAgICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmcoWDg2OjplYXgsIDEpOwog
ICAgICAgICAgICAgZW1pdENUSUNhbGwoSW50ZXJwcmV0ZXI6OmN0aV9vcF9ub3QpOwogICAgICAg
ICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKQEAgLTE2OTYsOCArMTczMSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1h
Y2hpbmVUcmFtcG8KIAogICAgIEp1bXAgYXJyYXlfZmFpbHVyZUNhc2VzMyA9IGphMzIoWDg2Ojpl
YXgsIEltbTMyKEpTSW1tZWRpYXRlOjptYXhJbW1lZGlhdGVJbnQpKTsKIAotICAgIC8vIFg4Njo6
ZWF4IGNvbnRhaW5zIGEgNjQgYml0IHZhbHVlIChpcyBzaWduZWQsIGlzIHplcm8gZXh0ZW5kZWQp
IHNvIHdlIGRvbid0IG5lZWQgc2lnbiBleHRlbmQgaGVyZS4KLSAgICBlbWl0RmFzdEFyaXRoSW50
VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4KTsKKyAgICAvLyBYODY6OmVheCBjb250YWlucyBhIDY0IGJp
dCB2YWx1ZSAoaXMgcG9zaXRpdmUsIGlzIHplcm8gZXh0ZW5kZWQpIHNvIHdlIGRvbid0IG5lZWQg
c2lnbiBleHRlbmQgaGVyZS4KKyAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6
ZWF4LCBYODY6OmVheCk7CiAKICAgICByZXQoKTsKIApAQCAtMTcxNCw4ICsxNzQ5LDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wbwogCiAgICAgSnVtcCBzdHJpbmdf
ZmFpbHVyZUNhc2VzMyA9IGphMzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjptYXhJbW1l
ZGlhdGVJbnQpKTsKIAotICAgIC8vIFg4Njo6ZWF4IGNvbnRhaW5zIGEgNjQgYml0IHZhbHVlIChp
cyBzaWduZWQsIGlzIHplcm8gZXh0ZW5kZWQpIHNvIHdlIGRvbid0IG5lZWQgc2lnbiBleHRlbmQg
aGVyZS4KLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4KTsKKyAgICAv
LyBYODY6OmVheCBjb250YWlucyBhIDY0IGJpdCB2YWx1ZSAoaXMgcG9zaXRpdmUsIGlzIHplcm8g
ZXh0ZW5kZWQpIHNvIHdlIGRvbid0IG5lZWQgc2lnbiBleHRlbmQgaGVyZS4KKyAgICBlbWl0RmFz
dEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4LCBYODY6OmVheCk7CiAgICAgCiAgICAgcmV0
KCk7CiAjZW5kaWYKSW5kZXg6IGppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBqaXQvSklULmgJKHJl
dmlzaW9uIDM5NzM2KQorKysgaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAs
MTMgQEAKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi0jZGVmaW5lIFNUVUJfQVJHU19jb2RlIDB4MEMKLSNkZWZpbmUgU1RVQl9BUkdTX3Jl
Z2lzdGVyRmlsZSAweDBECi0jZGVmaW5lIFNUVUJfQVJHU19jYWxsRnJhbWUgMHgwRQotI2RlZmlu
ZSBTVFVCX0FSR1NfZXhjZXB0aW9uIDB4MEYKLSNkZWZpbmUgU1RVQl9BUkdTX3Byb2ZpbGVyUmVm
ZXJlbmNlIDB4MTAKLSNkZWZpbmUgU1RVQl9BUkdTX2dsb2JhbERhdGEgMHgxMQorI2RlZmluZSBT
VFVCX0FSR1Nfb2Zmc2V0IDB4MEMKKyNkZWZpbmUgU1RVQl9BUkdTX2NvZGUgKFNUVUJfQVJHU19v
ZmZzZXQpCisjZGVmaW5lIFNUVUJfQVJHU19yZWdpc3RlckZpbGUgKFNUVUJfQVJHU19vZmZzZXQg
KyAxKQorI2RlZmluZSBTVFVCX0FSR1NfY2FsbEZyYW1lIChTVFVCX0FSR1Nfb2Zmc2V0ICsgMikK
KyNkZWZpbmUgU1RVQl9BUkdTX2V4Y2VwdGlvbiAoU1RVQl9BUkdTX29mZnNldCArIDMpCisjZGVm
aW5lIFNUVUJfQVJHU19wcm9maWxlclJlZmVyZW5jZSAoU1RVQl9BUkdTX29mZnNldCArIDQpCisj
ZGVmaW5lIFNUVUJfQVJHU19nbG9iYWxEYXRhIChTVFVCX0FSR1Nfb2Zmc2V0ICsgNSkKIAogI2Rl
ZmluZSBBUkdfY2FsbEZyYW1lIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KEFSR1NbU1RVQl9BUkdT
X2NhbGxGcmFtZV0pCiAjZGVmaW5lIEFSR19yZWdpc3RlckZpbGUgc3RhdGljX2Nhc3Q8UmVnaXN0
ZXJGaWxlKj4oQVJHU1tTVFVCX0FSR1NfcmVnaXN0ZXJGaWxlXSkKQEAgLTQzNSw3ICs0MzYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZVB0ciBnZXRDb25zdGFudE9wZXJhbmQo
dW5zaWduZWQgc3JjKTsKICAgICAgICAgaW50MzJfdCBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlh
dGVJbnQodW5zaWduZWQgc3JjKTsKICAgICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludCh1bnNpZ25lZCBzcmMpOwotICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50MzFC
aXRJbW1lZGlhdGVJbnQodW5zaWduZWQgc3JjKTsKIAogICAgICAgICBKdW1wIGVtaXRKdW1wSWZK
U0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmSlNDZWxs
KFJlZ2lzdGVySUQpOwpAQCAtNDU0LDE2ICs0NTQsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiwgaW50IHZSZWcpOwogCisgICAgICAgIEpJVDo6SnVtcCBlbWl0
SnVtcElmSW1tTnVtKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbU51bShSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbW1OdW1zKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogCiAgICAgICAg
IEp1bXAgY2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0cnVjdHVyZSogc3RydWN0dXJl
KTsKIAorI2lmICFVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQogICAgICAgICB2b2lkIGVtaXRG
YXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklEKTsKICAgICAgICAgSnVtcCBlbWl0RmFz
dEFyaXRoRGVUYWdJbW1lZGlhdGVKdW1wSWZaZXJvKFJlZ2lzdGVySUQpOwotICAgICAgICB2b2lk
IGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklEKTsKKyNlbmRpZgorICAgICAg
ICB2b2lkIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KTsKICAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoUmVnaXN0ZXJJ
RCk7Ci0gICAgICAgIHZvaWQgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhSZWdpc3RlcklE
KTsKKyAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgICAgIHZvaWQgZW1pdFRhZ0FzQm9vbEltbWVk
aWF0ZShSZWdpc3RlcklEIHJlZyk7CiAKSW5kZXg6IGppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBqaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDM5NzM2KQorKysgaml0
L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMyArNjAsMTEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfbHNoaWZ0KHVucwogICAgIGFuZDMyKEltbTMyKDB4
MWYpLCBYODY6OmVjeCk7CiAjZW5kaWYKICAgICBsc2hpZnQzMihYODY6OmVjeCwgWDg2OjplYXgp
OwotI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCi0gICAgZW1pdEZhc3RBcml0aEludFRv
SW1tTm9DaGVjayhYODY6OmVheCk7Ci0jZWxzZQorI2lmICFVU0UoQUxURVJOQVRFX0pTSU1NRURJ
QVRFKQogICAgIGFkZFNsb3dDYXNlKGpvQWRkMzIoWDg2OjplYXgsIFg4Njo6ZWF4KSk7CiAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKLSAgICBlbWl0RmFzdEFyaXRo
UmVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOwogI2VuZGlmCisgICAgZW1pdEZhc3RBcml0aFJlVGFn
SW1tZWRpYXRlKFg4Njo6ZWF4LCBYODY6OmVheCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHQpOwogfQogdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhTbG93X29wX2xzaGlmdCh1
bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtOTcsNyArOTUsMTEgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVGYXN0QXJpdGhfb3BfcnNoaWZ0KHVucwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMSwgWDg2OjplYXgpOwogICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0o
WDg2OjplYXgpOwogICAgICAgICAvLyBNYXNrIHdpdGggMHgxZiBhcyBwZXIgZWNtYS0yNjIgMTEu
Ny4yIHN0ZXAgNy4KKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgICAgICByc2hp
ZnQzMihJbW0zMihKU0ltbWVkaWF0ZTo6Z2V0VHJ1bmNhdGVkVUludDMyKGdldENvbnN0YW50T3Bl
cmFuZChvcDIpKSAmIDB4MWYpLCBYODY6OmVheCk7CisjZWxzZQogICAgICAgICByc2hpZnRQdHIo
SW1tMzIoSlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZFVJbnQzMihnZXRDb25zdGFudE9wZXJhbmQo
b3AyKSkgJiAweDFmKSwgWDg2OjplYXgpOworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCBYODY6OmVheCwgb3AyLCBYODY6OmVjeCk7CiAg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CkBAIC0xMDgsOSAr
MTEwLDE3IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoX29wX3JzaGlmdCh1bnMKICAgICAg
ICAgLy8gT24gMzItYml0IHg4NiB0aGlzIGlzIG5vdCBuZWNlc3NhcnksIHNpbmNlIHRoZSBzaGlm
dCBhbm91bnQgaXMgaW1wbGljaXRseSBtYXNrZWQgaW4gdGhlIGluc3RydWN0aW9uLgogICAgICAg
ICBhbmQzMihJbW0zMigweDFmKSwgWDg2OjplY3gpOwogI2VuZGlmCisjaWYgVVNFKEFMVEVSTkFU
RV9KU0lNTUVESUFURSkKKyAgICAgICAgcnNoaWZ0MzIoWDg2OjplY3gsIFg4Njo6ZWF4KTsKKyNl
bHNlCiAgICAgICAgIHJzaGlmdFB0cihYODY6OmVjeCwgWDg2OjplYXgpOworI2VuZGlmCiAgICAg
fQotICAgIG9yUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlciksIFg4Njo6
ZWF4KTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgIGVtaXRGYXN0QXJpdGhJ
bnRUb0ltbU5vQ2hlY2soWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyNlbHNlCisgICAgb3JQdHIoSW1t
MzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSwgWDg2OjplYXgpOworI2VuZGlmCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogdm9pZCBKSVQ6OmNvbXBpbGVGYXN0
QXJpdGhTbG93X29wX3JzaGlmdCh1bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVkLCB1bnNpZ25lZCBv
cDIsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMzAsMTQgKzE0
MCwyOCBAQCB2b2lkIEpJVDo6Y29tcGlsZUZhc3RBcml0aFNsb3dfb3BfcnNoaWZ0CiAKIHZvaWQg
SklUOjpjb21waWxlRmFzdEFyaXRoX29wX2JpdGFuZCh1bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVk
IG9wMSwgdW5zaWduZWQgb3AyKQogewotICAgIGlmIChpc09wZXJhbmRDb25zdGFudDMxQml0SW1t
ZWRpYXRlSW50KG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
b3AxKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgWDg2OjplYXgpOwog
ICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplYXgpOworI2lmIFVTRShB
TFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgICAgIGludDMyX3QgaW1tID0gSlNJbW1lZGlhdGU6
OmludFZhbHVlKGdldENvbnN0YW50T3BlcmFuZChvcDEpKTsKKyAgICAgICAgYW5kUHRyKEltbTMy
KGltbSksIFg4Njo6ZWF4KTsKKyAgICAgICAgaWYgKGltbSA+PSAwKQorICAgICAgICAgICAgZW1p
dEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6OmVheCwgWDg2OjplYXgpOworI2Vsc2UKICAg
ICAgICAgYW5kUHRyKEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTSW1tZWRpYXRlOjpyYXdW
YWx1ZShnZXRDb25zdGFudE9wZXJhbmQob3AxKSkpKSwgWDg2OjplYXgpOwotICAgIH0gZWxzZSBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnQzMUJpdEltbWVkaWF0ZUludChvcDIpKSB7CisjZW5kaWYKKyAg
ICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKICAgICAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIFg4Njo6ZWF4KTsKICAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1N
RURJQVRFKQorICAgICAgICBpbnQzMl90IGltbSA9IEpTSW1tZWRpYXRlOjppbnRWYWx1ZShnZXRD
b25zdGFudE9wZXJhbmQob3AyKSk7CisgICAgICAgIGFuZFB0cihJbW0zMihpbW0pLCBYODY6OmVh
eCk7CisgICAgICAgIGlmIChpbW0gPj0gMCkKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRU
b0ltbU5vQ2hlY2soWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyNlbHNlCiAgICAgICAgIGFuZFB0cihJ
bW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6cmF3VmFsdWUoZ2V0Q29uc3Rh
bnRPcGVyYW5kKG9wMikpKSksIFg4Njo6ZWF4KTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9wMSwgWDg2OjplYXgsIG9wMiwgWDg2OjplZHgp
OwogICAgICAgICBhbmRQdHIoWDg2OjplZHgsIFg4Njo6ZWF4KTsKQEAgLTE0OCwxMCArMTcyLDEw
IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRoX29wX2JpdGFuZCh1bnMKIHZvaWQgSklUOjpj
b21waWxlRmFzdEFyaXRoU2xvd19vcF9iaXRhbmQodW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCBv
cDEsIHVuc2lnbmVkIG9wMiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50MzFC
aXRJbW1lZGlhdGVJbnQob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDEpKSB7CiAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnRnJvbVZpcnR1YWxSZWdpc3Rl
cihvcDEsIDEsIFg4Njo6ZWN4KTsKICAgICAgICAgZW1pdFB1dEpJVFN0dWJBcmcoWDg2OjplYXgs
IDIpOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnQzMUJpdEltbWVkaWF0ZUludChv
cDIpKSB7CisgICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIp
KSB7CiAgICAgICAgIGVtaXRQdXRKSVRTdHViQXJnKFg4Njo6ZWF4LCAxKTsKICAgICAgICAgZW1p
dFB1dEpJVFN0dWJBcmdGcm9tVmlydHVhbFJlZ2lzdGVyKG9wMiwgMiwgWDg2OjplY3gpOwogICAg
IH0gZWxzZSB7CkBAIC0xNjgsMTkgKzE5MiwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZUZhc3RBcml0
aF9vcF9tb2QodW5zaWduCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4
KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2OjplY3gpOwogI2lmIFVTRShB
TFRFUk5BVEVfSlNJTU1FRElBVEUpCi0gICAgYWRkU2xvd0Nhc2UoamVQdHIoWDg2OjplY3gsIElt
bVB0cihKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSkpOwotICAgIGVtaXRGYXN0QXJpdGhJ
bW1Ub0ludChYODY6OmVheCk7Ci0gICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWN4KTsK
KyAgICBhZGRTbG93Q2FzZShqZVB0cihYODY6OmVjeCwgSW1tUHRyKEpTVmFsdWVQdHI6OmVuY29k
ZShKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSkpKTsKICAgICBtb2QzMihYODY6OmVjeCwg
WDg2OjplYXgsIFg4Njo6ZWR4KTsKLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4
Njo6ZWR4KTsKICNlbHNlCiAgICAgZW1pdEZhc3RBcml0aERlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4
KTsKICAgICBhZGRTbG93Q2FzZShlbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGVKdW1wSWZaZXJv
KFg4Njo6ZWN4KSk7CiAgICAgbW9kMzIoWDg2OjplY3gsIFg4Njo6ZWF4LCBYODY6OmVkeCk7CiAg
ICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplZHgsIFg4Njo6ZWR4KTsKLSAgICBlbWl0RmFzdEFy
aXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplZHgpOwogI2VuZGlmCi0gICAgbW92ZShYODY6OmVkeCwg
WDg2OjplYXgpOworICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVkeCwgWDg2
OjplYXgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KIHZvaWQgSklU
Ojpjb21waWxlRmFzdEFyaXRoU2xvd19vcF9tb2QodW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCwg
dW5zaWduZWQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xOTMs
OCArMjEzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhTbG93X29wX21vZCh1bgogICAg
IEp1bXAgbm90SW1tMSA9IGdldFNsb3dDYXNlKGl0ZXIpOwogICAgIEp1bXAgbm90SW1tMiA9IGdl
dFNsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBlbWl0RmFzdEFy
aXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOwotICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVk
aWF0ZShYODY6OmVjeCk7CisgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4
LCBYODY6OmVheCk7CisgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWN4LCBY
ODY6OmVjeCk7CiAgICAgbm90SW1tMS5saW5rKHRoaXMpOwogICAgIG5vdEltbTIubGluayh0aGlz
KTsKICNlbmRpZgpAQCAtMjE2LDkgKzIzNiw4IEBAIHZvaWQgSklUOjpjb21waWxlRmFzdEFyaXRo
X29wX2FkZChJbnN0cnUKICNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQogICAgICAgICAv
LyBGSVhNRTogaW52ZXN0aWdhdGUgcGVyZm9ybWluZyBhIDMxLWJpdCBhZGQgaGVyZSAoY2FuIHdl
IHByZXNlcnZlIHVwcGVyIGJpdCAmIGRldGVjdCBvdmVyZmxvdyBmcm9tIGxvdyB3b3JkIHRvIGhp
Z2g/KQogICAgICAgICAvLyAgICAgICAgKG9yLCBkZXRlY3QgY2Fycnk/IC0gaWYgY29uc3QgaXMg
cG9zaXRpdmUsIHdpbGwgb25seSBjYXJyeSB3aGVuIG92ZXJmbG93aW5nIGZyb20gbmVnYXRpdmUg
dG8gcG9zaXRpdmU/KQotICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplYXgpOwog
ICAgICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVk
aWF0ZUludChvcDEpKSwgWDg2OjplYXgpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1t
Tm9DaGVjayhYODY6OmVheCk7CisgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2so
WDg2OjplYXgsIFg4Njo6ZWF4KTsKICNlbHNlCiAgICAgICAgIGFkZFNsb3dDYXNlKGpvQWRkMzIo
SW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMSkgPDwgSlNJbW1lZGlhdGU6
OkludGVnZXJQYXlsb2FkU2hpZnQpLCBYODY6OmVheCkpOwogICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihYODY6OmVheCwgWDg2OjplYXgpOwpAQCAtMjMwLDcgKzI0OSw3IEBAIHZvaWQgSklUOjpj
b21waWxlRmFzdEFyaXRoX29wX2FkZChJbnN0cnUKICNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJ
QVRFKQogICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplYXgpOwogICAgICAgICBh
ZGRTbG93Q2FzZShqb0FkZDMyKEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChv
cDIpKSwgWDg2OjplYXgpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhY
ODY6OmVheCk7CisgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplYXgs
IFg4Njo6ZWF4KTsKICNlbHNlCiAgICAgICAgIGFkZFNsb3dDYXNlKGpvQWRkMzIoSW1tMzIoZ2V0
Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMikgPDwgSlNJbW1lZGlhdGU6OkludGVnZXJQ
YXlsb2FkU2hpZnQpLCBYODY6OmVheCkpOwogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihYODY6
OmVheCwgWDg2OjplYXgpOwpAQCAtMzA1LDI5ICszMjQsMjUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVG
YXN0QXJpdGhfb3BfbXVsKEluc3RydQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MiwgWDg2OjplYXgpOwogICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oWDg2Ojpl
YXgpOwogI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCi0gICAgICAgIGVtaXRGYXN0QXJp
dGhJbW1Ub0ludChYODY6OmVheCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGpvTXVsMzIoSW1tMzIo
dmFsdWUpLCBYODY6OmVheCwgWDg2OjplYXgpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRv
SW1tTm9DaGVjayhYODY6OmVheCk7CiAjZWxzZQogICAgICAgICBlbWl0RmFzdEFyaXRoRGVUYWdJ
bW1lZGlhdGUoWDg2OjplYXgpOwogICAgICAgICBhZGRTbG93Q2FzZShqb011bDMyKEltbTMyKHZh
bHVlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KSk7CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4
Njo6ZWF4LCBYODY6OmVheCk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShY
ODY6OmVheCk7CiAjZW5kaWYKKyAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4
Njo6ZWF4LCBYODY6OmVheCk7CiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
KTsKICAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikgJiYg
KCh2YWx1ZSA9IGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpKSA+IDApKSB7CiAg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBYODY6OmVheCk7CiAgICAgICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEltbU51bShYODY6OmVheCk7CiAjaWYgVVNFKEFMVEVSTkFURV9K
U0lNTUVESUFURSkKLSAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWF4KTsKICAg
ICAgICAgYWRkU2xvd0Nhc2Uoam9NdWwzMihJbW0zMih2YWx1ZSksIFg4Njo6ZWF4LCBYODY6OmVh
eCkpOwotICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4KTsKICNl
bHNlCiAgICAgICAgIGVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7CiAgICAg
ICAgIGFkZFNsb3dDYXNlKGpvTXVsMzIoSW1tMzIodmFsdWUpLCBYODY6OmVheCwgWDg2OjplYXgp
KTsKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKLSAgICAg
ICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsKICNlbmRpZgorICAgICAg
ICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplYXgsIFg4Njo6ZWF4KTsKICAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogICAgIH0gZWxzZQogICAgICAgICBj
b21waWxlQmluYXJ5QXJpdGhPcChvcF9tdWwsIHJlc3VsdCwgb3AxLCBvcDIsIE9wZXJhbmRUeXBl
czo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CkBAIC0zNTcsOSAr
MzcyLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfcG9zdF9pbmModQogICAgIG1v
dmUoWDg2OjplYXgsIFg4Njo6ZWR4KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0o
WDg2OjplYXgpOwogI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCi0gICAgZW1pdEZhc3RB
cml0aEltbVRvSW50KFg4Njo6ZWR4KTsKICAgICBhZGRTbG93Q2FzZShqb0FkZDMyKEltbTMyKDEp
LCBYODY6OmVkeCkpOwotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplZHgp
OworICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplZHgsIFg4Njo6ZWR4KTsK
ICNlbHNlCiAgICAgYWRkU2xvd0Nhc2Uoam9BZGQzMihJbW0zMigxIDw8IEpTSW1tZWRpYXRlOjpJ
bnRlZ2VyUGF5bG9hZFNoaWZ0KSwgWDg2OjplZHgpKTsKICAgICBzaWduRXh0ZW5kMzJUb1B0cihY
ODY6OmVkeCwgWDg2OjplZHgpOwpAQCAtMzgzLDkgKzM5Nyw4IEBAIHZvaWQgSklUOjpjb21waWxl
RmFzdEFyaXRoX29wX3Bvc3RfZGVjKHUKICAgICBtb3ZlKFg4Njo6ZWF4LCBYODY6OmVkeCk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKICNpZiBVU0UoQUxURVJO
QVRFX0pTSU1NRURJQVRFKQotICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVkeCk7CiAg
ICAgYWRkU2xvd0Nhc2Uoam9TdWIzMihJbW0zMigxKSwgWDg2OjplZHgpKTsKLSAgICBlbWl0RmFz
dEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWR4KTsKKyAgICBlbWl0RmFzdEFyaXRoSW50VG9J
bW1Ob0NoZWNrKFg4Njo6ZWR4LCBYODY6OmVkeCk7CiAjZWxzZQogICAgIGFkZFNsb3dDYXNlKGpv
U3ViMzIoSW1tMzIoMSA8PCBKU0ltbWVkaWF0ZTo6SW50ZWdlclBheWxvYWRTaGlmdCksIFg4Njo6
ZWR4KSk7CiAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplZHgsIFg4Njo6ZWR4KTsKQEAgLTQw
OCwxMCArNDIxLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfcHJlX2luYyh1bgog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCBYODY6OmVheCk7CiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKICNpZiBVU0UoQUxURVJOQVRFX0pTSU1N
RURJQVRFKQotICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVheCk7CiAgICAgLy8gRklY
TUU6IENvdWxkIGFkZCBwdHIgJiBzcGVjaWZ5IGludDY0OyBubyBuZWVkIHRvIHJlLXNpZ24tZXh0
ZW5kPwogICAgIGFkZFNsb3dDYXNlKGpvQWRkMzIoSW1tMzIoMSksIFg4Njo6ZWF4KSk7Ci0gICAg
ZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhYODY6OmVheCk7CisgICAgZW1pdEZhc3RBcml0
aEludFRvSW1tTm9DaGVjayhYODY6OmVheCwgWDg2OjplYXgpOwogI2Vsc2UKICAgICBhZGRTbG93
Q2FzZShqb0FkZDMyKEltbTMyKDEgPDwgSlNJbW1lZGlhdGU6OkludGVnZXJQYXlsb2FkU2hpZnQp
LCBYODY6OmVheCkpOwogICAgIHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6OmVheCk7
CkBAIC00MzQsOSArNDQ2LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVGYXN0QXJpdGhfb3BfcHJlX2Rl
Yyh1bgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCBYODY6OmVheCk7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tTnVtKFg4Njo6ZWF4KTsKICNpZiBVU0UoQUxURVJOQVRF
X0pTSU1NRURJQVRFKQotICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVheCk7CiAgICAg
YWRkU2xvd0Nhc2Uoam9TdWIzMihJbW0zMigxKSwgWDg2OjplYXgpKTsKLSAgICBlbWl0RmFzdEFy
aXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWF4KTsKKyAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1O
b0NoZWNrKFg4Njo6ZWF4LCBYODY6OmVheCk7CiAjZWxzZQogICAgIGFkZFNsb3dDYXNlKGpvU3Vi
MzIoSW1tMzIoMSA8PCBKU0ltbWVkaWF0ZTo6SW50ZWdlclBheWxvYWRTaGlmdCksIFg4Njo6ZWF4
KSk7CiAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKQEAgLTU1NSw5
ICs1NjYsNyBAQCB2b2lkIEpJVDo6cHV0RG91YmxlUmVzdWx0VG9KU051bWJlckNlbGxPCiAgICAg
X18gY21wbF9pcigweDgwMDAsIHRlbXBSZWcyKTsKICAgICBfXyBsaW5rKF9fIGplKCksIHJlc3Vs
dExvb2tlZExpa2VJbW1CdXRBY3R1YWxseUlzbnQpOyAvLyBBY3R1YWxseSB3YXMgLTAKICAgICAv
LyBZZXMgaXQgcmVhbGx5IHJlYWxseSByZWFsbHkgaXMgcmVwcmVzZW50YWJsZSBhcyBhIEpTSW1t
ZWRpYXRlLgotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2sodGVtcFJlZzEpOwotICAg
IGlmICh0ZW1wUmVnMSAhPSBYODY6OmVheCkKLSAgICAgICAgX18gbW92bF9ycih0ZW1wUmVnMSwg
WDg2OjplYXgpOworICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2sodGVtcFJlZzEsIFg4
Njo6ZWF4KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTU3NSw3
ICs1ODQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bjb2RlSUQgCiAgICAg
ICAgIEFTU0VSVCh0eXBlcy5zZWNvbmQoKS5taWdodEJlTnVtYmVyKCkpOwogCiAgICAgICAgIC8v
IENoZWNrIG9wMiBpcyBhIG51bWJlcgotICAgICAgICBfXyB0ZXN0bF9pMzJyKEpTSW1tZWRpYXRl
OjpUYWdCaXRUeXBlSW50ZWdlciwgWDg2OjplZHgpOworICAgICAgICBfXyB0ZXN0bF9pMzJyKEpT
SW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlciwgWDg2OjplZHgpOwogICAgICAgICBKbXBTcmMgb3Ay
aW1tID0gX18gam5lKCk7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlz
TnVtYmVyKCkpIHsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChYODY6
OmVkeCwgc3JjMik7CkBAIC01ODUsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlB
cml0aE9wKE9wY29kZUlEIAogCiAgICAgICAgIC8vICgxKSBJbiB0aGlzIGNhc2Ugc3JjMiBpcyBh
IHJldXNhYmxlIG51bWJlciBjZWxsLgogICAgICAgICAvLyAgICAgU2xvdyBjYXNlIGlmIHNyYzEg
aXMgbm90IGEgbnVtYmVyIHR5cGUuCi0gICAgICAgIF9fIHRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6
OlRhZ0JpdFR5cGVJbnRlZ2VyLCBYODY6OmVheCk7CisgICAgICAgIF9fIHRlc3RsX2kzMnIoSlNJ
bW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyLCBYODY6OmVheCk7CiAgICAgICAgIEptcFNyYyBvcDFp
bW0gPSBfXyBqbmUoKTsKICAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051
bWJlcigpKSB7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoWDg2Ojpl
YXgsIHNyYzEpOwpAQCAtNjIyLDcgKzYzMSw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJp
dGhPcChPcGNvZGVJRCAKICAgICAgICAgQVNTRVJUKHR5cGVzLmZpcnN0KCkubWlnaHRCZU51bWJl
cigpKTsKIAogICAgICAgICAvLyBDaGVjayBvcDEgaXMgYSBudW1iZXIKLSAgICAgICAgX18gdGVz
dGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIFg4Njo6ZWF4KTsKKyAgICAg
ICAgX18gdGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIsIFg4Njo6ZWF4KTsK
ICAgICAgICAgSm1wU3JjIG9wMWltbSA9IF9fIGpuZSgpOwogICAgICAgICBpZiAoIXR5cGVzLmZp
cnN0KCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChYODY6OmVheCwgc3JjMSk7CkBAIC02MzIsNyArNjQxLDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIAogCiAgICAgICAgIC8vICgxKSBJbiB0
aGlzIGNhc2Ugc3JjMSBpcyBhIHJldXNhYmxlIG51bWJlciBjZWxsLgogICAgICAgICAvLyAgICAg
U2xvdyBjYXNlIGlmIHNyYzIgaXMgbm90IGEgbnVtYmVyIHR5cGUuCi0gICAgICAgIF9fIHRlc3Rs
X2kzMnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCBYODY6OmVkeCk7CisgICAgICAg
IF9fIHRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyLCBYODY6OmVkeCk7CiAg
ICAgICAgIEptcFNyYyBvcDJpbW0gPSBfXyBqbmUoKTsKICAgICAgICAgaWYgKCF0eXBlcy5zZWNv
bmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkgewogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKFg4Njo6ZWR4LCBzcmMyKTsKQEAgLTY3OSw3ICs2ODgsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bjb2RlSUQgCiAgICAgICAgIF9fIHN1YmxfcnIoWDg2
OjplZHgsIFg4Njo6ZWF4KTsKICAgICAgICAgYWRkU2xvd0Nhc2UoX18gam8oKSk7CiAgICAgICAg
IHNpZ25FeHRlbmQzMlRvUHRyKFg4Njo6ZWF4LCBYODY6OmVheCk7Ci0gICAgICAgIGVtaXRGYXN0
QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7CisgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRh
Z0ltbWVkaWF0ZShYODY6OmVheCwgWDg2OjplYXgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChvcGNvZGVJRCA9PSBvcF9tdWwpOwogICAgICAgICAvLyBjb252ZXJ0IGVheCAmIGVkeCBm
cm9tIEpTSW1tZWRpYXRlcyB0byBpbnRzLCBhbmQgY2hlY2sgaWYgZWl0aGVyIGFyZSB6ZXJvCkBA
IC02OTgsNyArNzA3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlE
IAogICAgICAgICBfXyBpbXVsbF9ycihYODY6OmVkeCwgWDg2OjplYXgpOwogICAgICAgICBhZGRT
bG93Q2FzZShfXyBqbygpKTsKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoWDg2OjplYXgsIFg4
Njo6ZWF4KTsKLSAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsK
KyAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4LCBYODY6OmVheCk7
CiAgICAgfQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIApJbmRleDogaml0L0pJ
VENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMzk3MzYp
CisrKyBqaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKEluc3RydWN0CiAgICAgICAgIGNvbXBpbGVP
cENvbnN0cnVjdFNldHVwQXJncyhpbnN0cnVjdGlvbik7CiAKICAgICAvLyBGYXN0IGNoZWNrIGZv
ciBKUyBmdW5jdGlvbi4KLSAgICBKdW1wIGNhbGxMaW5rRmFpbE5vdE9iamVjdCA9IGpuejMyKFg4
Njo6ZWN4LCBJbW0zMihKU0ltbWVkaWF0ZTo6VGFnTWFzaykpOworICAgIEp1bXAgY2FsbExpbmtG
YWlsTm90T2JqZWN0ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6OmVjeCk7CiAgICAgSnVtcCBj
YWxsTGlua0ZhaWxOb3RKU0Z1bmN0aW9uID0gam5lUHRyKEFkZHJlc3MoWDg2OjplY3gpLCBJbW1Q
dHIobV9pbnRlcnByZXRlci0+bV9qc0Z1bmN0aW9uVnB0cikpOwogCiAgICAgLy8gRmlyc3QsIGlu
IHRoZSBjYXNlIG9mIGEgY29uc3RydWN0LCBhbGxvY2F0ZSB0aGUgbmV3IG9iamVjdC4KQEAgLTMw
OSw3ICszMDksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKEluc3RydWN0CiAg
ICAgICAgIGNvbXBpbGVPcENvbnN0cnVjdFNldHVwQXJncyhpbnN0cnVjdGlvbik7CiAKICAgICAv
LyBDaGVjayBmb3IgSlNGdW5jdGlvbnMuCi0gICAgSnVtcCBpc05vdE9iamVjdCA9IGpuelB0cihY
ODY6OmVjeCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ01hc2spKTsKKyAgICBKdW1wIGlzTm90T2Jq
ZWN0ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6OmVjeCk7CiAgICAgSnVtcCBpc0pTRnVuY3Rp
b24gPSBqZVB0cihBZGRyZXNzKFg4Njo6ZWN4KSwgSW1tUHRyKG1faW50ZXJwcmV0ZXItPm1fanNG
dW5jdGlvblZwdHIpKTsKIAogICAgIC8vIFRoaXMgaGFuZGxlcyBob3N0IGZ1bmN0aW9ucwpJbmRl
eDogaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBqaXQvSklUSW5saW5lTWV0
aG9kcy5oCShyZXZpc2lvbiAzOTczNikKKysrIGppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOCwyNCArMTI4LDYgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNP
cGVyYW5kQ29uc3RhbgogICAgIHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoc3JjKSAmJiBKU0ltbWVkaWF0ZTo6aXNOdW1iZXIoZ2V0Q29uc3RhbnRPcGVyYW5kKHNy
YykpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudDMxQml0
SW1tZWRpYXRlSW50KHVuc2lnbmVkIHNyYykKLXsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChzcmMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBK
U1ZhbHVlUHRyIHZhbHVlID0gZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYyk7Ci0KLSNpZiBVU0UoQUxU
RVJOQVRFX0pTSU1NRURJQVRFKQotICAgIGlmICghSlNJbW1lZGlhdGU6OmlzTnVtYmVyKHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50MzJfdCBpbW0gPSBKU0ltbWVkaWF0
ZTo6aW50VmFsdWUodmFsdWUpOwotICAgIHJldHVybiAoaW1tID09ICgoaW1tIDw8IDEpID4+IDEp
KTsKLSNlbHNlCi0gICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSk7Ci0jZW5k
aWYKLX0KLQogLy8gZ2V0IGFyZyBwdXRzIGFuIGFyZyBmcm9tIHRoZSBTRiByZWdpc3RlciBhcnJh
eSBvbnRvIHRoZSBzdGFjaywgYXMgYW4gYXJnIHRvIGEgY29udGV4dCB0aHJlYWRlZCBmdW5jdGlv
bi4KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRKSVRTdHViQXJnRnJvbVZpcnR1YWxS
ZWdpc3Rlcih1bnNpZ25lZCBzcmMsIHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyLCBSZWdpc3RlcklE
IHNjcmF0Y2gpCiB7CkBAIC0yODEsNyArMjYzLDExIEBAIEFMV0FZU19JTkxJTkUgSklUOjpKdW1w
IEpJVDo6Y2hlY2tTdHJ1Y3QKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVt
cElmSlNDZWxsKFJlZ2lzdGVySUQgcmVnKQogeworI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElB
VEUpCisgICAgcmV0dXJuIGp6UHRyKHJlZywgSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEpTSW1tZWRpYXRlOjpUYWdNYXNrKSkpOworI2Vsc2UKICAgICByZXR1cm4ganozMihyZWcsIElt
bTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNrKSk7CisjZW5kaWYKIH0KIAogQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmSlNDZWxsKFJlZ2lzdGVySUQgcmVnKQpAQCAtMjkx
LDcgKzI3NywxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlCiAK
IEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZk5vdEpTQ2VsbChSZWdpc3Rl
cklEIHJlZykKIHsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgIHJldHVybiBq
bnpQdHIocmVnLCBJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSlNJbW1lZGlhdGU6OlRh
Z01hc2spKSk7CisjZWxzZQogICAgIHJldHVybiBqbnozMihyZWcsIEltbTMyKEpTSW1tZWRpYXRl
OjpUYWdNYXNrKSk7CisjZW5kaWYKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQpAQCAtMzExLDQ5ICszMDEsODEg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNlSWZObwogICAgICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiB9CiAKK0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1
bXBJZkltbU51bShSZWdpc3RlcklEIHJlZykKK3sKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJ
QVRFKQorICAgIHJldHVybiBqYWVQdHIocmVnLCBJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oSlNJbW1lZGlhdGU6OlRhZ1R5cGVJbnRlZ2VyKSkpOworI2Vsc2UKKyAgICByZXR1cm4gam56
MzIocmVnLCBJbW0zMihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpKTsKKyNlbmRpZgorfQor
CiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1OdW0oUmVn
aXN0ZXJJRCByZWcpCiB7Ci0gICAgYWRkU2xvd0Nhc2UoanozMihyZWcsIEltbTMyKEpTSW1tZWRp
YXRlOjpUYWdCaXRUeXBlSW50ZWdlcikpKTsKKyNpZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRF
KQorICAgIGFkZFNsb3dDYXNlKGpiUHRyKHJlZywgSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlcikpKSk7CisjZWxzZQorICAgIGFkZFNsb3dD
YXNlKGp6MzIocmVnLCBJbW0zMihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpKSk7CisjZW5k
aWYKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1t
TnVtcyhSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJRCBzY3JhdGNo
KQogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7Ci0gICAgYW5kMzIocmVnMiwgc2NyYXRjaCk7
CisgICAgYW5kUHRyKHJlZzIsIHNjcmF0Y2gpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bU51bShzY3JhdGNoKTsKIH0KIAorI2lmICFVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQogQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEZhc3RBcml0aERlVGFnSW1tZWRpYXRlKFJlZ2lzdGVy
SUQgcmVnKQogewotICAgIHN1YlB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVn
ZXIpLCByZWcpOworICAgIHN1YlB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIp
LCByZWcpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRGYXN0QXJpdGhE
ZVRhZ0ltbWVkaWF0ZUp1bXBJZlplcm8oUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgcmV0dXJuIGp6
U3ViUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlciksIHJlZyk7CisgICAg
cmV0dXJuIGp6U3ViUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpUYWdUeXBlSW50ZWdlciksIHJlZyk7
CiB9CisjZW5kaWYKIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEZhc3RBcml0aFJlVGFn
SW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEZh
c3RBcml0aFJlVGFnSW1tZWRpYXRlKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiB7
Ci0gICAgYWRkUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlciksIHJlZyk7
CisjaWYgVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkKKyAgICBlbWl0RmFzdEFyaXRoSW50VG9J
bW1Ob0NoZWNrKHNyYywgZGVzdCk7CisjZWxzZQorICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAg
ICAgbW92ZShzcmMsIGRlc3QpOworICAgIGFkZFB0cihJbW0zMihKU0ltbWVkaWF0ZTo6VGFnVHlw
ZUludGVnZXIpLCBkZXN0KTsKKyNlbmRpZgogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0RmFzdEFyaXRoSW1tVG9JbnQoUmVnaXN0ZXJJRCByZWcpCiB7CisjaWYgVVNFKEFMVEVSTkFU
RV9KU0lNTUVESUFURSkKKyAgICBVTlVTRURfUEFSQU0ocmVnKTsKKyNlbHNlCiAgICAgcnNoaWZ0
UHRyKEltbTMyKEpTSW1tZWRpYXRlOjpJbnRlZ2VyUGF5bG9hZFNoaWZ0KSwgcmVnKTsKKyNlbmRp
ZgogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0No
ZWNrKFJlZ2lzdGVySUQgcmVnKQorLy8gb3BlcmFuZCBpcyBpbnQzMl90LCBtdXN0IGhhdmUgYmVl
biB6ZXJvLWV4dGVuZGVkIGlmIHJlZ2lzdGVyIGlzIDY0LWJpdC4KK0FMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKIHsKLSAgICBzaWduRXh0ZW5kMzJUb1B0cihyZWcsIHJlZyk7Ci0gICAgYWRk
UHRyKHJlZywgcmVnKTsKLSAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnKTsKKyNp
ZiBVU0UoQUxURVJOQVRFX0pTSU1NRURJQVRFKQorICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAg
ICAgbW92ZShzcmMsIGRlc3QpOworICAgIG9yUHRyKEltbVB0cihyZWludGVycHJldF9jYXN0PHZv
aWQqPihKU0ltbWVkaWF0ZTo6VGFnVHlwZUludGVnZXIpKSwgZGVzdCk7CisjZWxzZQorICAgIHNp
Z25FeHRlbmQzMlRvUHRyKHNyYywgZGVzdCk7CisgICAgYWRkUHRyKGRlc3QsIGRlc3QpOworICAg
IGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShkZXN0LCBkZXN0KTsKKyNlbmRpZgogfQogCiBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0VGFnQXNCb29sSW1tZWRpYXRlKFJlZ2lzdGVySUQg
cmVnKQogewogICAgIGxzaGlmdDMyKEltbTMyKEpTSW1tZWRpYXRlOjpFeHRlbmRlZFBheWxvYWRT
aGlmdCksIHJlZyk7Ci0gICAgb3IzMihJbW0zMihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29s
KSwgcmVnKTsKKyAgICBvcjMyKEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTSW1tZWRpYXRl
OjpGdWxsVGFnVHlwZUJvb2wpKSwgcmVnKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
YWRkU2xvd0Nhc2UoSnVtcCBqdW1wKQpJbmRleDogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAzOTczNikK
KysrIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxMCAr
MTgyLDEwIEBAIHZvaWQgSklUOjpjb21waWxlUHV0QnlJZFNsb3dDYXNlKGludCBiYXMKICAgICBt
X3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvW3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25J
bmRleF0uY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbDsKIH0KIAotc3RhdGljIEpTVmFsdWVFbmNv
ZGVkQXNQb2ludGVyKiByZXNpemVQcm9wZXJ0eVN0b3JhZ2UoSlNPYmplY3QqIGJhc2VPYmplY3Qs
IGludDMyX3Qgb2xkU2l6ZSwgaW50MzJfdCBuZXdTaXplKQorc3RhdGljIEpTT2JqZWN0KiByZXNp
emVQcm9wZXJ0eVN0b3JhZ2UoSlNPYmplY3QqIGJhc2VPYmplY3QsIGludDMyX3Qgb2xkU2l6ZSwg
aW50MzJfdCBuZXdTaXplKQogewogICAgIGJhc2VPYmplY3QtPmFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKG9sZFNpemUsIG5ld1NpemUpOwotICAgIHJldHVybiBKU1ZhbHVlUHRyOjplbmNvZGUoYmFz
ZU9iamVjdCk7CisgICAgcmV0dXJuIGJhc2VPYmplY3Q7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB0cmFuc2l0aW9uV2lsbE5lZWRTdG9yYWdlUmVhbGxvYyhTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogewogICAgIEp1bXBMaXN0IGZhaWx1cmVD
YXNlczsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1
cmUuCi0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqbnozMihYODY6OmVheCwgSW1tMzIoSlNJbW1l
ZGlhdGU6OlRhZ01hc2spKSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90
SlNDZWxsKFg4Njo6ZWF4KSk7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqbmVQdHIoQWRkcmVz
cyhYODY6OmVheCwgRklFTERfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgSW1tUHRyKG9s
ZFN0cnVjdHVyZSkpKTsKICAgICBKdW1wTGlzdCBzdWNjZXNzQ2FzZXM7CiAKQEAgLTMxNywxMyAr
MzE3LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW4KIAogICAg
IC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAg
ICAgbG9hZFB0cihBZGRyZXNzKFg4Njo6ZWF4LCBGSUVMRF9PRkZTRVQoSlNBcnJheSwgbV9zdG9y
YWdlKSksIFg4Njo6ZWN4KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoWDg2OjplY3gsIEZJRUxEX09G
RlNFVChBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIFg4Njo6ZWN4KTsKKyAgICBsb2FkMzIoQWRk
cmVzcyhYODY6OmVjeCwgRklFTERfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgWDg2
OjplY3gpOwogCiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gamEzMihYODY6OmVjeCwgSW1tMzIo
SlNJbW1lZGlhdGU6Om1heEltbWVkaWF0ZUludCkpOwogCi0gICAgYWRkMzIoWDg2OjplY3gsIFg4
Njo6ZWN4KTsKLSAgICBhZGQzMihJbW0zMigxKSwgWDg2OjplY3gpOwotICAgIHNpZ25FeHRlbmQz
MlRvUHRyKFg4Njo6ZWN4LCBYODY6OmVheCk7CisgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9D
aGVjayhYODY6OmVjeCwgWDg2OjplYXgpOwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKIAog
ICAgIHZvaWQqIGNvZGUgPSBtX2Fzc2VtYmxlci5leGVjdXRhYmxlQ29weShtX2NvZGVCbG9jay0+
ZXhlY3V0YWJsZVBvb2woKSk7CkBAIC0zNDksNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbgogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGYoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgdm9pZCogcmV0dXJuQWRkcmVzcykKIHsKICAgICAvLyBDaGVjayBl
YXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmUuCi0gICAgSnVtcCBmYWlsdXJl
Q2FzZXMxID0gam56MzIoWDg2OjplYXgsIEltbTMyKEpTSW1tZWRpYXRlOjpUYWdNYXNrKSk7Cisg
ICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6OmVheCk7CiAg
ICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gY2hlY2tTdHJ1Y3R1cmUoWDg2OjplYXgsIHN0cnVjdHVy
ZSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0RGlyZWN0T2Zmc2V0CkBAIC00MjMs
NyArNDIxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgogICAg
IGxvYWRQdHIocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UsIFg4Njo6ZWR4KTsKIAogICAgIC8vIENoZWNr
IGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KLSAgICBKdW1wIGZhaWx1
cmVDYXNlczEgPSBqbmUzMihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ01hc2spKTsK
KyAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBlbWl0SnVtcElmTm90SlNDZWxsKFg4Njo6ZWF4KTsK
ICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBjaGVja1N0cnVjdHVyZShYODY6OmVheCwgc3RydWN0
dXJlKTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhh
ZCBub3QgY2hhbmdlZC4KQEAgLTY0MSw3ICs2MzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RyCiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KLSAgICBidWNr
ZXRzT2ZGYWlsLmFwcGVuZChqbmUzMihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ01h
c2spKSk7CisgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChYODY6
OmVheCkpOwogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKFg4Njo6ZWF4
LCBzdHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVy
ZTsKQEAgLTY4MCw3ICs2NzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oU3RyCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkUmVwbGFjZShTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCB2b2lkKiByZXR1cm5BZGRyZXNzKQogewogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmpl
Y3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KLSAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBqbmUz
MihYODY6OmVheCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ01hc2spKTsKKyAgICBKdW1wIGZhaWx1
cmVDYXNlczEgPSBlbWl0SnVtcElmTm90SlNDZWxsKFg4Njo6ZWF4KTsKICAgICBKdW1wIGZhaWx1
cmVDYXNlczIgPSBjaGVja1N0cnVjdHVyZShYODY6OmVheCwgc3RydWN0dXJlKTsKIAogICAgIC8v
IGNoZWNrcyBvdXQgb2theSEgLSBwdXREaXJlY3RPZmZzZXQKSW5kZXg6IHJ1bnRpbWUvSlNJbW1l
ZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBydW50aW1lL0pTSW1tZWRpYXRlLmgJKHJldmlzaW9uIDM5
NzM2KQorKysgcnVudGltZS9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwzMyAr
ODIsNTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogICAgICAgICAgICAgICAgICAgICAgWyB6
ZXJvIF0gICAgICAgICAgICAgICAgICAgICAgIFsgemVybyBdICAgICAgIFsgdGFnICdvdGhlcicg
XQogICAgICAqLwogCisgICAgLyoKKyAgICAgKiBPbiA2NC1iaXQgcGxhdGZvcm1zLCB3ZSBzdXBw
b3J0IGFuIGFsdGVybmF0aXZlIGVuY29kaW5nIGZvcm0gZm9yIGltbWVkaWF0ZXMsIGlmCisgICAg
ICogVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkgaXMgZGVmaW5lZC4KKyAgICAgKgorICAgICAq
IFRoZSB0b3AgMTYtYml0cyBkZW5vdGUgdGhlIHR5cGU6CisgICAgICoKKyAgICAgKiBQb2ludGVy
OiAwMDAwOlBQUFA6UFBQUDpQUFBQCisgICAgICogSW50ZWdlcjogRkZGRjowMDAwOklJSUk6SUlJ
SQorICAgICAqCisgICAgICogMzItYml0IHNpZ25lZCBpbnRlZ2VycyBhcmUgbWFya2VkIHdpdGgg
dGhlIDE2LWJpdCB0YWcgJzB4RkZGRicuICBUaGUgdGFnICcweDAwMDAnCisgICAgICogZGVub3Rl
cyBhIHBvaW50ZXIsIG9yIGFub3RoZXIgZm9ybSBvZiB0YWdnZWQgaW1tZWRpYXRlLiAgQm9vbGVh
biwgbnVsbCBhbmQgdW5kZWZpbmVkCisgICAgICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIHRoZSBz
YW1lIG1hbm5lciBhcyB0aGUgZGVmYXVsdCBmb3JtYXQuCisgICAgICovCisKICAgICBjbGFzcyBK
U0ltbWVkaWF0ZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgVGFnTWFzayAgICAgICAgICAgPSAweDM7
IC8vIHByaW1hcnkgdGFnIGlzIDIgYml0cyBsb25nCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQz
Ml90IFRhZ0JpdFR5cGVJbnRlZ2VyID0gMHgxOyAvLyBib3R0b20gYml0IHNldCBpbmRpY2F0ZXMg
aW50ZWdlciwgdGhpcyBkb21pbmF0ZXMgdGhlIGZvbGxvd2luZyBiaXQKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGludDMyX3QgVGFnQml0VHlwZU90aGVyICAgPSAweDI7IC8vIHNlY29uZCBiaXQgc2V0
IGluZGljYXRlcyBpbW1lZGlhdGUgb3RoZXIgdGhhbiBhbiBpbnRlZ2VyCi0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludDMyX3QgRXh0ZW5kZWRUYWdNYXNrICAgICAgICAgPSAweEM7IC8vIGV4dGVu
ZGVkIHRhZyBob2xkcyBhIGZ1cnRoZXIgdHdvIGJpdHMKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDMyX3QgRXh0ZW5kZWRUYWdCaXRCb29sICAgICAgPSAweDQ7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBpbnQzMl90IEV4dGVuZGVkVGFnQml0VW5kZWZpbmVkID0gMHg4OwotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBpbnQzMl90IEZ1bGxUYWdUeXBlTWFzayAgICAgID0gVGFnTWFzayB8IEV4dGVuZGVk
VGFnTWFzazsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgRnVsbFRhZ1R5cGVCb29sICAg
ICAgPSBUYWdCaXRUeXBlT3RoZXIgfCBFeHRlbmRlZFRhZ0JpdEJvb2w7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBpbnQzMl90IEZ1bGxUYWdUeXBlVW5kZWZpbmVkID0gVGFnQml0VHlwZU90aGVyIHwg
RXh0ZW5kZWRUYWdCaXRVbmRlZmluZWQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IEZ1
bGxUYWdUeXBlTnVsbCAgICAgID0gVGFnQml0VHlwZU90aGVyOworI2lmIFVTRShBTFRFUk5BVEVf
SlNJTU1FRElBVEUpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBUYWdUeXBlSW50ZWdl
ciA9IDB4ZmZmZjAwMDAwMDAwMDAwMGxsOyAvLyBib3R0b20gYml0IHNldCBpbmRpY2F0ZXMgaW50
ZWdlciwgdGhpcyBkb21pbmF0ZXMgdGhlIGZvbGxvd2luZyBiaXQKKyNlbHNlCisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnRwdHJfdCBUYWdUeXBlSW50ZWdlciA9IDB4MTsgLy8gYm90dG9tIGJpdCBz
ZXQgaW5kaWNhdGVzIGludGVnZXIsIHRoaXMgZG9taW5hdGVzIHRoZSBmb2xsb3dpbmcgYml0Cisj
ZW5kaWYKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFRhZ0JpdFR5cGVPdGhlciAgID0g
MHgyOyAvLyBzZWNvbmQgYml0IHNldCBpbmRpY2F0ZXMgaW1tZWRpYXRlIG90aGVyIHRoYW4gYW4g
aW50ZWdlcgorICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgVGFnTWFzayAgICAgICAgICAg
PSBUYWdUeXBlSW50ZWdlciB8IFRhZ0JpdFR5cGVPdGhlcjsKIAorICAgICAgICBzdGF0aWMgY29u
c3QgaW50cHRyX3QgRXh0ZW5kZWRUYWdNYXNrICAgICAgICAgPSAweEM7IC8vIGV4dGVuZGVkIHRh
ZyBob2xkcyBhIGZ1cnRoZXIgdHdvIGJpdHMKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90
IEV4dGVuZGVkVGFnQml0Qm9vbCAgICAgID0gMHg0OworICAgICAgICBzdGF0aWMgY29uc3QgaW50
cHRyX3QgRXh0ZW5kZWRUYWdCaXRVbmRlZmluZWQgPSAweDg7CisKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludHB0cl90IEZ1bGxUYWdUeXBlTWFzayAgICAgID0gVGFnTWFzayB8IEV4dGVuZGVkVGFn
TWFzazsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZ1bGxUYWdUeXBlQm9vbCAgICAg
ID0gVGFnQml0VHlwZU90aGVyIHwgRXh0ZW5kZWRUYWdCaXRCb29sOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgRnVsbFRhZ1R5cGVVbmRlZmluZWQgPSBUYWdCaXRUeXBlT3RoZXIgfCBF
eHRlbmRlZFRhZ0JpdFVuZGVmaW5lZDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZ1
bGxUYWdUeXBlTnVsbCAgICAgID0gVGFnQml0VHlwZU90aGVyOworCisjaWYgVVNFKEFMVEVSTkFU
RV9KU0lNTUVESUFURSkKKyAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgSW50ZWdlclBheWxv
YWRTaGlmdCAgPSAwOworI2Vsc2UKICAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgSW50ZWdl
clBheWxvYWRTaGlmdCAgPSAxOworI2VuZGlmCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90
IEV4dGVuZGVkUGF5bG9hZFNoaWZ0ID0gNDsKIAotICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJf
dCBFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUgPSAxIDw8IEV4dGVuZGVkUGF5bG9hZFNoaWZ0
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZh
bHVlID0gMSA8PCBFeHRlbmRlZFBheWxvYWRTaGlmdDsKIAotI2lmIFVTRShBTFRFUk5BVEVfSlNJ
TU1FRElBVEUpCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBzaWduQml0ID0gMHgxMDAw
MDAwMDBsbDsKLSNlbHNlCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IHNpZ25CaXQgPSAw
eDgwMDAwMDAwOwotI2VuZGlmCiAgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzSW1tZWRpYXRlKEpTVmFsdWVQdHIgdikKQEAgLTExOCwxMyArMTM2LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc051bWJlcihKU1ZhbHVlUHRyIHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiByYXdWYWx1ZSh2KSAmIFRhZ0JpdFR5cGVJbnRlZ2VyOworICAgICAgICAgICAgcmV0dXJu
IHJhd1ZhbHVlKHYpICYgVGFnVHlwZUludGVnZXI7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzUG9zaXRpdmVOdW1iZXIoSlNWYWx1ZVB0ciB2KQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBBIHNpbmdsZSBtYXNrIHRvIGNoZWNrIGZvciB0aGUgc2ln
biBiaXQgYW5kIHRoZSBudW1iZXIgdGFnIGFsbCBhdCBvbmNlLgotICAgICAgICAgICAgcmV0dXJu
IChyYXdWYWx1ZSh2KSAmIChzaWduQml0IHwgVGFnQml0VHlwZUludGVnZXIpKSA9PSBUYWdCaXRU
eXBlSW50ZWdlcjsKKyAgICAgICAgICAgIHJldHVybiAocmF3VmFsdWUodikgJiAoc2lnbkJpdCB8
IFRhZ1R5cGVJbnRlZ2VyKSkgPT0gVGFnVHlwZUludGVnZXI7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNCb29sZWFuKEpTVmFsdWVQdHIg
dikKQEAgLTE3NCw3ICsxOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKEpTVmFsdWVQdHIgdjEs
IEpTVmFsdWVQdHIgdjIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYXdWYWx1ZSh2
MSkgJiByYXdWYWx1ZSh2MikgJiBUYWdCaXRUeXBlSW50ZWdlcjsKKyAgICAgICAgICAgIHJldHVy
biByYXdWYWx1ZSh2MSkgJiByYXdWYWx1ZSh2MikgJiBUYWdUeXBlSW50ZWdlcjsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWVQdHIgYW5kSW1tZWRpYXRl
TnVtYmVycyhKU1ZhbHVlUHRyIHYxLCBKU1ZhbHVlUHRyIHYyKQpAQCAtMTg2LDcgKzIwNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRy
IHhvckltbWVkaWF0ZU51bWJlcnMoSlNWYWx1ZVB0ciB2MSwgSlNWYWx1ZVB0ciB2MikKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKHYxLCB2Mikp
OwotICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZSgocmF3VmFsdWUodjEpIF4gcmF3VmFsdWUo
djIpKSB8IFRhZ0JpdFR5cGVJbnRlZ2VyKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUo
KHJhd1ZhbHVlKHYxKSBeIHJhd1ZhbHVlKHYyKSkgfCBUYWdUeXBlSW50ZWdlcik7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRyIG9ySW1tZWRpYXRl
TnVtYmVycyhKU1ZhbHVlUHRyIHYxLCBKU1ZhbHVlUHRyIHYyKQpAQCAtMTk4LDI4ICsyMTYsMzIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWVQ
dHIgcmlnaHRTaGlmdEltbWVkaWF0ZU51bWJlcnMoSlNWYWx1ZVB0ciB2YWwsIEpTVmFsdWVQdHIg
c2hpZnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChhcmVCb3RoSW1tZWRpYXRlTnVt
YmVycyh2YWwsIHNoaWZ0KSk7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKChyYXdWYWx1
ZSh2YWwpID4+ICgocmF3VmFsdWUoc2hpZnQpID4+IEludGVnZXJQYXlsb2FkU2hpZnQpICYgMHgx
ZikpIHwgVGFnQml0VHlwZUludGVnZXIpOworI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKHN0YXRpY19jYXN0PGludHB0cl90PihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmF3VmFsdWUodmFsKSkgPj4g
KChyYXdWYWx1ZShzaGlmdCkgPj4gSW50ZWdlclBheWxvYWRTaGlmdCkgJiAweDFmKSkpIHwgVGFn
VHlwZUludGVnZXIpOworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUoKHJhd1Zh
bHVlKHZhbCkgPj4gKChyYXdWYWx1ZShzaGlmdCkgPj4gSW50ZWdlclBheWxvYWRTaGlmdCkgJiAw
eDFmKSkgfCBUYWdUeXBlSW50ZWdlcik7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuRG9GYXN0QWRkaXRpdmVPcGVyYXRpb25zKEpTVmFs
dWVQdHIgdikKICAgICAgICAgewogICAgICAgICAgICAgLy8gTnVtYmVyIGlzIG5vbi1uZWdhdGl2
ZSBhbmQgYW4gb3BlcmF0aW9uIGludm9sdmluZyB0d28gb2YgdGhlc2UgY2FuJ3Qgb3ZlcmZsb3cu
CiAgICAgICAgICAgICAvLyBDaGVja2luZyBmb3IgYWxsb3dlZCBuZWdhdGl2ZSBudW1iZXJzIHRh
a2VzIG1vcmUgdGltZSB0aGFuIGl0J3Mgd29ydGggb24gU3VuU3BpZGVyLgotICAgICAgICAgICAg
cmV0dXJuIChyYXdWYWx1ZSh2KSAmIChUYWdCaXRUeXBlSW50ZWdlciArIChzaWduQml0IHwgKHNp
Z25CaXQgPj4gMSkpKSkgPT0gVGFnQml0VHlwZUludGVnZXI7CisgICAgICAgICAgICByZXR1cm4g
KHJhd1ZhbHVlKHYpICYgKFRhZ1R5cGVJbnRlZ2VyICsgKHNpZ25CaXQgfCAoc2lnbkJpdCA+PiAx
KSkpKSA9PSBUYWdUeXBlSW50ZWdlcjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWVQdHIgYWRkSW1tZWRpYXRlTnVtYmVycyhKU1ZhbHVlUHRyIHYxLCBK
U1ZhbHVlUHRyIHYyKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRk
aXRpdmVPcGVyYXRpb25zKHYxKSk7CiAgICAgICAgICAgICBBU1NFUlQoY2FuRG9GYXN0QWRkaXRp
dmVPcGVyYXRpb25zKHYyKSk7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKHJhd1ZhbHVl
KHYxKSArIHJhd1ZhbHVlKHYyKSAtIFRhZ0JpdFR5cGVJbnRlZ2VyKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVmFsdWUocmF3VmFsdWUodjEpICsgcmF3VmFsdWUodjIpIC0gVGFnVHlwZUludGVn
ZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZVB0
ciBzdWJJbW1lZGlhdGVOdW1iZXJzKEpTVmFsdWVQdHIgdjEsIEpTVmFsdWVQdHIgdjIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnModjEp
KTsKICAgICAgICAgICAgIEFTU0VSVChjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnModjIpKTsK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUocmF3VmFsdWUodjEpIC0gcmF3VmFsdWUodjIp
ICsgVGFnQml0VHlwZUludGVnZXIpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VWYWx1ZShyYXdW
YWx1ZSh2MSkgLSByYXdWYWx1ZSh2MikgKyBUYWdUeXBlSW50ZWdlcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlUHRyIGluY0ltbWVkaWF0ZU51bWJl
cihKU1ZhbHVlUHRyIHYpCkBAIC0yNzMsOSArMjk1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVQdHI6Om1ha2VJbW1lZGlhdGUoaW50ZWdlcik7CiAgICAg
ICAgIH0KIAorI2lmIFVTRShBTFRFUk5BVEVfSlNJTU1FRElBVEUpCisgICAgICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpTVmFsdWVQdHIgbWFrZUludCh1aW50MzJfdCB2YWx1ZSkKKyNlbHNlCiAg
ICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWVQdHIgbWFrZUludChpbnQzMl90IHZh
bHVlKQorI2VuZGlmCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVmFsdWUoKHN0
YXRpY19jYXN0PGludHB0cl90Pih2YWx1ZSkgPDwgSW50ZWdlclBheWxvYWRTaGlmdCkgfCBUYWdC
aXRUeXBlSW50ZWdlcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVZhbHVlKChzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4odmFsdWUpIDw8IEludGVnZXJQYXlsb2FkU2hpZnQpIHwgVGFnVHlwZUludGVn
ZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1ZhbHVlUHRyIG1ha2VCb29sKGJvb2wgYikKQEAgLTMzMCw4ICszNTYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbWVkaWF0ZSh2KSk7CiAgICAgICAgIGlu
dHB0cl90IGJpdHMgPSByYXdWYWx1ZSh2KTsKLSAgICAgICAgcmV0dXJuIChiaXRzICYgVGFnQml0
VHlwZUludGVnZXIpCi0gICAgICAgICAgICA/IGJpdHMgIT0gVGFnQml0VHlwZUludGVnZXIgLy8g
ITAgaW50cworICAgICAgICByZXR1cm4gKGJpdHMgJiBUYWdUeXBlSW50ZWdlcikKKyAgICAgICAg
ICAgID8gYml0cyAhPSBUYWdUeXBlSW50ZWdlciAvLyAhMCBpbnRzCiAgICAgICAgICAgICA6IGJp
dHMgPT0gKEZ1bGxUYWdUeXBlQm9vbCB8IEV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSk7IC8v
IGJvb2wgdHJ1ZQogICAgIH0KIApJbmRleDogd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDM5NzM2KQorKysgd3RmL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzOSw5ICs0MzksOSBAQAogLyogeDg2LTY0IHN1cHBvcnQgaXMgdW5kZXIg
ZGV2ZWxvcG1lbnQuICovCiAjaWYgUExBVEZPUk0oWDg2XzY0KSAmJiBQTEFURk9STShNQUMpCiAg
ICAgI2RlZmluZSBFTkFCTEVfSklUIDAKLSAgICAjZGVmaW5lIFdURl9VU0VfSklUX1NUVUJfQVJH
VU1FTlRfUkVHSVNURVIgMAotICAgICNkZWZpbmUgRU5BQkxFX0pJVF9PUFRJTUlaRV9DQUxMIDAK
LSAgICAjZGVmaW5lIEVOQUJMRV9KSVRfT1BUSU1JWkVfUFJPUEVSVFlfQUNDRVNTIDAKKyAgICAj
ZGVmaW5lIFdURl9VU0VfSklUX1NUVUJfQVJHVU1FTlRfUkVHSVNURVIgMQorICAgICNkZWZpbmUg
RU5BQkxFX0pJVF9PUFRJTUlaRV9DQUxMIDEKKyAgICAjZGVmaW5lIEVOQUJMRV9KSVRfT1BUSU1J
WkVfUFJPUEVSVFlfQUNDRVNTIDEKICAgICAjZGVmaW5lIFdURl9VU0VfQUxURVJOQVRFX0pTSU1N
RURJQVRFIDEKIC8qIFRoZSBKSVQgaXMgdGVzdGVkICYgd29ya2luZyBvbiB4ODYgTWFjICovCiAj
ZWxpZiBQTEFURk9STShYODYpICYmIFBMQVRGT1JNKE1BQykK
</data>
<flag name="review"
          id="12618"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>