<?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>168123</bug_id>
          
          <creation_ts>2017-02-10 09:56:03 -0800</creation_ts>
          <short_desc>[WebRTC] Activate libwebrtc G711/G722 audio codecs</short_desc>
          <delta_ts>2017-02-10 11:05:34 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1275358</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-10 09:56:03 -0800</bug_when>
    <thetext>[WebRTC] Activate libwebrtc G711/G722 audio codecs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275359</commentid>
    <comment_count>1</comment_count>
      <attachid>301166</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-10 09:58:44 -0800</bug_when>
    <thetext>Created attachment 301166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275420</commentid>
    <comment_count>2</comment_count>
      <attachid>301166</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-10 11:05:30 -0800</bug_when>
    <thetext>Comment on attachment 301166
Patch

Clearing flags on attachment: 301166

Committed r212126: &lt;http://trac.webkit.org/changeset/212126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275421</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-10 11:05:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301166</attachid>
            <date>2017-02-10 09:58:44 -0800</date>
            <delta_ts>2017-02-10 11:05:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168123-20170210095617.patch</filename>
            <type>text/plain</type>
            <size>100292</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjOWQwODJiOGI3MWVhNzVhNWNkYTc3Mzc3NDExOGFkYTYzMzE1MDEwLi5jMWM2
ZDYxOTViNmQwMDk5ZGVmNGQ1NTVkNGI5ZjQzNzQ3YmFlZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wMi0xMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIFtXZWJSVENdIEFjdGl2YXRlIGxp
YndlYnJ0YyBHNzExL0c3MjIgYXVkaW8gY29kZWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgRzcxMS9HNzIyIG1pc3NpbmcgY29kZWMgZmls
ZXMuCisgICAgICAgIEFjdGl2YXRpbmcgdXNlIG9mIHRoZXNlIGluIHRoZSBidWlsZCBzeXN0ZW0u
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWc6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzExLmM6
IEFkZGVkLgorICAgICAgICAodWxhd190b19hbGF3KToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2c3MTEuaDogQWRkZWQuCisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19k
ZWNvZGVyX2c3MjIuY2M6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmg6IEFkZGVkLgorICAg
ICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVk
aW9fZW5jb2Rlcl9nNzIyLmNjOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIy
L2c3MjJfZGVjb2RlLmM6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9lbmNfZGVjLmg6IEFkZGVkLgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9lbmNv
ZGUuYzogQWRkZWQuCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvZzcyMi9nNzIyX2ludGVyZmFjZS5jOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmg6
IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2c3MjIvdGVzdC90ZXN0RzcyMi5jYzogQWRkZWQuCisgICAgICAgICogbGlid2VicnRjLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDItMTAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQVNBTiBidWlsZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLnhjY29uZmlnCmluZGV4IGZlNTEwOTNkMDJmYjhiMzBkNWE3M2E3Y2JlYTkz
YjZlZTEzNDkxY2QuLjQ4MzI4MjdjOTk4M2NkYTBkN2E5ODZhNTNjM2M4NTg2NDdiZjA5YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy54Y2NvbmZpZwpAQCAtMTMsNyArMTMsNyBAQCBQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSCA9IC91c3IvbG9jYWwvaW5jbHVkZS9saWJ3ZWJydGM7CiBVU0VfSEVBREVS
TUFQID0gTk87CiBXQVJOSU5HX0NGTEFHUyA9IC1Xbm8tZXhpdC10aW1lLWRlc3RydWN0b3JzIC1X
bm8tb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUgLVduby1vYmpjLW1pc3Npbmctc3VwZXItY2Fs
bHMgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uczsKIAotR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUyA9IFdFQlJUQ19QT1NJWCBXRUJSVENfTUFDIFNTTF9VU0VfT1BFTlNTTCBGRUFUVVJF
X0VOQUJMRV9TU0wgSEFWRV9TUlRQIEhBVkVfT1BFTlNTTF9TU0xfSCBTQ1RQX1BST0NFU1NfTEVW
RUxfTE9DS1MgU0NUUF9TSU1QTEVfQUxMT0NBVE9SIFNDVFBfVVNFX09QRU5TU0xfU0hBMSBfX1Vz
ZXJzcGFjZV9fIEhBVkVfU0FfTEVOIEhBVkVfU0NPTk5fTEVOIF9fQVBQTEVfVVNFX1JGQ18yMjky
IF9fVXNlcnNwYWNlX29zX0RhcndpbiBOT05fV0lORE9XU19ERUZJTkUgSEFWRV9XRUJSVENfVklE
RU8gSEFWRV9XRUJSVENfVk9JQ0UgV0VCUlRDX0lOVEVMTElHSUJJTElUWV9FTkhBTkNFUj0wIFdF
QlJUQ19BUE1fREVCVUdfRFVNUD0wIFdFQlJUQ19OU19GTE9BVCBXRUJSVENfQ09ERUNfSUxCQyBX
RUJSVENfQ09ERUNfT1BVUyBXRUJSVENfQ09ERUNfSVNBQyBXRUJSVENfQ09ERUNfUkVEIFJUQ19E
SVNBQkxFX1ZQOSBSVENfRElTQUJMRV9WUDggSEFWRV9TVERJTlRfSCBIQVZFX1NURExJQl9IIEhB
VkVfVUlOVDY0X1QgT1BFTlNTTCBIQVZFX0NPTkZJR19IIFdFQlJUQ19XRUJLSVRfQlVJTEQgSEFW
RV9QVEhSRUFEX0NPTkRfVElNRURXQUlUX1JFTEFUSVZFIFdFQlJUQ19JTkNMVURFX0lOVEVSTkFM
X0FVRElPX0RFVklDRSBIQVZFX1NDVFA7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0g
V0VCUlRDX1BPU0lYIFdFQlJUQ19NQUMgU1NMX1VTRV9PUEVOU1NMIEZFQVRVUkVfRU5BQkxFX1NT
TCBIQVZFX1NSVFAgSEFWRV9PUEVOU1NMX1NTTF9IIFNDVFBfUFJPQ0VTU19MRVZFTF9MT0NLUyBT
Q1RQX1NJTVBMRV9BTExPQ0FUT1IgU0NUUF9VU0VfT1BFTlNTTF9TSEExIF9fVXNlcnNwYWNlX18g
SEFWRV9TQV9MRU4gSEFWRV9TQ09OTl9MRU4gX19BUFBMRV9VU0VfUkZDXzIyOTIgX19Vc2Vyc3Bh
Y2Vfb3NfRGFyd2luIE5PTl9XSU5ET1dTX0RFRklORSBIQVZFX1dFQlJUQ19WSURFTyBIQVZFX1dF
QlJUQ19WT0lDRSBXRUJSVENfSU5URUxMSUdJQklMSVRZX0VOSEFOQ0VSPTAgV0VCUlRDX0FQTV9E
RUJVR19EVU1QPTAgV0VCUlRDX05TX0ZMT0FUIFdFQlJUQ19DT0RFQ19JTEJDIFdFQlJUQ19DT0RF
Q19PUFVTIFdFQlJUQ19DT0RFQ19JU0FDIFdFQlJUQ19DT0RFQ19SRUQgUlRDX0RJU0FCTEVfVlA5
IFJUQ19ESVNBQkxFX1ZQOCBIQVZFX1NURElOVF9IIEhBVkVfU1RETElCX0ggSEFWRV9VSU5UNjRf
VCBPUEVOU1NMIEhBVkVfQ09ORklHX0ggV0VCUlRDX1dFQktJVF9CVUlMRCBIQVZFX1BUSFJFQURf
Q09ORF9USU1FRFdBSVRfUkVMQVRJVkUgV0VCUlRDX0lOQ0xVREVfSU5URVJOQUxfQVVESU9fREVW
SUNFIEhBVkVfU0NUUCBXRUJSVENfQ09ERUNfRzcxMSBXRUJSVENfQ09ERUNfRzcyMjsKIAogR0ND
X1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCk7CiBH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TW3Nkaz1pcGhvbmVvcypdID0gJChpbmhlcml0ZWQp
IFdFQlJUQ19JT1M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzExLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvZzcxMS9nNzExLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE4Mzc1N2VjNWRhNWNlOWM4ZTZkMzU5
MDliYjYzYWMwNDQxMzdiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2c3
MTEuYwpAQCAtMCwwICsxLDczIEBACisvKgorICogU3BhbkRTUCAtIGEgc2VyaWVzIG9mIERTUCBj
b21wb25lbnRzIGZvciB0ZWxlcGhvbnkKKyAqCisgKiBnNzExLmMgLSBBLWxhdyBhbmQgdS1sYXcg
dHJhbnNjb2Rpbmcgcm91dGluZXMKKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXZlIFVuZGVyd29vZCA8
c3RldmV1QGNvcHBpY2Uub3JnPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTdGV2ZSBVbmRl
cndvb2QKKyAqCisgKiAgRGVzcGl0ZSBteSBnZW5lcmFsIGxpa2luZyBvZiB0aGUgR1BMLCBJIHBs
YWNlIHRoaXMgY29kZSBpbiB0aGUKKyAqICBwdWJsaWMgZG9tYWluIGZvciB0aGUgYmVuZWZpdCBv
ZiBhbGwgbWFua2luZCAtIGV2ZW4gdGhlIHNsaW15CisgKiAgb25lcyB3aG8gbWlnaHQgdHJ5IHRv
IHByb3ByaWV0aXplIG15IHdvcmsgYW5kIHVzZSBpdCB0byBteQorICogIGRldHJpbWVudC4KKyAq
CisgKiAkSWQ6IGc3MTEuYyx2IDEuMSAyMDA2LzA2LzA3IDE1OjQ2OjM5IHN0ZXZldSBFeHAgJAor
ICoKKyAqIE1vZGlmaWNhdGlvbnMgZm9yIFdlYlJ0YywgMjAxMS8wNC8yOCwgYnkgdGxlZ3JhbmQ6
CisgKiAtUmVtb3ZlZCB1bnVzZWQgaW5jbHVkZSBmaWxlcworICogLUNoYW5nZWQgdG8gdXNlIFdl
YlJ0YyB0eXBlcworICogLUFkZGVkIG9wdGlvbiB0byBydW4gZW5jb2RlciBiaXRleGFjdCB3aXRo
IElUVS1UIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbgorICovCisKKyNpbmNsdWRlICJnNzExLmgi
CisjaW5jbHVkZSAid2VicnRjL3R5cGVkZWZzLmgiCisKKy8qIENvcGllZCBmcm9tIHRoZSBDQ0lU
VCBHLjcxMSBzcGVjaWZpY2F0aW9uICovCitzdGF0aWMgY29uc3QgdWludDhfdCB1bGF3X3RvX2Fs
YXdfdGFibGVbMjU2XSA9IHsKKyAgIDQyLCAgNDMsICA0MCwgIDQxLCAgNDYsICA0NywgIDQ0LCAg
NDUsICAzNCwgIDM1LCAgMzIsICAzMywgIDM4LCAgMzksICAzNiwKKyAgIDM3LCAgNTgsICA1OSwg
IDU2LCAgNTcsICA2MiwgIDYzLCAgNjAsICA2MSwgIDUwLCAgNTEsICA0OCwgIDQ5LCAgNTQsICA1
NSwKKyAgIDUyLCAgNTMsICAxMCwgIDExLCAgIDgsICAgOSwgIDE0LCAgMTUsICAxMiwgIDEzLCAg
IDIsICAgMywgICAwLCAgIDEsICAgNiwKKyAgICA3LCAgIDQsICAyNiwgIDI3LCAgMjQsICAyNSwg
IDMwLCAgMzEsICAyOCwgIDI5LCAgMTgsICAxOSwgIDE2LCAgMTcsICAyMiwKKyAgIDIzLCAgMjAs
ICAyMSwgMTA2LCAxMDQsIDEwNSwgMTEwLCAxMTEsIDEwOCwgMTA5LCAgOTgsICA5OSwgIDk2LCAg
OTcsIDEwMiwKKyAgMTAzLCAxMDAsIDEwMSwgMTIyLCAxMjAsIDEyNiwgMTI3LCAxMjQsIDEyNSwg
MTE0LCAxMTUsIDExMiwgMTEzLCAxMTgsIDExOSwKKyAgMTE2LCAxMTcsICA3NSwgIDczLCAgNzks
ICA3NywgIDY2LCAgNjcsICA2NCwgIDY1LCAgNzAsICA3MSwgIDY4LCAgNjksICA5MCwKKyAgIDkx
LCAgODgsICA4OSwgIDk0LCAgOTUsICA5MiwgIDkzLCAgODIsICA4MiwgIDgzLCAgODMsICA4MCwg
IDgwLCAgODEsICA4MSwKKyAgIDg2LCAgODYsICA4NywgIDg3LCAgODQsICA4NCwgIDg1LCAgODUs
IDE3MCwgMTcxLCAxNjgsIDE2OSwgMTc0LCAxNzUsIDE3MiwKKyAgMTczLCAxNjIsIDE2MywgMTYw
LCAxNjEsIDE2NiwgMTY3LCAxNjQsIDE2NSwgMTg2LCAxODcsIDE4NCwgMTg1LCAxOTAsIDE5MSwK
KyAgMTg4LCAxODksIDE3OCwgMTc5LCAxNzYsIDE3NywgMTgyLCAxODMsIDE4MCwgMTgxLCAxMzgs
IDEzOSwgMTM2LCAxMzcsIDE0MiwKKyAgMTQzLCAxNDAsIDE0MSwgMTMwLCAxMzEsIDEyOCwgMTI5
LCAxMzQsIDEzNSwgMTMyLCAxNTQsIDE1NSwgMTUyLCAxNTMsIDE1OCwKKyAgMTU5LCAxNTYsIDE1
NywgMTQ2LCAxNDcsIDE0NCwgMTQ1LCAxNTAsIDE1MSwgMTQ4LCAxNDksIDIzNCwgMjMyLCAyMzMs
IDIzOCwKKyAgMjM5LCAyMzYsIDIzNywgMjI2LCAyMjcsIDIyNCwgMjI1LCAyMzAsIDIzMSwgMjI4
LCAyMjksIDI1MCwgMjQ4LCAyNTQsIDI1NSwKKyAgMjUyLCAyNTMsIDI0MiwgMjQzLCAyNDAsIDI0
MSwgMjQ2LCAyNDcsIDI0NCwgMjQ1LCAyMDMsIDIwMSwgMjA3LCAyMDUsIDE5NCwKKyAgMTk1LCAx
OTIsIDE5MywgMTk4LCAxOTksIDE5NiwgMTk3LCAyMTgsIDIxOSwgMjE2LCAyMTcsIDIyMiwgMjIz
LCAyMjAsIDIyMSwKKyAgMjEwLCAyMTAsIDIxMSwgMjExLCAyMDgsIDIwOCwgMjA5LCAyMDksIDIx
NCwgMjE0LCAyMTUsIDIxNSwgMjEyLCAyMTIsIDIxMywKKyAgMjEzCit9OworCisvKiBUaGVzZSB0
cmFuc2NvZGluZyB0YWJsZXMgYXJlIGNvcGllZCBmcm9tIHRoZSBDQ0lUVCBHLjcxMSBzcGVjaWZp
Y2F0aW9uLiBUbworICAgYWNoaWV2ZSBvcHRpbWFsIHJlc3VsdHMsIGRvIG5vdCBjaGFuZ2UgdGhl
bS4gKi8KK3N0YXRpYyBjb25zdCB1aW50OF90IGFsYXdfdG9fdWxhd190YWJsZVsyNTZdID0gewor
ICAgNDIsICA0MywgIDQwLCAgNDEsICA0NiwgIDQ3LCAgNDQsICA0NSwgIDM0LCAgMzUsICAzMiwg
IDMzLCAgMzgsICAzOSwgIDM2LAorICAgMzcsICA1NywgIDU4LCAgNTUsICA1NiwgIDYxLCAgNjIs
ICA1OSwgIDYwLCAgNDksICA1MCwgIDQ3LCAgNDgsICA1MywgIDU0LAorICAgNTEsICA1MiwgIDEw
LCAgMTEsICAgOCwgICA5LCAgMTQsICAxNSwgIDEyLCAgMTMsICAgMiwgICAzLCAgIDAsICAgMSwg
ICA2LAorICAgIDcsICAgNCwgICA1LCAgMjYsICAyNywgIDI0LCAgMjUsICAzMCwgIDMxLCAgMjgs
ICAyOSwgIDE4LCAgMTksICAxNiwgIDE3LAorICAgMjIsICAyMywgIDIwLCAgMjEsICA5OCwgIDk5
LCAgOTYsICA5NywgMTAyLCAxMDMsIDEwMCwgMTAxLCAgOTMsICA5MywgIDkyLAorICAgOTIsICA5
NSwgIDk1LCAgOTQsICA5NCwgMTE2LCAxMTgsIDExMiwgMTE0LCAxMjQsIDEyNiwgMTIwLCAxMjIs
IDEwNiwgMTA3LAorICAxMDQsIDEwNSwgMTEwLCAxMTEsIDEwOCwgMTA5LCAgNzIsICA3MywgIDcw
LCAgNzEsICA3NiwgIDc3LCAgNzQsICA3NSwgIDY0LAorICAgNjUsICA2MywgIDYzLCAgNjgsICA2
OSwgIDY2LCAgNjcsICA4NiwgIDg3LCAgODQsICA4NSwgIDkwLCAgOTEsICA4OCwgIDg5LAorICAg
NzksICA3OSwgIDc4LCAgNzgsICA4MiwgIDgzLCAgODAsICA4MSwgMTcwLCAxNzEsIDE2OCwgMTY5
LCAxNzQsIDE3NSwgMTcyLAorICAxNzMsIDE2MiwgMTYzLCAxNjAsIDE2MSwgMTY2LCAxNjcsIDE2
NCwgMTY1LCAxODUsIDE4NiwgMTgzLCAxODQsIDE4OSwgMTkwLAorICAxODcsIDE4OCwgMTc3LCAx
NzgsIDE3NSwgMTc2LCAxODEsIDE4MiwgMTc5LCAxODAsIDEzOCwgMTM5LCAxMzYsIDEzNywgMTQy
LAorICAxNDMsIDE0MCwgMTQxLCAxMzAsIDEzMSwgMTI4LCAxMjksIDEzNCwgMTM1LCAxMzIsIDEz
MywgMTU0LCAxNTUsIDE1MiwgMTUzLAorICAxNTgsIDE1OSwgMTU2LCAxNTcsIDE0NiwgMTQ3LCAx
NDQsIDE0NSwgMTUwLCAxNTEsIDE0OCwgMTQ5LCAyMjYsIDIyNywgMjI0LAorICAyMjUsIDIzMCwg
MjMxLCAyMjgsIDIyOSwgMjIxLCAyMjEsIDIyMCwgMjIwLCAyMjMsIDIyMywgMjIyLCAyMjIsIDI0
NCwgMjQ2LAorICAyNDAsIDI0MiwgMjUyLCAyNTQsIDI0OCwgMjUwLCAyMzQsIDIzNSwgMjMyLCAy
MzMsIDIzOCwgMjM5LCAyMzYsIDIzNywgMjAwLAorICAyMDEsIDE5OCwgMTk5LCAyMDQsIDIwNSwg
MjAyLCAyMDMsIDE5MiwgMTkzLCAxOTEsIDE5MSwgMTk2LCAxOTcsIDE5NCwgMTk1LAorICAyMTQs
IDIxNSwgMjEyLCAyMTMsIDIxOCwgMjE5LCAyMTYsIDIxNywgMjA3LCAyMDcsIDIwNiwgMjA2LCAy
MTAsIDIxMSwgMjA4LAorICAyMDkKK307CisKK3VpbnQ4X3QgYWxhd190b191bGF3KHVpbnQ4X3Qg
YWxhdykgeyByZXR1cm4gYWxhd190b191bGF3X3RhYmxlW2FsYXddOyB9CisKK3VpbnQ4X3QgdWxh
d190b19hbGF3KHVpbnQ4X3QgdWxhdykgeyByZXR1cm4gdWxhd190b19hbGF3X3RhYmxlW3VsYXdd
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzExLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
ZzcxMS9nNzExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IwN2Q4YmE4ZmZkN2IwYWUwM2IzZTk0NDZmODlhODk2
M2VhOTg4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2c3MTEuaApAQCAt
MCwwICsxLDM0NCBAQAorLyoKKyAqIFNwYW5EU1AgLSBhIHNlcmllcyBvZiBEU1AgY29tcG9uZW50
cyBmb3IgdGVsZXBob255CisgKgorICogZzcxMS5oIC0gSW4gbGluZSBBLWxhdyBhbmQgdS1sYXcg
Y29udmVyc2lvbiByb3V0aW5lcworICoKKyAqIFdyaXR0ZW4gYnkgU3RldmUgVW5kZXJ3b29kIDxz
dGV2ZXVAY29wcGljZS5vcmc+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFN0ZXZlIFVuZGVy
d29vZAorICoKKyAqICBEZXNwaXRlIG15IGdlbmVyYWwgbGlraW5nIG9mIHRoZSBHUEwsIEkgcGxh
Y2UgdGhpcyBjb2RlIGluIHRoZQorICogIHB1YmxpYyBkb21haW4gZm9yIHRoZSBiZW5lZml0IG9m
IGFsbCBtYW5raW5kIC0gZXZlbiB0aGUgc2xpbXkKKyAqICBvbmVzIHdobyBtaWdodCB0cnkgdG8g
cHJvcHJpZXRpemUgbXkgd29yayBhbmQgdXNlIGl0IHRvIG15CisgKiAgZGV0cmltZW50LgorICoK
KyAqICRJZDogZzcxMS5oLHYgMS4xIDIwMDYvMDYvMDcgMTU6NDY6Mzkgc3RldmV1IEV4cCAkCisg
KgorICogTW9kaWZpY2F0aW9ucyBmb3IgV2ViUnRjLCAyMDExLzA0LzI4LCBieSB0bGVncmFuZDoK
KyAqIC1DaGFuZ2VkIHRvIHVzZSBXZWJSdGMgdHlwZXMKKyAqIC1DaGFuZ2VkIF9faW5saW5lX18g
dG8gX19pbmxpbmUKKyAqIC1Ud28gY2hhbmdlcyB0byBtYWtlIGltcGxlbWVudGF0aW9uIGJpdGV4
YWN0IHdpdGggSVRVLVQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uCisgKi8KKworLyohIFxwYWdl
IGc3MTFfcGFnZSBBLWxhdyBhbmQgbXUtbGF3IGhhbmRsaW5nCitMb29rdXAgdGFibGVzIGZvciBB
LWxhdyBhbmQgdS1sYXcgbG9vayBhdHRyYWN0aXZlLCB1bnRpbCB5b3UgY29uc2lkZXIgdGhlIGlt
cGFjdAorb24gdGhlIENQVSBjYWNoZS4gSWYgaXQgY2F1c2VzIGEgc3Vic3RhbnRpYWwgYXJlYSBv
ZiB5b3VyIHByb2Nlc3NvciBjYWNoZSB0byBnZXQKK2hpdCB0b28gb2Z0ZW4sIGNhY2hlIHNsb3No
aW5nIHdpbGwgc2V2ZXJlbHkgc2xvdyB0aGluZ3MgZG93bi4gVGhlIG1haW4gcmVhc29uCit0aGVz
ZSByb3V0aW5lcyBhcmUgc2xvdyBpbiBDLCBpcyB0aGUgbGFjayBvZiBkaXJlY3QgYWNjZXNzIHRv
IHRoZSBDUFUncyAiZmluZAordGhlIGZpcnN0IDEiIGluc3RydWN0aW9uLiBBIGxpdHRsZSBpbi1s
aW5lIGFzc2VtYmxlciBmaXhlcyB0aGF0LCBhbmQgdGhlCitjb252ZXJzaW9uIHJvdXRpbmVzIGNh
biBiZSBmYXN0ZXIgdGhhbiBsb29rdXAgdGFibGVzLCBpbiBtb3N0IHJlYWwgd29ybGQgdXNhZ2Uu
CitBICJmaW5kIHRoZSBmaXJzdCAxIiBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUgb24gbW9zdCBt
b2Rlcm4gQ1BVcywgYW5kIGlzIGEKK211Y2ggdW5kZXJ1c2VkIGZlYXR1cmUuCisKK0lmIGFuIGFz
c2VtYmx5IGxhbmd1YWdlIG1ldGhvZCBvZiBiaXQgc2VhcmNoaW5nIGlzIG5vdCBhdmFpbGFibGUs
IHRoZXNlIHJvdXRpbmVzCityZXZlcnQgdG8gYSBtZXRob2QgdGhhdCBjYW4gYmUgYSBsaXR0bGUg
c2xvdywgc28gdGhlIGNhY2hlIHRocmFzaGluZyBtaWdodCBub3QKK3NlZW0gc28gYmFkIDooCisK
K0ZlZWwgZnJlZSB0byBzdWJtaXQgcGF0Y2hlcyB0byBhZGQgZmFzdCAiZmluZCB0aGUgZmlyc3Qg
MSIgc3VwcG9ydCBmb3IgeW91ciBvd24KK2Zhdm91cml0ZSBwcm9jZXNzb3IuCisKK0xvb2sgdXAg
dGFibGVzIGFyZSB1c2VkIGZvciB0cmFuc2NvZGluZyBiZXR3ZWVuIEEtbGF3IGFuZCB1LWxhdywg
c2luY2UgaXQgaXMKK2RpZmZpY3VsdCB0byBhY2hpZXZlIHRoZSBwcmVjaXNlIHRyYW5zY29kaW5n
IHByb2NlZHVyZSBsYWlkIGRvd24gaW4gdGhlIEcuNzExCitzcGVjaWZpY2F0aW9uIGJ5IG90aGVy
IG1lYW5zLgorKi8KKworI2lmICFkZWZpbmVkKF9HNzExX0hfKQorI2RlZmluZSBfRzcxMV9IXwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRlICJ3
ZWJydGMvdHlwZWRlZnMuaCIKKworI2lmIGRlZmluZWQoX19pMzg2X18pCisvKiEgXGJyaWVmIEZp
bmQgdGhlIGJpdCBwb3NpdGlvbiBvZiB0aGUgaGlnaGVzdCBzZXQgYml0IGluIGEgd29yZAorICAg
IFxwYXJhbSBiaXRzIFRoZSB3b3JkIHRvIGJlIHNlYXJjaGVkCisgICAgXHJldHVybiBUaGUgYml0
IG51bWJlciBvZiB0aGUgaGlnaGVzdCBzZXQgYml0LCBvciAtMSBpZiB0aGUgd29yZCBpcyB6ZXJv
LiAqLworc3RhdGljIF9faW5saW5lX18gaW50IHRvcF9iaXQodW5zaWduZWQgaW50IGJpdHMpIHsK
KyAgaW50IHJlczsKKworICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIG1vdmwgJC0xLCUlZWR4O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAiIGJzcmwgJSVlYXgsJSVlZHg7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIDogIj1kIiAocmVzKQorICAgICAgICAgICAgICAgICAgICAgICA6ICJh
IiAoYml0cykpOworICByZXR1cm4gcmVzOworfQorCisvKiEgXGJyaWVmIEZpbmQgdGhlIGJpdCBw
b3NpdGlvbiBvZiB0aGUgbG93ZXN0IHNldCBiaXQgaW4gYSB3b3JkCisgICAgXHBhcmFtIGJpdHMg
VGhlIHdvcmQgdG8gYmUgc2VhcmNoZWQKKyAgICBccmV0dXJuIFRoZSBiaXQgbnVtYmVyIG9mIHRo
ZSBsb3dlc3Qgc2V0IGJpdCwgb3IgLTEgaWYgdGhlIHdvcmQgaXMgemVyby4gKi8KK3N0YXRpYyBf
X2lubGluZV9fIGludCBib3R0b21fYml0KHVuc2lnbmVkIGludCBiaXRzKSB7CisgIGludCByZXM7
CisKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiBtb3ZsICQtMSwlJWVkeDtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiBic2ZsICUlZWF4LCUlZWR4O1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICA6ICI9ZCIgKHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgOiAiYSIgKGJpdHMpKTsK
KyAgcmV0dXJuIHJlczsKK30KKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKK3N0YXRpYyBfX2lu
bGluZV9fIGludCB0b3BfYml0KHVuc2lnbmVkIGludCBiaXRzKSB7CisgIGludCByZXM7CisKKyAg
X19hc21fXyBfX3ZvbGF0aWxlX18oIiBtb3ZxICQtMSwlJXJkeDtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiBic3JxICUlcmF4LCUlcmR4O1xuIgorICAgICAgICAgICAgICAgICAgICAgICA6
ICI9ZCIgKHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgOiAiYSIgKGJpdHMpKTsKKyAgcmV0
dXJuIHJlczsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IGJvdHRvbV9iaXQodW5zaWduZWQg
aW50IGJpdHMpIHsKKyAgaW50IHJlczsKKworICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIG1vdnEg
JC0xLCUlcmR4O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiIGJzZnEgJSVyYXgsJSVyZHg7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgIDogIj1kIiAocmVzKQorICAgICAgICAgICAgICAg
ICAgICAgICA6ICJhIiAoYml0cykpOworICByZXR1cm4gcmVzOworfQorI2Vsc2UKK3N0YXRpYyBf
X2lubGluZSBpbnQgdG9wX2JpdCh1bnNpZ25lZCBpbnQgYml0cykgeworICBpbnQgaTsKKworICBp
ZiAoYml0cyA9PSAwKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGkgPSAwOworICBpZiAoYml0
cyAmIDB4RkZGRjAwMDApIHsKKyAgICBiaXRzICY9IDB4RkZGRjAwMDA7CisgICAgaSArPSAxNjsK
KyAgfQorICBpZiAoYml0cyAmIDB4RkYwMEZGMDApIHsKKyAgICBiaXRzICY9IDB4RkYwMEZGMDA7
CisgICAgaSArPSA4OworICB9CisgIGlmIChiaXRzICYgMHhGMEYwRjBGMCkgeworICAgIGJpdHMg
Jj0gMHhGMEYwRjBGMDsKKyAgICBpICs9IDQ7CisgIH0KKyAgaWYgKGJpdHMgJiAweENDQ0NDQ0ND
KSB7CisgICAgYml0cyAmPSAweENDQ0NDQ0NDOworICAgIGkgKz0gMjsKKyAgfQorICBpZiAoYml0
cyAmIDB4QUFBQUFBQUEpIHsKKyAgICBiaXRzICY9IDB4QUFBQUFBQUE7CisgICAgaSArPSAxOwor
ICB9CisgIHJldHVybiBpOworfQorCitzdGF0aWMgX19pbmxpbmUgaW50IGJvdHRvbV9iaXQodW5z
aWduZWQgaW50IGJpdHMpIHsKKyAgaW50IGk7CisKKyAgaWYgKGJpdHMgPT0gMCkgeworICAgIHJl
dHVybiAtMTsKKyAgfQorICBpID0gMzI7CisgIGlmIChiaXRzICYgMHgwMDAwRkZGRikgeworICAg
IGJpdHMgJj0gMHgwMDAwRkZGRjsKKyAgICBpIC09IDE2OworICB9CisgIGlmIChiaXRzICYgMHgw
MEZGMDBGRikgeworICAgIGJpdHMgJj0gMHgwMEZGMDBGRjsKKyAgICBpIC09IDg7CisgIH0KKyAg
aWYgKGJpdHMgJiAweDBGMEYwRjBGKSB7CisgICAgYml0cyAmPSAweDBGMEYwRjBGOworICAgIGkg
LT0gNDsKKyAgfQorICBpZiAoYml0cyAmIDB4MzMzMzMzMzMpIHsKKyAgICBiaXRzICY9IDB4MzMz
MzMzMzM7CisgICAgaSAtPSAyOworICB9CisgIGlmIChiaXRzICYgMHg1NTU1NTU1NSkgeworICAg
IGJpdHMgJj0gMHg1NTU1NTU1NTsKKyAgICBpIC09IDE7CisgIH0KKyAgcmV0dXJuIGk7Cit9Cisj
ZW5kaWYKKworLyogTi5CLiBJdCBpcyB0ZW1wdGluZyB0byB1c2UgbG9vay11cCB0YWJsZXMgZm9y
IEEtbGF3IGFuZCB1LWxhdyBjb252ZXJzaW9uLgorICogICAgICBIb3dldmVyLCB5b3Ugc2hvdWxk
IGNvbnNpZGVyIHRoZSBjYWNoZSBmb290cHJpbnQuCisgKgorICogICAgICBBIDY0SyBieXRlIHRh
YmxlIGZvciBsaW5lYXIgdG8geC1sYXcgYW5kIGEgNTEyIGJ5dGUgdGFibGUgZm9yIHgtbGF3IHRv
CisgKiAgICAgIGxpbmVhciBzb3VuZCBsaWtlIHBlYW51dHMgdGhlc2UgZGF5cywgYW5kIHNob3Vs
ZG4ndCBhbiBhcnJheSBsb29rdXAgYmUKKyAqICAgICAgcmVhbCBmYXN0PyBObyEgV2hlbiB0aGUg
Y2FjaGUgc2xvc2hlcyBhcyBiYWRseSBhcyB0aGlzIG9uZSB3aWxsLCBhIHRpZ2h0CisgKiAgICAg
IGNhbGN1bGF0aW9uIG1heSBiZSBiZXR0ZXIuIFRoZSBtZXNzaWVzdCBwYXJ0IGlzIG5vcm1hbGx5
IGZpbmRpbmcgdGhlCisgKiAgICAgIHNlZ21lbnQsIGJ1dCBhIGxpdHRsZSBpbmxpbmUgYXNzZW1i
bHkgY2FuIGZpeCB0aGF0IG9uIGFuIGkzODYsIHg4Nl82NCBhbmQKKyAqICAgICAgbWFueSBvdGhl
ciBtb2Rlcm4gcHJvY2Vzc29ycy4KKyAqLworCisvKgorICogTXUtbGF3IGlzIGJhc2ljYWxseSBh
cyBmb2xsb3dzOgorICoKKyAqICAgICAgQmlhc2VkIExpbmVhciBJbnB1dCBDb2RlICAgICAgICBD
b21wcmVzc2VkIENvZGUKKyAqICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAt
LS0tLS0tLS0tLS0tLS0KKyAqICAgICAgMDAwMDAwMDF3eHl6YSAgICAgICAgICAgICAgICAgICAw
MDB3eHl6CisgKiAgICAgIDAwMDAwMDF3eHl6YWIgICAgICAgICAgICAgICAgICAgMDAxd3h5egor
ICogICAgICAwMDAwMDF3eHl6YWJjICAgICAgICAgICAgICAgICAgIDAxMHd4eXoKKyAqICAgICAg
MDAwMDF3eHl6YWJjZCAgICAgICAgICAgICAgICAgICAwMTF3eHl6CisgKiAgICAgIDAwMDF3eHl6
YWJjZGUgICAgICAgICAgICAgICAgICAgMTAwd3h5egorICogICAgICAwMDF3eHl6YWJjZGVmICAg
ICAgICAgICAgICAgICAgIDEwMXd4eXoKKyAqICAgICAgMDF3eHl6YWJjZGVmZyAgICAgICAgICAg
ICAgICAgICAxMTB3eHl6CisgKiAgICAgIDF3eHl6YWJjZGVmZ2ggICAgICAgICAgICAgICAgICAg
MTExd3h5egorICoKKyAqIEVhY2ggYmlhc2VkIGxpbmVhciBjb2RlIGhhcyBhIGxlYWRpbmcgMSB3
aGljaCBpZGVudGlmaWVzIHRoZSBzZWdtZW50CisgKiBudW1iZXIuIFRoZSB2YWx1ZSBvZiB0aGUg
c2VnbWVudCBudW1iZXIgaXMgZXF1YWwgdG8gNyBtaW51cyB0aGUgbnVtYmVyCisgKiBvZiBsZWFk
aW5nIDAncy4gVGhlIHF1YW50aXphdGlvbiBpbnRlcnZhbCBpcyBkaXJlY3RseSBhdmFpbGFibGUg
YXMgdGhlCisgKiBmb3VyIGJpdHMgd3h5ei4gICogVGhlIHRyYWlsaW5nIGJpdHMgKGEgLSBoKSBh
cmUgaWdub3JlZC4KKyAqCisgKiBPcmRpbmFyaWx5IHRoZSBjb21wbGVtZW50IG9mIHRoZSByZXN1
bHRpbmcgY29kZSB3b3JkIGlzIHVzZWQgZm9yCisgKiB0cmFuc21pc3Npb24sIGFuZCBzbyB0aGUg
Y29kZSB3b3JkIGlzIGNvbXBsZW1lbnRlZCBiZWZvcmUgaXQgaXMgcmV0dXJuZWQuCisgKgorICog
Rm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gc2VlIEpvaG4gQy4gQmVsbGFteSdzIERpZ2l0YWwgVGVs
ZXBob255LCAxOTgyLAorICogSm9obiBXaWxleSAmIFNvbnMsIHBwcyA5OC0xMTEgYW5kIDQ3Mi00
NzYuCisgKi8KKworLy8jZGVmaW5lIFVMQVdfWkVST1RSQVAgICAgICAgICAgICAgICAgIC8qIHR1
cm4gb24gdGhlIHRyYXAgYXMgcGVyIHRoZSBNSUwtU1REICovCisjZGVmaW5lIFVMQVdfQklBUyAw
eDg0ICAvKiBCaWFzIGZvciBsaW5lYXIgY29kZS4gKi8KKworLyohIFxicmllZiBFbmNvZGUgYSBs
aW5lYXIgc2FtcGxlIHRvIHUtbGF3CisgICAgXHBhcmFtIGxpbmVhciBUaGUgc2FtcGxlIHRvIGVu
Y29kZS4KKyAgICBccmV0dXJuIFRoZSB1LWxhdyB2YWx1ZS4KKyovCitzdGF0aWMgX19pbmxpbmUg
dWludDhfdCBsaW5lYXJfdG9fdWxhdyhpbnQgbGluZWFyKSB7CisgIHVpbnQ4X3QgdV92YWw7Cisg
IGludCBtYXNrOworICBpbnQgc2VnOworCisgIC8qIEdldCB0aGUgc2lnbiBhbmQgdGhlIG1hZ25p
dHVkZSBvZiB0aGUgdmFsdWUuICovCisgIGlmIChsaW5lYXIgPCAwKSB7CisgICAgLyogV2ViUnRj
LCB0bGVncmFuZDogLTEgYWRkZWQgdG8gZ2V0IGJpdGV4YWN0IHRvIHJlZmVyZW5jZSBpbXBsZW1l
bnRhdGlvbiAqLworICAgIGxpbmVhciA9IFVMQVdfQklBUyAtIGxpbmVhciAtIDE7CisgICAgbWFz
ayA9IDB4N0Y7CisgIH0gZWxzZSB7CisgICAgbGluZWFyID0gVUxBV19CSUFTICsgbGluZWFyOwor
ICAgIG1hc2sgPSAweEZGOworICB9CisKKyAgc2VnID0gdG9wX2JpdChsaW5lYXIgfCAweEZGKSAt
IDc7CisKKyAgLyoKKyAgICogQ29tYmluZSB0aGUgc2lnbiwgc2VnbWVudCwgcXVhbnRpemF0aW9u
IGJpdHMsCisgICAqIGFuZCBjb21wbGVtZW50IHRoZSBjb2RlIHdvcmQuCisgICAqLworICBpZiAo
c2VnID49IDgpCisgICAgdV92YWwgPSAodWludDhfdCkoMHg3RiBeIG1hc2spOworICBlbHNlCisg
ICAgdV92YWwgPSAodWludDhfdCkoKChzZWcgPDwgNCkgfCAoKGxpbmVhciA+PiAoc2VnICsgMykp
ICYgMHhGKSkgXiBtYXNrKTsKKyNpZmRlZiBVTEFXX1pFUk9UUkFQCisgIC8qIE9wdGlvbmFsIElU
VSB0cmFwICovCisgIGlmICh1X3ZhbCA9PSAwKQorICAgIHVfdmFsID0gMHgwMjsKKyNlbmRpZgor
ICByZXR1cm4gdV92YWw7Cit9CisKKy8qISBcYnJpZWYgRGVjb2RlIGFuIHUtbGF3IHNhbXBsZSB0
byBhIGxpbmVhciB2YWx1ZS4KKyAgICBccGFyYW0gdWxhdyBUaGUgdS1sYXcgc2FtcGxlIHRvIGRl
Y29kZS4KKyAgICBccmV0dXJuIFRoZSBsaW5lYXIgdmFsdWUuCisqLworc3RhdGljIF9faW5saW5l
IGludDE2X3QgdWxhd190b19saW5lYXIodWludDhfdCB1bGF3KSB7CisgIGludCB0OworCisgIC8q
IENvbXBsZW1lbnQgdG8gb2J0YWluIG5vcm1hbCB1LWxhdyB2YWx1ZS4gKi8KKyAgdWxhdyA9IH51
bGF3OworICAvKgorICAgKiBFeHRyYWN0IGFuZCBiaWFzIHRoZSBxdWFudGl6YXRpb24gYml0cy4g
VGhlbgorICAgKiBzaGlmdCB1cCBieSB0aGUgc2VnbWVudCBudW1iZXIgYW5kIHN1YnRyYWN0IG91
dCB0aGUgYmlhcy4KKyAgICovCisgIHQgPSAoKCh1bGF3ICYgMHgwRikgPDwgMykgKyBVTEFXX0JJ
QVMpIDw8ICgoKGludCkgdWxhdyAmIDB4NzApID4+IDQpOworICByZXR1cm4gKGludDE2X3QpKCh1
bGF3ICYgMHg4MCkgPyAoVUxBV19CSUFTIC0gdCkgOiAodCAtIFVMQVdfQklBUykpOworfQorCisv
KgorICogQS1sYXcgaXMgYmFzaWNhbGx5IGFzIGZvbGxvd3M6CisgKgorICogICAgICBMaW5lYXIg
SW5wdXQgQ29kZSAgICAgICAgQ29tcHJlc3NlZCBDb2RlCisgKiAgICAgIC0tLS0tLS0tLS0tLS0t
LS0tICAgICAgICAtLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgMDAwMDAwMHd4eXphICAgICAgICAg
ICAgIDAwMHd4eXoKKyAqICAgICAgMDAwMDAwMXd4eXphICAgICAgICAgICAgIDAwMXd4eXoKKyAq
ICAgICAgMDAwMDAxd3h5emFiICAgICAgICAgICAgIDAxMHd4eXoKKyAqICAgICAgMDAwMDF3eHl6
YWJjICAgICAgICAgICAgIDAxMXd4eXoKKyAqICAgICAgMDAwMXd4eXphYmNkICAgICAgICAgICAg
IDEwMHd4eXoKKyAqICAgICAgMDAxd3h5emFiY2RlICAgICAgICAgICAgIDEwMXd4eXoKKyAqICAg
ICAgMDF3eHl6YWJjZGVmICAgICAgICAgICAgIDExMHd4eXoKKyAqICAgICAgMXd4eXphYmNkZWZn
ICAgICAgICAgICAgIDExMXd4eXoKKyAqCisgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiBzZWUg
Sm9obiBDLiBCZWxsYW15J3MgRGlnaXRhbCBUZWxlcGhvbnksIDE5ODIsCisgKiBKb2huIFdpbGV5
ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KKyAqLworCisjZGVmaW5lIEFMQVdfQU1J
X01BU0sgMHg1NQorCisvKiEgXGJyaWVmIEVuY29kZSBhIGxpbmVhciBzYW1wbGUgdG8gQS1sYXcK
KyAgICBccGFyYW0gbGluZWFyIFRoZSBzYW1wbGUgdG8gZW5jb2RlLgorICAgIFxyZXR1cm4gVGhl
IEEtbGF3IHZhbHVlLgorKi8KK3N0YXRpYyBfX2lubGluZSB1aW50OF90IGxpbmVhcl90b19hbGF3
KGludCBsaW5lYXIpIHsKKyAgaW50IG1hc2s7CisgIGludCBzZWc7CisKKyAgaWYgKGxpbmVhciA+
PSAwKSB7CisgICAgLyogU2lnbiAoYml0IDcpIGJpdCA9IDEgKi8KKyAgICBtYXNrID0gQUxBV19B
TUlfTUFTSyB8IDB4ODA7CisgIH0gZWxzZSB7CisgICAgLyogU2lnbiAoYml0IDcpIGJpdCA9IDAg
Ki8KKyAgICBtYXNrID0gQUxBV19BTUlfTUFTSzsKKyAgICAvKiBXZWJSdGMsIHRsZWdyYW5kOiBD
aGFuZ2VkIGZyb20gLTggdG8gLTEgdG8gZ2V0IGJpdGV4YWN0IHRvIHJlZmVyZW5jZQorICAgICAq
IGltcGxlbWVudGF0aW9uICovCisgICAgbGluZWFyID0gLWxpbmVhciAtIDE7CisgIH0KKworICAv
KiBDb252ZXJ0IHRoZSBzY2FsZWQgbWFnbml0dWRlIHRvIHNlZ21lbnQgbnVtYmVyLiAqLworICBz
ZWcgPSB0b3BfYml0KGxpbmVhciB8IDB4RkYpIC0gNzsKKyAgaWYgKHNlZyA+PSA4KSB7CisgICAg
aWYgKGxpbmVhciA+PSAwKSB7CisgICAgICAvKiBPdXQgb2YgcmFuZ2UuIFJldHVybiBtYXhpbXVt
IHZhbHVlLiAqLworICAgICAgcmV0dXJuICh1aW50OF90KSgweDdGIF4gbWFzayk7CisgICAgfQor
ICAgIC8qIFdlIG11c3QgYmUganVzdCBhIHRpbnkgc3RlcCBiZWxvdyB6ZXJvICovCisgICAgcmV0
dXJuICh1aW50OF90KSgweDAwIF4gbWFzayk7CisgIH0KKyAgLyogQ29tYmluZSB0aGUgc2lnbiwg
c2VnbWVudCwgYW5kIHF1YW50aXphdGlvbiBiaXRzLiAqLworICByZXR1cm4gKHVpbnQ4X3QpKCgo
c2VnIDw8IDQpIHwgKChsaW5lYXIgPj4gKChzZWcpID8gKHNlZyArIDMpIDogNCkpICYgMHgwRikp
IF4KKyAgICAgICAgICAgICAgICAgICBtYXNrKTsKK30KKworLyohIFxicmllZiBEZWNvZGUgYW4g
QS1sYXcgc2FtcGxlIHRvIGEgbGluZWFyIHZhbHVlLgorICAgIFxwYXJhbSBhbGF3IFRoZSBBLWxh
dyBzYW1wbGUgdG8gZGVjb2RlLgorICAgIFxyZXR1cm4gVGhlIGxpbmVhciB2YWx1ZS4KKyovCitz
dGF0aWMgX19pbmxpbmUgaW50MTZfdCBhbGF3X3RvX2xpbmVhcih1aW50OF90IGFsYXcpIHsKKyAg
aW50IGk7CisgIGludCBzZWc7CisKKyAgYWxhdyBePSBBTEFXX0FNSV9NQVNLOworICBpID0gKChh
bGF3ICYgMHgwRikgPDwgNCk7CisgIHNlZyA9ICgoKGludCkgYWxhdyAmIDB4NzApID4+IDQpOwor
ICBpZiAoc2VnKQorICAgIGkgPSAoaSArIDB4MTA4KSA8PCAoc2VnIC0gMSk7CisgIGVsc2UKKyAg
ICBpICs9IDg7CisgIHJldHVybiAoaW50MTZfdCkoKGFsYXcgJiAweDgwKSA/IGkgOiAtaSk7Cit9
CisKKy8qISBcYnJpZWYgVHJhbnNjb2RlIGZyb20gQS1sYXcgdG8gdS1sYXcsIHVzaW5nIHRoZSBw
cm9jZWR1cmUgZGVmaW5lZCBpbiBHLjcxMS4KKyAgICBccGFyYW0gYWxhdyBUaGUgQS1sYXcgc2Ft
cGxlIHRvIHRyYW5zY29kZS4KKyAgICBccmV0dXJuIFRoZSBiZXN0IG1hdGNoaW5nIHUtbGF3IHZh
bHVlLgorKi8KK3VpbnQ4X3QgYWxhd190b191bGF3KHVpbnQ4X3QgYWxhdyk7CisKKy8qISBcYnJp
ZWYgVHJhbnNjb2RlIGZyb20gdS1sYXcgdG8gQS1sYXcsIHVzaW5nIHRoZSBwcm9jZWR1cmUgZGVm
aW5lZCBpbiBHLjcxMS4KKyAgICBccGFyYW0gYWxhdyBUaGUgdS1sYXcgc2FtcGxlIHRvIHRyYW5z
Y29kZS4KKyAgICBccmV0dXJuIFRoZSBiZXN0IG1hdGNoaW5nIEEtbGF3IHZhbHVlLgorKi8KK3Vp
bnQ4X3QgdWxhd190b19hbGF3KHVpbnQ4X3QgdWxhdyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9f
ZGVjb2Rlcl9nNzIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNhMGY2ZWRlNjZhOTU3NDI1MTdhYWU2NDM3YWQzZjM1ZDQwMTgyNjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MK
QEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAid2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5o
IgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJ3ZWJydGMvYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJ3ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9l
bmNvZGVkX2F1ZGlvX2ZyYW1lLmgiCisjaW5jbHVkZSAid2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitBdWRpb0RlY29kZXJHNzIyOjpBdWRpb0RlY29kZXJHNzIyKCkgeworICBXZWJSdGNHNzIyX0Ny
ZWF0ZURlY29kZXIoJmRlY19zdGF0ZV8pOworICBXZWJSdGNHNzIyX0RlY29kZXJJbml0KGRlY19z
dGF0ZV8pOworfQorCitBdWRpb0RlY29kZXJHNzIyOjp+QXVkaW9EZWNvZGVyRzcyMigpIHsKKyAg
V2ViUnRjRzcyMl9GcmVlRGVjb2RlcihkZWNfc3RhdGVfKTsKK30KKworYm9vbCBBdWRpb0RlY29k
ZXJHNzIyOjpIYXNEZWNvZGVQbGMoKSBjb25zdCB7CisgIHJldHVybiBmYWxzZTsKK30KKworaW50
IEF1ZGlvRGVjb2Rlckc3MjI6OkRlY29kZUludGVybmFsKGNvbnN0IHVpbnQ4X3QqIGVuY29kZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRfbGVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9o
eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90KiBkZWNvZGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWVjaFR5cGUqIHNwZWVj
aF90eXBlKSB7CisgIFJUQ19EQ0hFQ0tfRVEoU2FtcGxlUmF0ZUh6KCksIHNhbXBsZV9yYXRlX2h6
KTsKKyAgaW50MTZfdCB0ZW1wX3R5cGUgPSAxOyAgLy8gRGVmYXVsdCBpcyBzcGVlY2guCisgIHNp
emVfdCByZXQgPQorICAgICAgV2ViUnRjRzcyMl9EZWNvZGUoZGVjX3N0YXRlXywgZW5jb2RlZCwg
ZW5jb2RlZF9sZW4sIGRlY29kZWQsICZ0ZW1wX3R5cGUpOworICAqc3BlZWNoX3R5cGUgPSBDb252
ZXJ0U3BlZWNoVHlwZSh0ZW1wX3R5cGUpOworICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXQp
OworfQorCit2b2lkIEF1ZGlvRGVjb2Rlckc3MjI6OlJlc2V0KCkgeworICBXZWJSdGNHNzIyX0Rl
Y29kZXJJbml0KGRlY19zdGF0ZV8pOworfQorCitzdGQ6OnZlY3RvcjxBdWRpb0RlY29kZXI6OlBh
cnNlUmVzdWx0PiBBdWRpb0RlY29kZXJHNzIyOjpQYXJzZVBheWxvYWQoCisgICAgcnRjOjpCdWZm
ZXImJiBwYXlsb2FkLAorICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgeworICByZXR1cm4gTGVnYWN5
RW5jb2RlZEF1ZGlvRnJhbWU6OlNwbGl0QnlTYW1wbGVzKHRoaXMsIHN0ZDo6bW92ZShwYXlsb2Fk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXAsIDgsIDE2KTsKK30KKworaW50IEF1ZGlvRGVjb2Rlckc3MjI6OlBhY2tldER1cmF0aW9u
KGNvbnN0IHVpbnQ4X3QqIGVuY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGVuY29kZWRfbGVuKSBjb25zdCB7CisgIC8vIDEvMiBlbmNvZGVkIGJ5dGUg
cGVyIHNhbXBsZSBwZXIgY2hhbm5lbC4KKyAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oMiAqIGVu
Y29kZWRfbGVuIC8gQ2hhbm5lbHMoKSk7Cit9CisKK2ludCBBdWRpb0RlY29kZXJHNzIyOjpTYW1w
bGVSYXRlSHooKSBjb25zdCB7CisgIHJldHVybiAxNjAwMDsKK30KKworc2l6ZV90IEF1ZGlvRGVj
b2Rlckc3MjI6OkNoYW5uZWxzKCkgY29uc3QgeworICByZXR1cm4gMTsKK30KKworQXVkaW9EZWNv
ZGVyRzcyMlN0ZXJlbzo6QXVkaW9EZWNvZGVyRzcyMlN0ZXJlbygpIHsKKyAgV2ViUnRjRzcyMl9D
cmVhdGVEZWNvZGVyKCZkZWNfc3RhdGVfbGVmdF8pOworICBXZWJSdGNHNzIyX0NyZWF0ZURlY29k
ZXIoJmRlY19zdGF0ZV9yaWdodF8pOworICBXZWJSdGNHNzIyX0RlY29kZXJJbml0KGRlY19zdGF0
ZV9sZWZ0Xyk7CisgIFdlYlJ0Y0c3MjJfRGVjb2RlckluaXQoZGVjX3N0YXRlX3JpZ2h0Xyk7Cit9
CisKK0F1ZGlvRGVjb2Rlckc3MjJTdGVyZW86On5BdWRpb0RlY29kZXJHNzIyU3RlcmVvKCkgewor
ICBXZWJSdGNHNzIyX0ZyZWVEZWNvZGVyKGRlY19zdGF0ZV9sZWZ0Xyk7CisgIFdlYlJ0Y0c3MjJf
RnJlZURlY29kZXIoZGVjX3N0YXRlX3JpZ2h0Xyk7Cit9CisKK2ludCBBdWRpb0RlY29kZXJHNzIy
U3RlcmVvOjpEZWNvZGVJbnRlcm5hbChjb25zdCB1aW50OF90KiBlbmNvZGVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkX2xlbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVf
aHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCog
ZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVl
Y2hUeXBlKiBzcGVlY2hfdHlwZSkgeworICBSVENfRENIRUNLX0VRKFNhbXBsZVJhdGVIeigpLCBz
YW1wbGVfcmF0ZV9oeik7CisgIGludDE2X3QgdGVtcF90eXBlID0gMTsgIC8vIERlZmF1bHQgaXMg
c3BlZWNoLgorICAvLyBEZS1pbnRlcmxlYXZlIHRoZSBiaXQtc3RyZWFtIGludG8gdHdvIHNlcGFy
YXRlIHBheWxvYWRzLgorICB1aW50OF90KiBlbmNvZGVkX2RlaW50ZXJsZWF2ZWQgPSBuZXcgdWlu
dDhfdFtlbmNvZGVkX2xlbl07CisgIFNwbGl0U3RlcmVvUGFja2V0KGVuY29kZWQsIGVuY29kZWRf
bGVuLCBlbmNvZGVkX2RlaW50ZXJsZWF2ZWQpOworICAvLyBEZWNvZGUgbGVmdCBhbmQgcmlnaHQu
CisgIHNpemVfdCBkZWNvZGVkX2xlbiA9IFdlYlJ0Y0c3MjJfRGVjb2RlKGRlY19zdGF0ZV9sZWZ0
XywgZW5jb2RlZF9kZWludGVybGVhdmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVkX2xlbiAvIDIsIGRlY29kZWQsICZ0ZW1wX3R5cGUpOworICBzaXpl
X3QgcmV0ID0gV2ViUnRjRzcyMl9EZWNvZGUoCisgICAgICBkZWNfc3RhdGVfcmlnaHRfLCAmZW5j
b2RlZF9kZWludGVybGVhdmVkW2VuY29kZWRfbGVuIC8gMl0sCisgICAgICBlbmNvZGVkX2xlbiAv
IDIsICZkZWNvZGVkW2RlY29kZWRfbGVuXSwgJnRlbXBfdHlwZSk7CisgIGlmIChyZXQgPT0gZGVj
b2RlZF9sZW4pIHsKKyAgICByZXQgKz0gZGVjb2RlZF9sZW47ICAvLyBSZXR1cm4gdG90YWwgbnVt
YmVyIG9mIHNhbXBsZXMuCisgICAgLy8gSW50ZXJsZWF2ZSBvdXRwdXQuCisgICAgZm9yIChzaXpl
X3QgayA9IHJldCAvIDI7IGsgPCByZXQ7IGsrKykgeworICAgICAgaW50MTZfdCB0ZW1wID0gZGVj
b2RlZFtrXTsKKyAgICAgIG1lbW1vdmUoJmRlY29kZWRbMiAqIGsgLSByZXQgKyAyXSwgJmRlY29k
ZWRbMiAqIGsgLSByZXQgKyAxXSwKKyAgICAgICAgICAgICAgKHJldCAtIGsgLSAxKSAqIHNpemVv
ZihpbnQxNl90KSk7CisgICAgICBkZWNvZGVkWzIgKiBrIC0gcmV0ICsgMV0gPSB0ZW1wOworICAg
IH0KKyAgfQorICAqc3BlZWNoX3R5cGUgPSBDb252ZXJ0U3BlZWNoVHlwZSh0ZW1wX3R5cGUpOwor
ICBkZWxldGVbXSBlbmNvZGVkX2RlaW50ZXJsZWF2ZWQ7CisgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJldCk7Cit9CisKK2ludCBBdWRpb0RlY29kZXJHNzIyU3RlcmVvOjpTYW1wbGVSYXRlSHoo
KSBjb25zdCB7CisgIHJldHVybiAxNjAwMDsKK30KKworc2l6ZV90IEF1ZGlvRGVjb2Rlckc3MjJT
dGVyZW86OkNoYW5uZWxzKCkgY29uc3QgeworICByZXR1cm4gMjsKK30KKwordm9pZCBBdWRpb0Rl
Y29kZXJHNzIyU3RlcmVvOjpSZXNldCgpIHsKKyAgV2ViUnRjRzcyMl9EZWNvZGVySW5pdChkZWNf
c3RhdGVfbGVmdF8pOworICBXZWJSdGNHNzIyX0RlY29kZXJJbml0KGRlY19zdGF0ZV9yaWdodF8p
OworfQorCitzdGQ6OnZlY3RvcjxBdWRpb0RlY29kZXI6OlBhcnNlUmVzdWx0PiBBdWRpb0RlY29k
ZXJHNzIyU3RlcmVvOjpQYXJzZVBheWxvYWQoCisgICAgcnRjOjpCdWZmZXImJiBwYXlsb2FkLAor
ICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgeworICByZXR1cm4gTGVnYWN5RW5jb2RlZEF1ZGlvRnJh
bWU6OlNwbGl0QnlTYW1wbGVzKHRoaXMsIHN0ZDo6bW92ZShwYXlsb2FkKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAsIDIgKiA4LCAx
Nik7Cit9CisKKy8vIFNwbGl0IHRoZSBzdGVyZW8gcGFja2V0IGFuZCBwbGFjZSBsZWZ0IGFuZCBy
aWdodCBjaGFubmVsIGFmdGVyIGVhY2ggb3RoZXIKKy8vIGluIHRoZSBvdXRwdXQgYXJyYXkuCit2
b2lkIEF1ZGlvRGVjb2Rlckc3MjJTdGVyZW86OlNwbGl0U3RlcmVvUGFja2V0KGNvbnN0IHVpbnQ4
X3QqIGVuY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBlbmNvZGVkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCogZW5jb2RlZF9kZWludGVybGVhdmVkKSB7CisgIC8vIFJl
Z3JvdXAgdGhlIDQgYml0cy9zYW1wbGUgc28gfGwxIGwyfCB8cjEgcjJ8IHxsMyBsNHwgfHIzIHI0
fCAuLi4sCisgIC8vIHdoZXJlICJseCIgaXMgNCBiaXRzIHJlcHJlc2VudGluZyBsZWZ0IHNhbXBs
ZSBudW1iZXIgeCwgYW5kICJyeCIgcmlnaHQKKyAgLy8gc2FtcGxlLiBUd28gc2FtcGxlcyBmaXQg
aW4gb25lIGJ5dGUsIHJlcHJlc2VudGVkIHdpdGggfC4uLnwuCisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICsgMSA8IGVuY29kZWRfbGVuOyBpICs9IDIpIHsKKyAgICB1aW50OF90IHJpZ2h0X2J5dGUg
PSAoKGVuY29kZWRbaV0gJiAweDBGKSA8PCA0KSArIChlbmNvZGVkW2kgKyAxXSAmIDB4MEYpOwor
ICAgIGVuY29kZWRfZGVpbnRlcmxlYXZlZFtpXSA9IChlbmNvZGVkW2ldICYgMHhGMCkgKyAoZW5j
b2RlZFtpICsgMV0gPj4gNCk7CisgICAgZW5jb2RlZF9kZWludGVybGVhdmVkW2kgKyAxXSA9IHJp
Z2h0X2J5dGU7CisgIH0KKworICAvLyBNb3ZlIG9uZSBieXRlIHJlcHJlc2VudGluZyByaWdodCBj
aGFubmVsIGVhY2ggbG9vcCwgYW5kIHBsYWNlIGl0IGF0IHRoZQorICAvLyBlbmQgb2YgdGhlIGJ5
dGVzdHJlYW0gdmVjdG9yLiBBZnRlciBsb29waW5nIHRoZSBkYXRhIGlzIHJlb3JkZXJlZCB0bzoK
KyAgLy8gfGwxIGwyfCB8bDMgbDR8IC4uLiB8bChOLTEpIGxOfCB8cjEgcjJ8IHxyMyByNHwgLi4u
IHxyKE4tMSkgcihOKXwsCisgIC8vIHdoZXJlIE4gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBzYW1w
bGVzLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVuY29kZWRfbGVuIC8gMjsgaSsrKSB7Cisg
ICAgdWludDhfdCByaWdodF9ieXRlID0gZW5jb2RlZF9kZWludGVybGVhdmVkW2kgKyAxXTsKKyAg
ICBtZW1tb3ZlKCZlbmNvZGVkX2RlaW50ZXJsZWF2ZWRbaSArIDFdLCAmZW5jb2RlZF9kZWludGVy
bGVhdmVkW2kgKyAyXSwKKyAgICAgICAgICAgIGVuY29kZWRfbGVuIC0gaSAtIDIpOworICAgIGVu
Y29kZWRfZGVpbnRlcmxlYXZlZFtlbmNvZGVkX2xlbiAtIDFdID0gcmlnaHRfYnl0ZTsKKyAgfQor
fQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcy
Mi9hdWRpb19kZWNvZGVyX2c3MjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJf
ZzcyMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllN2M1ZDlkMDViZTQ1Mzg4N2ZhYWNlOTNmODNjNWE5NTQ2MmY5
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3
MjIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBX
RUJSVENfTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0c3MjJfQVVESU9fREVDT0RFUl9HNzIy
X0hfCisjZGVmaW5lIFdFQlJUQ19NT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfRzcyMl9BVURJ
T19ERUNPREVSX0c3MjJfSF8KKworI2luY2x1ZGUgIndlYnJ0Yy9iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKKyNpbmNsdWRlICJ3ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2F1ZGlv
X2RlY29kZXIuaCIKKwordHlwZWRlZiBzdHJ1Y3QgV2ViUnRjRzcyMkRlY0luc3QgRzcyMkRlY0lu
c3Q7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBBdWRpb0RlY29kZXJHNzIyIGZpbmFs
IDogcHVibGljIEF1ZGlvRGVjb2RlciB7CisgcHVibGljOgorICBBdWRpb0RlY29kZXJHNzIyKCk7
CisgIH5BdWRpb0RlY29kZXJHNzIyKCkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzRGVjb2RlUGxjKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgUmVzZXQoKSBvdmVycmlkZTsKKyAgc3RkOjp2ZWN0b3I8
UGFyc2VSZXN1bHQ+IFBhcnNlUGF5bG9hZChydGM6OkJ1ZmZlciYmIHBheWxvYWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKSBvdmVy
cmlkZTsKKyAgaW50IFBhY2tldER1cmF0aW9uKGNvbnN0IHVpbnQ4X3QqIGVuY29kZWQsIHNpemVf
dCBlbmNvZGVkX2xlbikgY29uc3Qgb3ZlcnJpZGU7CisgIGludCBTYW1wbGVSYXRlSHooKSBjb25z
dCBvdmVycmlkZTsKKyAgc2l6ZV90IENoYW5uZWxzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyBwcm90
ZWN0ZWQ6CisgIGludCBEZWNvZGVJbnRlcm5hbChjb25zdCB1aW50OF90KiBlbmNvZGVkLAorICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRfbGVuLAorICAgICAgICAgICAgICAgICAg
ICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCogZGVj
b2RlZCwKKyAgICAgICAgICAgICAgICAgICAgIFNwZWVjaFR5cGUqIHNwZWVjaF90eXBlKSBvdmVy
cmlkZTsKKworIHByaXZhdGU6CisgIEc3MjJEZWNJbnN0KiBkZWNfc3RhdGVfOworICBSVENfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKEF1ZGlvRGVjb2Rlckc3MjIpOworfTsKKworY2xhc3MgQXVk
aW9EZWNvZGVyRzcyMlN0ZXJlbyBmaW5hbCA6IHB1YmxpYyBBdWRpb0RlY29kZXIgeworIHB1Ymxp
YzoKKyAgQXVkaW9EZWNvZGVyRzcyMlN0ZXJlbygpOworICB+QXVkaW9EZWNvZGVyRzcyMlN0ZXJl
bygpIG92ZXJyaWRlOworICB2b2lkIFJlc2V0KCkgb3ZlcnJpZGU7CisgIHN0ZDo6dmVjdG9yPFBh
cnNlUmVzdWx0PiBQYXJzZVBheWxvYWQocnRjOjpCdWZmZXImJiBwYXlsb2FkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgb3ZlcnJp
ZGU7CisgIGludCBTYW1wbGVSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90IENoYW5u
ZWxzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyBwcm90ZWN0ZWQ6CisgIGludCBEZWNvZGVJbnRlcm5h
bChjb25zdCB1aW50OF90KiBlbmNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGVu
Y29kZWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAg
ICAgICAgICAgICAgICAgICAgaW50MTZfdCogZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAg
IFNwZWVjaFR5cGUqIHNwZWVjaF90eXBlKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIC8vIFNw
bGl0cyB0aGUgc3RlcmVvLWludGVybGVhdmVkIHBheWxvYWQgaW4gfGVuY29kZWR8IGludG8gc2Vw
YXJhdGUgcGF5bG9hZHMKKyAgLy8gZm9yIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWxzLiBUaGUgc2Vw
YXJhdGVkIHBheWxvYWRzIGFyZSB3cml0dGVuIHRvCisgIC8vIHxlbmNvZGVkX2RlaW50ZXJsZWF2
ZWR8LCB3aGljaCBtdXN0IGhvbGQgYXQgbGVhc3QgfGVuY29kZWRfbGVufCBzYW1wbGVzLgorICAv
LyBUaGUgbGVmdCBjaGFubmVsIHN0YXJ0cyBhdCBvZmZzZXQgMCwgd2hpbGUgdGhlIHJpZ2h0IGNo
YW5uZWwgc3RhcnRzIGF0CisgIC8vIG9mZnNldCBlbmNvZGVkX2xlbiAvIDIgaW50byB8ZW5jb2Rl
ZF9kZWludGVybGVhdmVkfC4KKyAgdm9pZCBTcGxpdFN0ZXJlb1BhY2tldChjb25zdCB1aW50OF90
KiBlbmNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkX2xlbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBlbmNvZGVkX2RlaW50ZXJsZWF2ZWQp
OworCisgIEc3MjJEZWNJbnN0KiBkZWNfc3RhdGVfbGVmdF87CisgIEc3MjJEZWNJbnN0KiBkZWNf
c3RhdGVfcmlnaHRfOworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEF1ZGlvRGVjb2Rl
ckc3MjJTdGVyZW8pOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IFdFQlJUQ19NT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfRzcyMl9BVURJT19ERUNPREVSX0c3
MjJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZjM5MzZjOGVlZWViOTJlNjdkMzIzM2M2OGY2M2ExMmNjMjk4YzRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCkBAIC0wLDAgKzEsMTY0
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIndlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaCIKKworI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlICJ3ZWJydGMvYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJ3ZWJy
dGMvY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAid2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitu
YW1lc3BhY2UgeworCitjb25zdCBzaXplX3Qga1NhbXBsZVJhdGVIeiA9IDE2MDAwOworCitBdWRp
b0VuY29kZXJHNzIyOjpDb25maWcgQ3JlYXRlQ29uZmlnKGNvbnN0IENvZGVjSW5zdCYgY29kZWNf
aW5zdCkgeworICBBdWRpb0VuY29kZXJHNzIyOjpDb25maWcgY29uZmlnOworICBjb25maWcubnVt
X2NoYW5uZWxzID0gY29kZWNfaW5zdC5jaGFubmVsczsKKyAgY29uZmlnLmZyYW1lX3NpemVfbXMg
PSBjb2RlY19pbnN0LnBhY3NpemUgLyAxNjsKKyAgY29uZmlnLnBheWxvYWRfdHlwZSA9IGNvZGVj
X2luc3QucGx0eXBlOworICByZXR1cm4gY29uZmlnOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwor
Ym9vbCBBdWRpb0VuY29kZXJHNzIyOjpDb25maWc6OklzT2soKSBjb25zdCB7CisgIHJldHVybiAo
ZnJhbWVfc2l6ZV9tcyA+IDApICYmIChmcmFtZV9zaXplX21zICUgMTAgPT0gMCkgJiYKKyAgICAg
IChudW1fY2hhbm5lbHMgPj0gMSk7Cit9CisKK0F1ZGlvRW5jb2Rlckc3MjI6OkF1ZGlvRW5jb2Rl
ckc3MjIoY29uc3QgQ29uZmlnJiBjb25maWcpCisgICAgOiBudW1fY2hhbm5lbHNfKGNvbmZpZy5u
dW1fY2hhbm5lbHMpLAorICAgICAgcGF5bG9hZF90eXBlXyhjb25maWcucGF5bG9hZF90eXBlKSwK
KyAgICAgIG51bV8xMG1zX2ZyYW1lc19wZXJfcGFja2V0XygKKyAgICAgICAgICBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvbmZpZy5mcmFtZV9zaXplX21zIC8gMTApKSwKKyAgICAgIG51bV8xMG1zX2Zy
YW1lc19idWZmZXJlZF8oMCksCisgICAgICBmaXJzdF90aW1lc3RhbXBfaW5fYnVmZmVyXygwKSwK
KyAgICAgIGVuY29kZXJzXyhuZXcgRW5jb2RlclN0YXRlW251bV9jaGFubmVsc19dKSwKKyAgICAg
IGludGVybGVhdmVfYnVmZmVyXygyICogbnVtX2NoYW5uZWxzXykgeworICBSVENfQ0hFQ0soY29u
ZmlnLklzT2soKSk7CisgIGNvbnN0IHNpemVfdCBzYW1wbGVzX3Blcl9jaGFubmVsID0KKyAgICAg
IGtTYW1wbGVSYXRlSHogLyAxMDAgKiBudW1fMTBtc19mcmFtZXNfcGVyX3BhY2tldF87CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2NoYW5uZWxzXzsgKytpKSB7CisgICAgZW5jb2RlcnNf
W2ldLnNwZWVjaF9idWZmZXIucmVzZXQobmV3IGludDE2X3Rbc2FtcGxlc19wZXJfY2hhbm5lbF0p
OworICAgIGVuY29kZXJzX1tpXS5lbmNvZGVkX2J1ZmZlci5TZXRTaXplKHNhbXBsZXNfcGVyX2No
YW5uZWwgLyAyKTsKKyAgfQorICBSZXNldCgpOworfQorCitBdWRpb0VuY29kZXJHNzIyOjpBdWRp
b0VuY29kZXJHNzIyKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkKKyAgICA6IEF1ZGlvRW5j
b2Rlckc3MjIoQ3JlYXRlQ29uZmlnKGNvZGVjX2luc3QpKSB7fQorCitBdWRpb0VuY29kZXJHNzIy
Ojp+QXVkaW9FbmNvZGVyRzcyMigpID0gZGVmYXVsdDsKKworaW50IEF1ZGlvRW5jb2Rlckc3MjI6
OlNhbXBsZVJhdGVIeigpIGNvbnN0IHsKKyAgcmV0dXJuIGtTYW1wbGVSYXRlSHo7Cit9CisKK3Np
emVfdCBBdWRpb0VuY29kZXJHNzIyOjpOdW1DaGFubmVscygpIGNvbnN0IHsKKyAgcmV0dXJuIG51
bV9jaGFubmVsc187Cit9CisKK2ludCBBdWRpb0VuY29kZXJHNzIyOjpSdHBUaW1lc3RhbXBSYXRl
SHooKSBjb25zdCB7CisgIC8vIFRoZSBSVFAgdGltZXN0YW1wIHJhdGUgZm9yIEcuNzIyIGlzIDgw
MDAgSHosIGV2ZW4gdGhvdWdoIGl0IGlzIGEgMTYga0h6CisgIC8vIGNvZGVjLgorICByZXR1cm4g
a1NhbXBsZVJhdGVIeiAvIDI7Cit9CisKK3NpemVfdCBBdWRpb0VuY29kZXJHNzIyOjpOdW0xME1z
RnJhbWVzSW5OZXh0UGFja2V0KCkgY29uc3QgeworICByZXR1cm4gbnVtXzEwbXNfZnJhbWVzX3Bl
cl9wYWNrZXRfOworfQorCitzaXplX3QgQXVkaW9FbmNvZGVyRzcyMjo6TWF4MTBNc0ZyYW1lc0lu
QVBhY2tldCgpIGNvbnN0IHsKKyAgcmV0dXJuIG51bV8xMG1zX2ZyYW1lc19wZXJfcGFja2V0XzsK
K30KKworaW50IEF1ZGlvRW5jb2Rlckc3MjI6OkdldFRhcmdldEJpdHJhdGUoKSBjb25zdCB7Cisg
IC8vIDQgYml0cy9zYW1wbGUsIDE2MDAwIHNhbXBsZXMvcy9jaGFubmVsLgorICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pig2NDAwMCAqIE51bUNoYW5uZWxzKCkpOworfQorCit2b2lkIEF1ZGlvRW5j
b2Rlckc3MjI6OlJlc2V0KCkgeworICBudW1fMTBtc19mcmFtZXNfYnVmZmVyZWRfID0gMDsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fY2hhbm5lbHNfOyArK2kpCisgICAgUlRDX0NIRUNL
X0VRKDAsIFdlYlJ0Y0c3MjJfRW5jb2RlckluaXQoZW5jb2RlcnNfW2ldLmVuY29kZXIpKTsKK30K
KworQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbyBBdWRpb0VuY29kZXJHNzIyOjpFbmNvZGVJbXBs
KAorICAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
aW50MTZfdD4gYXVkaW8sCisgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpIHsKKyAgaWYgKG51bV8x
MG1zX2ZyYW1lc19idWZmZXJlZF8gPT0gMCkKKyAgICBmaXJzdF90aW1lc3RhbXBfaW5fYnVmZmVy
XyA9IHJ0cF90aW1lc3RhbXA7CisKKyAgLy8gRGVpbnRlcmxlYXZlIHNhbXBsZXMgYW5kIHNhdmUg
dGhlbSBpbiBlYWNoIGNoYW5uZWwncyBidWZmZXIuCisgIGNvbnN0IHNpemVfdCBzdGFydCA9IGtT
YW1wbGVSYXRlSHogLyAxMDAgKiBudW1fMTBtc19mcmFtZXNfYnVmZmVyZWRfOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGtTYW1wbGVSYXRlSHogLyAxMDA7ICsraSkKKyAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IG51bV9jaGFubmVsc187ICsraikKKyAgICAgIGVuY29kZXJzX1tqXS5zcGVl
Y2hfYnVmZmVyW3N0YXJ0ICsgaV0gPSBhdWRpb1tpICogbnVtX2NoYW5uZWxzXyArIGpdOworCisg
IC8vIElmIHdlIGRvbid0IHlldCBoYXZlIGVub3VnaCBzYW1wbGVzIGZvciBhIHBhY2tldCwgd2Un
cmUgZG9uZSBmb3Igbm93LgorICBpZiAoKytudW1fMTBtc19mcmFtZXNfYnVmZmVyZWRfIDwgbnVt
XzEwbXNfZnJhbWVzX3Blcl9wYWNrZXRfKSB7CisgICAgcmV0dXJuIEVuY29kZWRJbmZvKCk7Cisg
IH0KKworICAvLyBFbmNvZGUgZWFjaCBjaGFubmVsIHNlcGFyYXRlbHkuCisgIFJUQ19DSEVDS19F
UShudW1fMTBtc19mcmFtZXNfYnVmZmVyZWRfLCBudW1fMTBtc19mcmFtZXNfcGVyX3BhY2tldF8p
OworICBudW1fMTBtc19mcmFtZXNfYnVmZmVyZWRfID0gMDsKKyAgY29uc3Qgc2l6ZV90IHNhbXBs
ZXNfcGVyX2NoYW5uZWwgPSBTYW1wbGVzUGVyQ2hhbm5lbCgpOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bV9jaGFubmVsc187ICsraSkgeworICAgIGNvbnN0IHNpemVfdCBieXRlc19lbmNv
ZGVkID0gV2ViUnRjRzcyMl9FbmNvZGUoCisgICAgICAgIGVuY29kZXJzX1tpXS5lbmNvZGVyLCBl
bmNvZGVyc19baV0uc3BlZWNoX2J1ZmZlci5nZXQoKSwKKyAgICAgICAgc2FtcGxlc19wZXJfY2hh
bm5lbCwgZW5jb2RlcnNfW2ldLmVuY29kZWRfYnVmZmVyLmRhdGEoKSk7CisgICAgUlRDX0NIRUNL
X0VRKGJ5dGVzX2VuY29kZWQsIHNhbXBsZXNfcGVyX2NoYW5uZWwgLyAyKTsKKyAgfQorCisgIGNv
bnN0IHNpemVfdCBieXRlc190b19lbmNvZGUgPSBzYW1wbGVzX3Blcl9jaGFubmVsIC8gMiAqIG51
bV9jaGFubmVsc187CisgIEVuY29kZWRJbmZvIGluZm87CisgIGluZm8uZW5jb2RlZF9ieXRlcyA9
IGVuY29kZWQtPkFwcGVuZERhdGEoCisgICAgICBieXRlc190b19lbmNvZGUsIFsmXSAocnRjOjpB
cnJheVZpZXc8dWludDhfdD4gZW5jb2RlZCkgeworICAgICAgICAvLyBJbnRlcmxlYXZlIHRoZSBl
bmNvZGVkIGJ5dGVzIG9mIHRoZSBkaWZmZXJlbnQgY2hhbm5lbHMuIEVhY2ggc2VwYXJhdGUKKyAg
ICAgICAgLy8gY2hhbm5lbCBhbmQgdGhlIGludGVybGVhdmVkIHN0cmVhbSBlbmNvZGVzIHR3byBz
YW1wbGVzIHBlciBieXRlLCBtb3N0CisgICAgICAgIC8vIHNpZ25pZmljYW50IGhhbGYgZmlyc3Qu
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FtcGxlc19wZXJfY2hhbm5lbCAvIDI7
ICsraSkgeworICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVtX2NoYW5uZWxzXzsg
KytqKSB7CisgICAgICAgICAgICB1aW50OF90IHR3b19zYW1wbGVzID0gZW5jb2RlcnNfW2pdLmVu
Y29kZWRfYnVmZmVyLmRhdGEoKVtpXTsKKyAgICAgICAgICAgIGludGVybGVhdmVfYnVmZmVyXy5k
YXRhKClbal0gPSB0d29fc2FtcGxlcyA+PiA0OworICAgICAgICAgICAgaW50ZXJsZWF2ZV9idWZm
ZXJfLmRhdGEoKVtudW1fY2hhbm5lbHNfICsgal0gPSB0d29fc2FtcGxlcyAmIDB4ZjsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1fY2hhbm5lbHNfOyAr
K2opCisgICAgICAgICAgICBlbmNvZGVkW2kgKiBudW1fY2hhbm5lbHNfICsgal0gPQorICAgICAg
ICAgICAgICAgIGludGVybGVhdmVfYnVmZmVyXy5kYXRhKClbMiAqIGpdIDw8IDQgfAorICAgICAg
ICAgICAgICAgIGludGVybGVhdmVfYnVmZmVyXy5kYXRhKClbMiAqIGogKyAxXTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBieXRlc190b19lbmNvZGU7CisgICAgICB9KTsKKyAgaW5mby5l
bmNvZGVkX3RpbWVzdGFtcCA9IGZpcnN0X3RpbWVzdGFtcF9pbl9idWZmZXJfOworICBpbmZvLnBh
eWxvYWRfdHlwZSA9IHBheWxvYWRfdHlwZV87CisgIGluZm8uZW5jb2Rlcl90eXBlID0gQ29kZWNU
eXBlOjprRzcyMjsKKyAgcmV0dXJuIGluZm87Cit9CisKK0F1ZGlvRW5jb2Rlckc3MjI6OkVuY29k
ZXJTdGF0ZTo6RW5jb2RlclN0YXRlKCkgeworICBSVENfQ0hFQ0tfRVEoMCwgV2ViUnRjRzcyMl9D
cmVhdGVFbmNvZGVyKCZlbmNvZGVyKSk7Cit9CisKK0F1ZGlvRW5jb2Rlckc3MjI6OkVuY29kZXJT
dGF0ZTo6fkVuY29kZXJTdGF0ZSgpIHsKKyAgUlRDX0NIRUNLX0VRKDAsIFdlYlJ0Y0c3MjJfRnJl
ZUVuY29kZXIoZW5jb2RlcikpOworfQorCitzaXplX3QgQXVkaW9FbmNvZGVyRzcyMjo6U2FtcGxl
c1BlckNoYW5uZWwoKSBjb25zdCB7CisgIHJldHVybiBrU2FtcGxlUmF0ZUh6IC8gMTAwICogbnVt
XzEwbXNfZnJhbWVzX3Blcl9wYWNrZXRfOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNDlhODY1ZTI1
NTZlN2RkN2YyMWJhMDlmODA1MWRjODhiMzMzMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBXRUJSVENfTU9EVUxFU19BVURJT19DT0RJTkdfQ09E
RUNTX0c3MjJfQVVESU9fRU5DT0RFUl9HNzIyX0hfCisjZGVmaW5lIFdFQlJUQ19NT0RVTEVTX0FV
RElPX0NPRElOR19DT0RFQ1NfRzcyMl9BVURJT19FTkNPREVSX0c3MjJfSF8KKworI2luY2x1ZGUg
PG1lbW9yeT4KKworI2luY2x1ZGUgIndlYnJ0Yy9iYXNlL2J1ZmZlci5oIgorI2luY2x1ZGUgIndl
YnJ0Yy9iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJ3ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKKyNpbmNsdWRlICJ3ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9pbnRlcmZhY2UuaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKK3N0cnVjdCBDb2RlY0luc3Q7CisKK2NsYXNzIEF1ZGlvRW5jb2Rlckc3
MjIgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKKyBwdWJsaWM6CisgIHN0cnVjdCBDb25m
aWcgeworICAgIGJvb2wgSXNPaygpIGNvbnN0OworCisgICAgaW50IHBheWxvYWRfdHlwZSA9IDk7
CisgICAgaW50IGZyYW1lX3NpemVfbXMgPSAyMDsKKyAgICBzaXplX3QgbnVtX2NoYW5uZWxzID0g
MTsKKyAgfTsKKworICBleHBsaWNpdCBBdWRpb0VuY29kZXJHNzIyKGNvbnN0IENvbmZpZyYgY29u
ZmlnKTsKKyAgZXhwbGljaXQgQXVkaW9FbmNvZGVyRzcyMihjb25zdCBDb2RlY0luc3QmIGNvZGVj
X2luc3QpOworICB+QXVkaW9FbmNvZGVyRzcyMigpIG92ZXJyaWRlOworCisgIGludCBTYW1wbGVS
YXRlSHooKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90IE51bUNoYW5uZWxzKCkgY29uc3Qgb3Zl
cnJpZGU7CisgIGludCBSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6
ZV90IE51bTEwTXNGcmFtZXNJbk5leHRQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90
IE1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgaW50IEdldFRhcmdl
dEJpdHJhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOworCisg
cHJvdGVjdGVkOgorICBFbmNvZGVkSW5mbyBFbmNvZGVJbXBsKHVpbnQzMl90IHJ0cF90aW1lc3Rh
bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZf
dD4gYXVkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQp
IG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgLy8gVGhlIGVuY29kZXIgc3RhdGUgZm9yIG9uZSBj
aGFubmVsLgorICBzdHJ1Y3QgRW5jb2RlclN0YXRlIHsKKyAgICBHNzIyRW5jSW5zdCogZW5jb2Rl
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8aW50MTZfdFtdPiBzcGVlY2hfYnVmZmVyOyAgIC8vIFF1
ZXVlZCB1cCBmb3IgZW5jb2RpbmcuCisgICAgcnRjOjpCdWZmZXIgZW5jb2RlZF9idWZmZXI7ICAg
ICAgICAgICAgICAgICAvLyBBbHJlYWR5IGVuY29kZWQuCisgICAgRW5jb2RlclN0YXRlKCk7Cisg
ICAgfkVuY29kZXJTdGF0ZSgpOworICB9OworCisgIHNpemVfdCBTYW1wbGVzUGVyQ2hhbm5lbCgp
IGNvbnN0OworCisgIGNvbnN0IHNpemVfdCBudW1fY2hhbm5lbHNfOworICBjb25zdCBpbnQgcGF5
bG9hZF90eXBlXzsKKyAgY29uc3Qgc2l6ZV90IG51bV8xMG1zX2ZyYW1lc19wZXJfcGFja2V0XzsK
KyAgc2l6ZV90IG51bV8xMG1zX2ZyYW1lc19idWZmZXJlZF87CisgIHVpbnQzMl90IGZpcnN0X3Rp
bWVzdGFtcF9pbl9idWZmZXJfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlclN0YXRl
W10+IGVuY29kZXJzXzsKKyAgcnRjOjpCdWZmZXIgaW50ZXJsZWF2ZV9idWZmZXJfOworICBSVENf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEF1ZGlvRW5jb2Rlckc3MjIpOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworI2VuZGlmICAvLyBXRUJSVENfTU9EVUxFU19BVURJT19DT0RJTkdf
Q09ERUNTX0c3MjJfQVVESU9fRU5DT0RFUl9HNzIyX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvZzcyMi9nNzIyX2RlY29kZS5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9kZWNvZGUuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MTY0NmM1Zjg0ZjEwODc3YWNmYTEzMzhlZDZiYzZkYzFiZGIyMjY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9kZWNvZGUuYwpAQCAtMCwwICsx
LDQwMCBAQAorLyoKKyAqIFNwYW5EU1AgLSBhIHNlcmllcyBvZiBEU1AgY29tcG9uZW50cyBmb3Ig
dGVsZXBob255CisgKgorICogZzcyMl9kZWNvZGUuYyAtIFRoZSBJVFUgRy43MjIgY29kZWMsIGRl
Y29kZSBwYXJ0LgorICoKKyAqIFdyaXR0ZW4gYnkgU3RldmUgVW5kZXJ3b29kIDxzdGV2ZXVAY29w
cGljZS5vcmc+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IFN0ZXZlIFVuZGVyd29vZAorICoK
KyAqICBEZXNwaXRlIG15IGdlbmVyYWwgbGlraW5nIG9mIHRoZSBHUEwsIEkgcGxhY2UgbXkgb3du
IGNvbnRyaWJ1dGlvbnMKKyAqICB0byB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW4gZm9y
IHRoZSBiZW5lZml0IG9mIGFsbCBtYW5raW5kIC0KKyAqICBldmVuIHRoZSBzbGlteSBvbmVzIHdo
byBtaWdodCB0cnkgdG8gcHJvcHJpZXRpemUgbXkgd29yayBhbmQgdXNlIGl0CisgKiAgdG8gbXkg
ZGV0cmltZW50LgorICoKKyAqIEJhc2VkIGluIHBhcnQgb24gYSBzaW5nbGUgY2hhbm5lbCBHLjcy
MiBjb2RlYyB3aGljaCBpczoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIENNVSAxOTkzCisgKiBDb21w
dXRlciBTY2llbmNlLCBTcGVlY2ggR3JvdXAKKyAqIENoZW5neGlhbmcgTHUgYW5kIEFsZXggSGF1
cHRtYW5uCisgKgorICogJElkOiBnNzIyX2RlY29kZS5jLHYgMS4xNSAyMDA2LzA3LzA3IDE2OjM3
OjQ5IHN0ZXZldSBFeHAgJAorICoKKyAqIE1vZGlmaWNhdGlvbnMgZm9yIFdlYlJ0YywgMjAxMS8w
NC8yOCwgYnkgdGxlZ3JhbmQ6CisgKiAtUmVtb3ZlZCB1c2FnZSBvZiBpbnR0eXBlcy5oIGFuZCB0
Z21hdGguaAorICogLUNoYW5nZWQgdG8gdXNlIFdlYlJ0YyB0eXBlcworICogLUNoYW5nZWQgX19p
bmxpbmVfXyB0byBfX2lubGluZQorICogLUFkZGVkIHNhdHVyYXRpb24gY2hlY2sgb24gb3V0cHV0
CisgKi8KKworLyohIFxmaWxlICovCisKKworI2luY2x1ZGUgPG1lbW9yeS5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJnNzIyX2VuY19kZWMu
aCIKKyNpbmNsdWRlICJ3ZWJydGMvdHlwZWRlZnMuaCIKKworI2lmICFkZWZpbmVkKEZBTFNFKQor
I2RlZmluZSBGQUxTRSAwCisjZW5kaWYKKyNpZiAhZGVmaW5lZChUUlVFKQorI2RlZmluZSBUUlVF
ICghRkFMU0UpCisjZW5kaWYKKworc3RhdGljIF9faW5saW5lIGludDE2X3Qgc2F0dXJhdGUoaW50
MzJfdCBhbXApCit7CisgICAgaW50MTZfdCBhbXAxNjsKKworICAgIC8qIEhvcGVmdWxseSB0aGlz
IGlzIG9wdGltaXNlZCBmb3IgdGhlIGNvbW1vbiBjYXNlIC0gbm90IGNsaXBwaW5nICovCisgICAg
YW1wMTYgPSAoaW50MTZfdCkgYW1wOworICAgIGlmIChhbXAgPT0gYW1wMTYpCisgICAgICAgIHJl
dHVybiBhbXAxNjsKKyAgICBpZiAoYW1wID4gV0VCUlRDX0lOVDE2X01BWCkKKyAgICAgICAgcmV0
dXJuICBXRUJSVENfSU5UMTZfTUFYOworICAgIHJldHVybiAgV0VCUlRDX0lOVDE2X01JTjsKK30K
Ky8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgdm9pZCBibG9jazQoRzcyMkRlY29kZXJT
dGF0ZSAqcywgaW50IGJhbmQsIGludCBkKTsKKworc3RhdGljIHZvaWQgYmxvY2s0KEc3MjJEZWNv
ZGVyU3RhdGUgKnMsIGludCBiYW5kLCBpbnQgZCkKK3sKKyAgICBpbnQgd2QxOworICAgIGludCB3
ZDI7CisgICAgaW50IHdkMzsKKyAgICBpbnQgaTsKKworICAgIC8qIEJsb2NrIDQsIFJFQ09OUyAq
LworICAgIHMtPmJhbmRbYmFuZF0uZFswXSA9IGQ7CisgICAgcy0+YmFuZFtiYW5kXS5yWzBdID0g
c2F0dXJhdGUocy0+YmFuZFtiYW5kXS5zICsgZCk7CisKKyAgICAvKiBCbG9jayA0LCBQQVJSRUMg
Ki8KKyAgICBzLT5iYW5kW2JhbmRdLnBbMF0gPSBzYXR1cmF0ZShzLT5iYW5kW2JhbmRdLnN6ICsg
ZCk7CisKKyAgICAvKiBCbG9jayA0LCBVUFBPTDIgKi8KKyAgICBmb3IgKGkgPSAwOyAgaSA8IDM7
ICBpKyspCisgICAgICAgIHMtPmJhbmRbYmFuZF0uc2dbaV0gPSBzLT5iYW5kW2JhbmRdLnBbaV0g
Pj4gMTU7CisgICAgd2QxID0gc2F0dXJhdGUocy0+YmFuZFtiYW5kXS5hWzFdICogNCk7CisKKyAg
ICB3ZDIgPSAocy0+YmFuZFtiYW5kXS5zZ1swXSA9PSBzLT5iYW5kW2JhbmRdLnNnWzFdKSAgPyAg
LXdkMSAgOiAgd2QxOworICAgIGlmICh3ZDIgPiAzMjc2NykKKyAgICAgICAgd2QyID0gMzI3Njc7
CisgICAgd2QzID0gKHMtPmJhbmRbYmFuZF0uc2dbMF0gPT0gcy0+YmFuZFtiYW5kXS5zZ1syXSkg
ID8gIDEyOCAgOiAgLTEyODsKKyAgICB3ZDMgKz0gKHdkMiA+PiA3KTsKKyAgICB3ZDMgKz0gKHMt
PmJhbmRbYmFuZF0uYVsyXSozMjUxMikgPj4gMTU7CisgICAgaWYgKHdkMyA+IDEyMjg4KQorICAg
ICAgICB3ZDMgPSAxMjI4ODsKKyAgICBlbHNlIGlmICh3ZDMgPCAtMTIyODgpCisgICAgICAgIHdk
MyA9IC0xMjI4ODsKKyAgICBzLT5iYW5kW2JhbmRdLmFwWzJdID0gd2QzOworCisgICAgLyogQmxv
Y2sgNCwgVVBQT0wxICovCisgICAgcy0+YmFuZFtiYW5kXS5zZ1swXSA9IHMtPmJhbmRbYmFuZF0u
cFswXSA+PiAxNTsKKyAgICBzLT5iYW5kW2JhbmRdLnNnWzFdID0gcy0+YmFuZFtiYW5kXS5wWzFd
ID4+IDE1OworICAgIHdkMSA9IChzLT5iYW5kW2JhbmRdLnNnWzBdID09IHMtPmJhbmRbYmFuZF0u
c2dbMV0pICA/ICAxOTIgIDogIC0xOTI7CisgICAgd2QyID0gKHMtPmJhbmRbYmFuZF0uYVsxXSoz
MjY0MCkgPj4gMTU7CisKKyAgICBzLT5iYW5kW2JhbmRdLmFwWzFdID0gc2F0dXJhdGUod2QxICsg
d2QyKTsKKyAgICB3ZDMgPSBzYXR1cmF0ZSgxNTM2MCAtIHMtPmJhbmRbYmFuZF0uYXBbMl0pOwor
ICAgIGlmIChzLT5iYW5kW2JhbmRdLmFwWzFdID4gd2QzKQorICAgICAgICBzLT5iYW5kW2JhbmRd
LmFwWzFdID0gd2QzOworICAgIGVsc2UgaWYgKHMtPmJhbmRbYmFuZF0uYXBbMV0gPCAtd2QzKQor
ICAgICAgICBzLT5iYW5kW2JhbmRdLmFwWzFdID0gLXdkMzsKKworICAgIC8qIEJsb2NrIDQsIFVQ
WkVSTyAqLworICAgIHdkMSA9IChkID09IDApICA/ICAwICA6ICAxMjg7CisgICAgcy0+YmFuZFti
YW5kXS5zZ1swXSA9IGQgPj4gMTU7CisgICAgZm9yIChpID0gMTsgIGkgPCA3OyAgaSsrKQorICAg
IHsKKyAgICAgICAgcy0+YmFuZFtiYW5kXS5zZ1tpXSA9IHMtPmJhbmRbYmFuZF0uZFtpXSA+PiAx
NTsKKyAgICAgICAgd2QyID0gKHMtPmJhbmRbYmFuZF0uc2dbaV0gPT0gcy0+YmFuZFtiYW5kXS5z
Z1swXSkgID8gIHdkMSAgOiAgLXdkMTsKKyAgICAgICAgd2QzID0gKHMtPmJhbmRbYmFuZF0uYltp
XSozMjY0MCkgPj4gMTU7CisgICAgICAgIHMtPmJhbmRbYmFuZF0uYnBbaV0gPSBzYXR1cmF0ZSh3
ZDIgKyB3ZDMpOworICAgIH0KKworICAgIC8qIEJsb2NrIDQsIERFTEFZQSAqLworICAgIGZvciAo
aSA9IDY7ICBpID4gMDsgIGktLSkKKyAgICB7CisgICAgICAgIHMtPmJhbmRbYmFuZF0uZFtpXSA9
IHMtPmJhbmRbYmFuZF0uZFtpIC0gMV07CisgICAgICAgIHMtPmJhbmRbYmFuZF0uYltpXSA9IHMt
PmJhbmRbYmFuZF0uYnBbaV07CisgICAgfQorCisgICAgZm9yIChpID0gMjsgIGkgPiAwOyAgaS0t
KQorICAgIHsKKyAgICAgICAgcy0+YmFuZFtiYW5kXS5yW2ldID0gcy0+YmFuZFtiYW5kXS5yW2kg
LSAxXTsKKyAgICAgICAgcy0+YmFuZFtiYW5kXS5wW2ldID0gcy0+YmFuZFtiYW5kXS5wW2kgLSAx
XTsKKyAgICAgICAgcy0+YmFuZFtiYW5kXS5hW2ldID0gcy0+YmFuZFtiYW5kXS5hcFtpXTsKKyAg
ICB9CisKKyAgICAvKiBCbG9jayA0LCBGSUxURVAgKi8KKyAgICB3ZDEgPSBzYXR1cmF0ZShzLT5i
YW5kW2JhbmRdLnJbMV0gKyBzLT5iYW5kW2JhbmRdLnJbMV0pOworICAgIHdkMSA9IChzLT5iYW5k
W2JhbmRdLmFbMV0qd2QxKSA+PiAxNTsKKyAgICB3ZDIgPSBzYXR1cmF0ZShzLT5iYW5kW2JhbmRd
LnJbMl0gKyBzLT5iYW5kW2JhbmRdLnJbMl0pOworICAgIHdkMiA9IChzLT5iYW5kW2JhbmRdLmFb
Ml0qd2QyKSA+PiAxNTsKKyAgICBzLT5iYW5kW2JhbmRdLnNwID0gc2F0dXJhdGUod2QxICsgd2Qy
KTsKKworICAgIC8qIEJsb2NrIDQsIEZJTFRFWiAqLworICAgIHMtPmJhbmRbYmFuZF0uc3ogPSAw
OworICAgIGZvciAoaSA9IDY7ICBpID4gMDsgIGktLSkKKyAgICB7CisgICAgICAgIHdkMSA9IHNh
dHVyYXRlKHMtPmJhbmRbYmFuZF0uZFtpXSArIHMtPmJhbmRbYmFuZF0uZFtpXSk7CisgICAgICAg
IHMtPmJhbmRbYmFuZF0uc3ogKz0gKHMtPmJhbmRbYmFuZF0uYltpXSp3ZDEpID4+IDE1OworICAg
IH0KKyAgICBzLT5iYW5kW2JhbmRdLnN6ID0gc2F0dXJhdGUocy0+YmFuZFtiYW5kXS5zeik7CisK
KyAgICAvKiBCbG9jayA0LCBQUkVESUMgKi8KKyAgICBzLT5iYW5kW2JhbmRdLnMgPSBzYXR1cmF0
ZShzLT5iYW5kW2JhbmRdLnNwICsgcy0+YmFuZFtiYW5kXS5zeik7Cit9CisvKi0gRW5kIG9mIGZ1
bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKworRzcyMkRlY29kZXJTdGF0ZSogV2ViUnRjX2c3MjJfZGVjb2RlX2luaXQoRzcy
MkRlY29kZXJTdGF0ZSogcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCByYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG9wdGlvbnMpIHsKKyAgICBzID0gcyA/IHMgOiBtYWxsb2Moc2l6ZW9mKCpzKSk7CisgICAg
bWVtc2V0KHMsIDAsIHNpemVvZigqcykpOworICAgIGlmIChyYXRlID09IDQ4MDAwKQorICAgICAg
ICBzLT5iaXRzX3Blcl9zYW1wbGUgPSA2OworICAgIGVsc2UgaWYgKHJhdGUgPT0gNTYwMDApCisg
ICAgICAgIHMtPmJpdHNfcGVyX3NhbXBsZSA9IDc7CisgICAgZWxzZQorICAgICAgICBzLT5iaXRz
X3Blcl9zYW1wbGUgPSA4OworICAgIGlmICgob3B0aW9ucyAmIEc3MjJfU0FNUExFX1JBVEVfODAw
MCkpCisgICAgICAgIHMtPmVpZ2h0X2sgPSBUUlVFOworICAgIGlmICgob3B0aW9ucyAmIEc3MjJf
UEFDS0VEKSAgJiYgIHMtPmJpdHNfcGVyX3NhbXBsZSAhPSA4KQorICAgICAgICBzLT5wYWNrZWQg
PSBUUlVFOworICAgIGVsc2UKKyAgICAgICAgcy0+cGFja2VkID0gRkFMU0U7CisgICAgcy0+YmFu
ZFswXS5kZXQgPSAzMjsKKyAgICBzLT5iYW5kWzFdLmRldCA9IDg7CisgICAgcmV0dXJuIHM7Cit9
CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworaW50IFdlYlJ0Y19nNzIyX2RlY29kZV9yZWxlYXNl
KEc3MjJEZWNvZGVyU3RhdGUgKnMpCit7CisgICAgZnJlZShzKTsKKyAgICByZXR1cm4gMDsKK30K
Ky8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzaXplX3QgV2ViUnRjX2c3MjJfZGVjb2RlKEc3MjJE
ZWNvZGVyU3RhdGUgKnMsIGludDE2X3QgYW1wW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgZzcyMl9kYXRhW10sIHNpemVfdCBsZW4pCit7CisgICAgc3RhdGljIGNv
bnN0IGludCB3bFs4XSA9IHstNjAsIC0zMCwgNTgsIDE3MiwgMzM0LCA1MzgsIDExOTgsIDMwNDIg
fTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHJsNDJbMTZdID0gezAsIDcsIDYsIDUsIDQsIDMsIDIs
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCA2LCA1LCA0LCAzLCAgMiwg
MSwgMCB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgaWxiWzMyXSA9CisgICAgeworICAgICAgICAy
MDQ4LCAyMDkzLCAyMTM5LCAyMTg2LCAyMjMzLCAyMjgyLCAyMzMyLAorICAgICAgICAyMzgzLCAy
NDM1LCAyNDg5LCAyNTQzLCAyNTk5LCAyNjU2LCAyNzE0LAorICAgICAgICAyNzc0LCAyODM0LCAy
ODk2LCAyOTYwLCAzMDI1LCAzMDkxLCAzMTU4LAorICAgICAgICAzMjI4LCAzMjk4LCAzMzcxLCAz
NDQ0LCAzNTIwLCAzNTk3LCAzNjc2LAorICAgICAgICAzNzU2LCAzODM4LCAzOTIyLCA0MDA4Cisg
ICAgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHdoWzNdID0gezAsIC0yMTQsIDc5OH07CisgICAg
c3RhdGljIGNvbnN0IGludCByaDJbNF0gPSB7MiwgMSwgMiwgMX07CisgICAgc3RhdGljIGNvbnN0
IGludCBxbTJbNF0gPSB7LTc0MDgsIC0xNjE2LCAgNzQwOCwgICAxNjE2fTsKKyAgICBzdGF0aWMg
Y29uc3QgaW50IHFtNFsxNl0gPQorICAgIHsKKyAgICAgICAgICAgICAgMCwgLTIwNDU2LCAtMTI4
OTYsICAtODk2OCwKKyAgICAgICAgICAtNjI4OCwgIC00MjQwLCAgLTI1ODQsICAtMTIwMCwKKyAg
ICAgICAgICAyMDQ1NiwgIDEyODk2LCAgIDg5NjgsICAgNjI4OCwKKyAgICAgICAgICAgNDI0MCwg
ICAyNTg0LCAgIDEyMDAsICAgICAgMAorICAgIH07CisgICAgc3RhdGljIGNvbnN0IGludCBxbTVb
MzJdID0KKyAgICB7CisgICAgICAgICAgIC0yODAsICAgLTI4MCwgLTIzMzUyLCAtMTc1NjAsCisg
ICAgICAgICAtMTQxMjAsIC0xMTY2NCwgIC05NzUyLCAgLTgxODQsCisgICAgICAgICAgLTY4NjQs
ICAtNTcxMiwgIC00Njk2LCAgLTM3ODQsCisgICAgICAgICAgLTI5NjAsICAtMjIwOCwgIC0xNTIw
LCAgIC04ODAsCisgICAgICAgICAgMjMzNTIsICAxNzU2MCwgIDE0MTIwLCAgMTE2NjQsCisgICAg
ICAgICAgIDk3NTIsICAgODE4NCwgICA2ODY0LCAgIDU3MTIsCisgICAgICAgICAgIDQ2OTYsICAg
Mzc4NCwgICAyOTYwLCAgIDIyMDgsCisgICAgICAgICAgIDE1MjAsICAgIDg4MCwgICAgMjgwLCAg
IC0yODAKKyAgICB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcW02WzY0XSA9CisgICAgeworICAg
ICAgICAgICAtMTM2LCAgIC0xMzYsICAgLTEzNiwgICAtMTM2LAorICAgICAgICAgLTI0ODA4LCAt
MjE5MDQsIC0xOTAwOCwgLTE2NzA0LAorICAgICAgICAgLTE0OTg0LCAtMTM1MTIsIC0xMjI4MCwg
LTExMTkyLAorICAgICAgICAgLTEwMjMyLCAgLTkzNjAsICAtODU3NiwgIC03ODU2LAorICAgICAg
ICAgIC03MTkyLCAgLTY1NzYsICAtNjAwMCwgIC01NDU2LAorICAgICAgICAgIC00OTQ0LCAgLTQ0
NjQsICAtNDAwOCwgIC0zNTc2LAorICAgICAgICAgIC0zMTY4LCAgLTI3NzYsICAtMjQwMCwgIC0y
MDMyLAorICAgICAgICAgIC0xNjg4LCAgLTEzNjAsICAtMTA0MCwgICAtNzI4LAorICAgICAgICAg
IDI0ODA4LCAgMjE5MDQsICAxOTAwOCwgIDE2NzA0LAorICAgICAgICAgIDE0OTg0LCAgMTM1MTIs
ICAxMjI4MCwgIDExMTkyLAorICAgICAgICAgIDEwMjMyLCAgIDkzNjAsICAgODU3NiwgICA3ODU2
LAorICAgICAgICAgICA3MTkyLCAgIDY1NzYsICAgNjAwMCwgICA1NDU2LAorICAgICAgICAgICA0
OTQ0LCAgIDQ0NjQsICAgNDAwOCwgICAzNTc2LAorICAgICAgICAgICAzMTY4LCAgIDI3NzYsICAg
MjQwMCwgICAyMDMyLAorICAgICAgICAgICAxNjg4LCAgIDEzNjAsICAgMTA0MCwgICAgNzI4LAor
ICAgICAgICAgICAgNDMyLCAgICAxMzYsICAgLTQzMiwgICAtMTM2CisgICAgfTsKKyAgICBzdGF0
aWMgY29uc3QgaW50IHFtZl9jb2VmZnNbMTJdID0KKyAgICB7CisgICAgICAgICAgIDMsICAtMTEs
ICAgMTIsICAgMzIsIC0yMTAsICA5NTEsIDM4NzYsIC04MDUsICAzNjIsIC0xNTYsICAgNTMsICAt
MTEsCisgICAgfTsKKworICAgIGludCBkbG93dDsKKyAgICBpbnQgcmxvdzsKKyAgICBpbnQgaWhp
Z2g7CisgICAgaW50IGRoaWdoOworICAgIGludCByaGlnaDsKKyAgICBpbnQgeG91dDE7CisgICAg
aW50IHhvdXQyOworICAgIGludCB3ZDE7CisgICAgaW50IHdkMjsKKyAgICBpbnQgd2QzOworICAg
IGludCBjb2RlOworICAgIHNpemVfdCBvdXRsZW47CisgICAgaW50IGk7CisgICAgc2l6ZV90IGo7
CisKKyAgICBvdXRsZW4gPSAwOworICAgIHJoaWdoID0gMDsKKyAgICBmb3IgKGogPSAwOyAgaiA8
IGxlbjsgICkKKyAgICB7CisgICAgICAgIGlmIChzLT5wYWNrZWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8qIFVucGFjayB0aGUgY29kZSBiaXRzICovCisgICAgICAgICAgICBpZiAocy0+aW5f
Yml0cyA8IHMtPmJpdHNfcGVyX3NhbXBsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzLT5pbl9idWZmZXIgfD0gKGc3MjJfZGF0YVtqKytdIDw8IHMtPmluX2JpdHMpOworICAgICAg
ICAgICAgICAgIHMtPmluX2JpdHMgKz0gODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNv
ZGUgPSBzLT5pbl9idWZmZXIgJiAoKDEgPDwgcy0+Yml0c19wZXJfc2FtcGxlKSAtIDEpOworICAg
ICAgICAgICAgcy0+aW5fYnVmZmVyID4+PSBzLT5iaXRzX3Blcl9zYW1wbGU7CisgICAgICAgICAg
ICBzLT5pbl9iaXRzIC09IHMtPmJpdHNfcGVyX3NhbXBsZTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvZGUgPSBnNzIyX2RhdGFbaisrXTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN3aXRjaCAocy0+Yml0c19wZXJfc2FtcGxlKQorICAgICAgICB7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIHdkMSA9IGNvZGUg
JiAweDNGOworICAgICAgICAgICAgaWhpZ2ggPSAoY29kZSA+PiA2KSAmIDB4MDM7CisgICAgICAg
ICAgICB3ZDIgPSBxbTZbd2QxXTsKKyAgICAgICAgICAgIHdkMSA+Pj0gMjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICB3ZDEgPSBjb2RlICYgMHgxRjsK
KyAgICAgICAgICAgIGloaWdoID0gKGNvZGUgPj4gNSkgJiAweDAzOworICAgICAgICAgICAgd2Qy
ID0gcW01W3dkMV07CisgICAgICAgICAgICB3ZDEgPj49IDE7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgd2QxID0gY29kZSAmIDB4MEY7CisgICAgICAg
ICAgICBpaGlnaCA9IChjb2RlID4+IDQpICYgMHgwMzsKKyAgICAgICAgICAgIHdkMiA9IHFtNFt3
ZDFdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgLyogQmxvY2sgNUws
IExPVyBCQU5EIElOVlFCTCAqLworICAgICAgICB3ZDIgPSAocy0+YmFuZFswXS5kZXQqd2QyKSA+
PiAxNTsKKyAgICAgICAgLyogQmxvY2sgNUwsIFJFQ09OUyAqLworICAgICAgICBybG93ID0gcy0+
YmFuZFswXS5zICsgd2QyOworICAgICAgICAvKiBCbG9jayA2TCwgTElNSVQgKi8KKyAgICAgICAg
aWYgKHJsb3cgPiAxNjM4MykKKyAgICAgICAgICAgIHJsb3cgPSAxNjM4MzsKKyAgICAgICAgZWxz
ZSBpZiAocmxvdyA8IC0xNjM4NCkKKyAgICAgICAgICAgIHJsb3cgPSAtMTYzODQ7CisKKyAgICAg
ICAgLyogQmxvY2sgMkwsIElOVlFBTCAqLworICAgICAgICB3ZDIgPSBxbTRbd2QxXTsKKyAgICAg
ICAgZGxvd3QgPSAocy0+YmFuZFswXS5kZXQqd2QyKSA+PiAxNTsKKworICAgICAgICAvKiBCbG9j
ayAzTCwgTE9HU0NMICovCisgICAgICAgIHdkMiA9IHJsNDJbd2QxXTsKKyAgICAgICAgd2QxID0g
KHMtPmJhbmRbMF0ubmIqMTI3KSA+PiA3OworICAgICAgICB3ZDEgKz0gd2xbd2QyXTsKKyAgICAg
ICAgaWYgKHdkMSA8IDApCisgICAgICAgICAgICB3ZDEgPSAwOworICAgICAgICBlbHNlIGlmICh3
ZDEgPiAxODQzMikKKyAgICAgICAgICAgIHdkMSA9IDE4NDMyOworICAgICAgICBzLT5iYW5kWzBd
Lm5iID0gd2QxOworCisgICAgICAgIC8qIEJsb2NrIDNMLCBTQ0FMRUwgKi8KKyAgICAgICAgd2Qx
ID0gKHMtPmJhbmRbMF0ubmIgPj4gNikgJiAzMTsKKyAgICAgICAgd2QyID0gOCAtIChzLT5iYW5k
WzBdLm5iID4+IDExKTsKKyAgICAgICAgd2QzID0gKHdkMiA8IDApICA/ICAoaWxiW3dkMV0gPDwg
LXdkMikgIDogIChpbGJbd2QxXSA+PiB3ZDIpOworICAgICAgICBzLT5iYW5kWzBdLmRldCA9IHdk
MyA8PCAyOworCisgICAgICAgIGJsb2NrNChzLCAwLCBkbG93dCk7CisKKyAgICAgICAgaWYgKCFz
LT5laWdodF9rKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBCbG9jayAySCwgSU5WUUFIICov
CisgICAgICAgICAgICB3ZDIgPSBxbTJbaWhpZ2hdOworICAgICAgICAgICAgZGhpZ2ggPSAocy0+
YmFuZFsxXS5kZXQqd2QyKSA+PiAxNTsKKyAgICAgICAgICAgIC8qIEJsb2NrIDVILCBSRUNPTlMg
Ki8KKyAgICAgICAgICAgIHJoaWdoID0gZGhpZ2ggKyBzLT5iYW5kWzFdLnM7CisgICAgICAgICAg
ICAvKiBCbG9jayA2SCwgTElNSVQgKi8KKyAgICAgICAgICAgIGlmIChyaGlnaCA+IDE2MzgzKQor
ICAgICAgICAgICAgICAgIHJoaWdoID0gMTYzODM7CisgICAgICAgICAgICBlbHNlIGlmIChyaGln
aCA8IC0xNjM4NCkKKyAgICAgICAgICAgICAgICByaGlnaCA9IC0xNjM4NDsKKworICAgICAgICAg
ICAgLyogQmxvY2sgMkgsIElOVlFBSCAqLworICAgICAgICAgICAgd2QyID0gcmgyW2loaWdoXTsK
KyAgICAgICAgICAgIHdkMSA9IChzLT5iYW5kWzFdLm5iKjEyNykgPj4gNzsKKyAgICAgICAgICAg
IHdkMSArPSB3aFt3ZDJdOworICAgICAgICAgICAgaWYgKHdkMSA8IDApCisgICAgICAgICAgICAg
ICAgd2QxID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHdkMSA+IDIyNTI4KQorICAgICAgICAg
ICAgICAgIHdkMSA9IDIyNTI4OworICAgICAgICAgICAgcy0+YmFuZFsxXS5uYiA9IHdkMTsKKwor
ICAgICAgICAgICAgLyogQmxvY2sgM0gsIFNDQUxFSCAqLworICAgICAgICAgICAgd2QxID0gKHMt
PmJhbmRbMV0ubmIgPj4gNikgJiAzMTsKKyAgICAgICAgICAgIHdkMiA9IDEwIC0gKHMtPmJhbmRb
MV0ubmIgPj4gMTEpOworICAgICAgICAgICAgd2QzID0gKHdkMiA8IDApICA/ICAoaWxiW3dkMV0g
PDwgLXdkMikgIDogIChpbGJbd2QxXSA+PiB3ZDIpOworICAgICAgICAgICAgcy0+YmFuZFsxXS5k
ZXQgPSB3ZDMgPDwgMjsKKworICAgICAgICAgICAgYmxvY2s0KHMsIDEsIGRoaWdoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzLT5pdHVfdGVzdF9tb2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICBhbXBbb3V0bGVuKytdID0gKGludDE2X3QpIChybG93IDw8IDEpOworICAgICAgICAgICAg
YW1wW291dGxlbisrXSA9IChpbnQxNl90KSAocmhpZ2ggPDwgMSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocy0+ZWlnaHRfaykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBhbXBbb3V0bGVuKytdID0gKGludDE2X3QpIChybG93IDw8
IDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8qIEFwcGx5IHRoZSByZWNlaXZlIFFNRiAqLworICAgICAgICAgICAgICAg
IGZvciAoaSA9IDA7ICBpIDwgMjI7ICBpKyspCisgICAgICAgICAgICAgICAgICAgIHMtPnhbaV0g
PSBzLT54W2kgKyAyXTsKKyAgICAgICAgICAgICAgICBzLT54WzIyXSA9IHJsb3cgKyByaGlnaDsK
KyAgICAgICAgICAgICAgICBzLT54WzIzXSA9IHJsb3cgLSByaGlnaDsKKworICAgICAgICAgICAg
ICAgIHhvdXQxID0gMDsKKyAgICAgICAgICAgICAgICB4b3V0MiA9IDA7CisgICAgICAgICAgICAg
ICAgZm9yIChpID0gMDsgIGkgPCAxMjsgIGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHhvdXQyICs9IHMtPnhbMippXSpxbWZfY29lZmZzW2ldOworICAgICAgICAg
ICAgICAgICAgICB4b3V0MSArPSBzLT54WzIqaSArIDFdKnFtZl9jb2VmZnNbMTEgLSBpXTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogV2Ugc2hpZnQgYnkgMTIgdG8gYWxs
b3cgZm9yIHRoZSBRTUYgZmlsdGVycyAoREMgZ2FpbiA9IDQwOTYpLCBsZXNzIDEKKyAgICAgICAg
ICAgICAgICAgICB0byBhbGxvdyBmb3IgdGhlIDE1IGJpdCBpbnB1dCB0byB0aGUgRy43MjIgYWxn
b3JpdGhtLiAqLworICAgICAgICAgICAgICAgIC8qIFdlYlJ0YywgdGxlZ3JhbmQ6IGFkZGVkIHNh
dHVyYXRpb24gKi8KKyAgICAgICAgICAgICAgICBhbXBbb3V0bGVuKytdID0gc2F0dXJhdGUoeG91
dDEgPj4gMTEpOworICAgICAgICAgICAgICAgIGFtcFtvdXRsZW4rK10gPSBzYXR1cmF0ZSh4b3V0
MiA+PiAxMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG91
dGxlbjsKK30KKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyotIEVuZCBvZiBmaWxlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9nNzIyX2VuY19kZWMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9nNzIyL2c3MjJfZW5jX2RlYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYjQ4OTVmYTVkYjFjMDUyNTdkODhm
YmExNzRlOWU0ODdkYjRkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9n
NzIyX2VuY19kZWMuaApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIFNwYW5EU1AgLSBhIHNlcmll
cyBvZiBEU1AgY29tcG9uZW50cyBmb3IgdGVsZXBob255CisgKgorICogZzcyMi5oIC0gVGhlIElU
VSBHLjcyMiBjb2RlYy4KKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXZlIFVuZGVyd29vZCA8c3RldmV1
QGNvcHBpY2Uub3JnPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTdGV2ZSBVbmRlcndvb2QK
KyAqCisgKiAgRGVzcGl0ZSBteSBnZW5lcmFsIGxpa2luZyBvZiB0aGUgR1BMLCBJIHBsYWNlIG15
IG93biBjb250cmlidXRpb25zIAorICogIHRvIHRoaXMgY29kZSBpbiB0aGUgcHVibGljIGRvbWFp
biBmb3IgdGhlIGJlbmVmaXQgb2YgYWxsIG1hbmtpbmQgLQorICogIGV2ZW4gdGhlIHNsaW15IG9u
ZXMgd2hvIG1pZ2h0IHRyeSB0byBwcm9wcmlldGl6ZSBteSB3b3JrIGFuZCB1c2UgaXQKKyAqICB0
byBteSBkZXRyaW1lbnQuCisgKgorICogQmFzZWQgb24gYSBzaW5nbGUgY2hhbm5lbCBHLjcyMiBj
b2RlYyB3aGljaCBpczoKKyAqCisgKioqKiogICAgQ29weXJpZ2h0IChjKSBDTVUgICAgMTk5MyAg
ICAgICoqKioqCisgKiBDb21wdXRlciBTY2llbmNlLCBTcGVlY2ggR3JvdXAKKyAqIENoZW5neGlh
bmcgTHUgYW5kIEFsZXggSGF1cHRtYW5uCisgKgorICogJElkOiBnNzIyLmgsdiAxLjEwIDIwMDYv
MDYvMTYgMTI6NDU6NTMgc3RldmV1IEV4cCAkCisgKgorICogTW9kaWZpY2F0aW9ucyBmb3IgV2Vi
UnRjLCAyMDExLzA0LzI4LCBieSB0bGVncmFuZDoKKyAqIC1DaGFuZ2VkIHRvIHVzZSBXZWJSdGMg
dHlwZXMKKyAqIC1BZGRlZCBuZXcgZGVmaW5lcyBmb3IgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1
ZXMgb2Ygc2hvcnQgaW50CisgKi8KKworCisvKiEgXGZpbGUgKi8KKworI2lmICFkZWZpbmVkKF9H
NzIyX0VOQ19ERUNfSF8pCisjZGVmaW5lIF9HNzIyX0VOQ19ERUNfSF8KKworI2luY2x1ZGUgIndl
YnJ0Yy90eXBlZGVmcy5oIgorCisvKiEgXHBhZ2UgZzcyMl9wYWdlIEcuNzIyIGVuY29kaW5nIGFu
ZCBkZWNvZGluZworXHNlY3Rpb24gZzcyMl9wYWdlX3NlY18xIFdoYXQgZG9lcyBpdCBkbz8KK1Ro
ZSBHLjcyMiBtb2R1bGUgaXMgYSBiaXQgZXhhY3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIElUVSBH
LjcyMiBzcGVjaWZpY2F0aW9uIGZvciBhbGwgdGhyZWUKK3NwZWNpZmllZCBiaXQgcmF0ZXMgLSA2
NDAwMGJwcywgNTYwMDBicHMgYW5kIDQ4MDAwYnBzLiBJdCBwYXNzZXMgdGhlIElUVSB0ZXN0cy4K
KworVG8gYWxsb3cgZmFzdCBhbmQgZmxleGlibGUgaW50ZXJ3b3JraW5nIHdpdGggbmFycm93IGJh
bmQgdGVsZXBob255LCB0aGUgZW5jb2RlciBhbmQgZGVjb2Rlcgorc3VwcG9ydCBhbiBvcHRpb24g
Zm9yIHRoZSBsaW5lYXIgYXVkaW8gdG8gYmUgYW4gOGsgc2FtcGxlcy9zZWNvbmQgc3RyZWFtLiBJ
biB0aGlzIG1vZGUgdGhlCitjb2RlYyBpcyBjb25zaWRlcmFibHkgZmFzdGVyLCBhbmQgc3RpbGwg
ZnVsbHkgY29tcGF0aWJsZSB3aXRoIHdpZGViYW5kIHRlcm1pbmFscyB1c2luZyBHLjcyMi4KKwor
XHNlY3Rpb24gZzcyMl9wYWdlX3NlY18yIEhvdyBkb2VzIGl0IHdvcms/Cis/Pz8uCisqLworCisj
ZGVmaW5lIFdFQlJUQ19JTlQxNl9NQVggMzI3NjcKKyNkZWZpbmUgV0VCUlRDX0lOVDE2X01JTiAt
MzI3NjgKKworZW51bQoreworICAgIEc3MjJfU0FNUExFX1JBVEVfODAwMCA9IDB4MDAwMSwKKyAg
ICBHNzIyX1BBQ0tFRCA9IDB4MDAwMgorfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICAvKiEg
VFJVRSBpZiB0aGUgb3BlcmF0aW5nIGluIHRoZSBzcGVjaWFsIElUVSB0ZXN0IG1vZGUsIHdpdGgg
dGhlIGJhbmQgc3BsaXQgZmlsdGVycworICAgICAgICAgICAgIGRpc2FibGVkLiAqLworICAgIGlu
dCBpdHVfdGVzdF9tb2RlOworICAgIC8qISBUUlVFIGlmIHRoZSBHLjcyMiBkYXRhIGlzIHBhY2tl
ZCAqLworICAgIGludCBwYWNrZWQ7CisgICAgLyohIFRSVUUgaWYgZW5jb2RlIGZyb20gOGsgc2Ft
cGxlcy9zZWNvbmQgKi8KKyAgICBpbnQgZWlnaHRfazsKKyAgICAvKiEgNiBmb3IgNDgwMDBrYnBz
LCA3IGZvciA1NjAwMGticHMsIG9yIDggZm9yIDY0MDAwa2Jwcy4gKi8KKyAgICBpbnQgYml0c19w
ZXJfc2FtcGxlOworCisgICAgLyohIFNpZ25hbCBoaXN0b3J5IGZvciB0aGUgUU1GICovCisgICAg
aW50IHhbMjRdOworCisgICAgc3RydWN0CisgICAgeworICAgICAgICBpbnQgczsKKyAgICAgICAg
aW50IHNwOworICAgICAgICBpbnQgc3o7CisgICAgICAgIGludCByWzNdOworICAgICAgICBpbnQg
YVszXTsKKyAgICAgICAgaW50IGFwWzNdOworICAgICAgICBpbnQgcFszXTsKKyAgICAgICAgaW50
IGRbN107CisgICAgICAgIGludCBiWzddOworICAgICAgICBpbnQgYnBbN107CisgICAgICAgIGlu
dCBzZ1s3XTsKKyAgICAgICAgaW50IG5iOworICAgICAgICBpbnQgZGV0OworICAgIH0gYmFuZFsy
XTsKKworICAgIHVuc2lnbmVkIGludCBpbl9idWZmZXI7CisgICAgaW50IGluX2JpdHM7CisgICAg
dW5zaWduZWQgaW50IG91dF9idWZmZXI7CisgICAgaW50IG91dF9iaXRzOworfSBHNzIyRW5jb2Rl
clN0YXRlOworCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8qISBUUlVFIGlmIHRoZSBvcGVyYXRp
bmcgaW4gdGhlIHNwZWNpYWwgSVRVIHRlc3QgbW9kZSwgd2l0aCB0aGUgYmFuZCBzcGxpdCBmaWx0
ZXJzCisgICAgICAgICAgICAgZGlzYWJsZWQuICovCisgICAgaW50IGl0dV90ZXN0X21vZGU7Cisg
ICAgLyohIFRSVUUgaWYgdGhlIEcuNzIyIGRhdGEgaXMgcGFja2VkICovCisgICAgaW50IHBhY2tl
ZDsKKyAgICAvKiEgVFJVRSBpZiBkZWNvZGUgdG8gOGsgc2FtcGxlcy9zZWNvbmQgKi8KKyAgICBp
bnQgZWlnaHRfazsKKyAgICAvKiEgNiBmb3IgNDgwMDBrYnBzLCA3IGZvciA1NjAwMGticHMsIG9y
IDggZm9yIDY0MDAwa2Jwcy4gKi8KKyAgICBpbnQgYml0c19wZXJfc2FtcGxlOworCisgICAgLyoh
IFNpZ25hbCBoaXN0b3J5IGZvciB0aGUgUU1GICovCisgICAgaW50IHhbMjRdOworCisgICAgc3Ry
dWN0CisgICAgeworICAgICAgICBpbnQgczsKKyAgICAgICAgaW50IHNwOworICAgICAgICBpbnQg
c3o7CisgICAgICAgIGludCByWzNdOworICAgICAgICBpbnQgYVszXTsKKyAgICAgICAgaW50IGFw
WzNdOworICAgICAgICBpbnQgcFszXTsKKyAgICAgICAgaW50IGRbN107CisgICAgICAgIGludCBi
WzddOworICAgICAgICBpbnQgYnBbN107CisgICAgICAgIGludCBzZ1s3XTsKKyAgICAgICAgaW50
IG5iOworICAgICAgICBpbnQgZGV0OworICAgIH0gYmFuZFsyXTsKKyAgICAKKyAgICB1bnNpZ25l
ZCBpbnQgaW5fYnVmZmVyOworICAgIGludCBpbl9iaXRzOworICAgIHVuc2lnbmVkIGludCBvdXRf
YnVmZmVyOworICAgIGludCBvdXRfYml0czsKK30gRzcyMkRlY29kZXJTdGF0ZTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitHNzIyRW5jb2RlclN0YXRlKiBX
ZWJSdGNfZzcyMl9lbmNvZGVfaW5pdChHNzIyRW5jb2RlclN0YXRlKiBzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucyk7CitpbnQgV2ViUnRjX2c3MjJf
ZW5jb2RlX3JlbGVhc2UoRzcyMkVuY29kZXJTdGF0ZSAqcyk7CitzaXplX3QgV2ViUnRjX2c3MjJf
ZW5jb2RlKEc3MjJFbmNvZGVyU3RhdGUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgZzcyMl9kYXRhW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2
X3QgYW1wW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOworCitHNzIy
RGVjb2RlclN0YXRlKiBXZWJSdGNfZzcyMl9kZWNvZGVfaW5pdChHNzIyRGVjb2RlclN0YXRlKiBz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucyk7Citp
bnQgV2ViUnRjX2c3MjJfZGVjb2RlX3JlbGVhc2UoRzcyMkRlY29kZXJTdGF0ZSAqcyk7CitzaXpl
X3QgV2ViUnRjX2c3MjJfZGVjb2RlKEc3MjJEZWNvZGVyU3RhdGUgKnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDE2X3QgYW1wW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgZzcyMl9kYXRhW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZW4pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfZW5jb2RlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcy
Mi9nNzIyX2VuY29kZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZDc4NGJmNGFjNDFhODQyMDFhZThiNjExMTQw
YjFhYTVkZDQ3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9nNzIyX2Vu
Y29kZS5jCkBAIC0wLDAgKzEsNDMwIEBACisvKgorICogU3BhbkRTUCAtIGEgc2VyaWVzIG9mIERT
UCBjb21wb25lbnRzIGZvciB0ZWxlcGhvbnkKKyAqCisgKiBnNzIyX2VuY29kZS5jIC0gVGhlIElU
VSBHLjcyMiBjb2RlYywgZW5jb2RlIHBhcnQuCisgKgorICogV3JpdHRlbiBieSBTdGV2ZSBVbmRl
cndvb2QgPHN0ZXZldUBjb3BwaWNlLm9yZz4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU3Rl
dmUgVW5kZXJ3b29kCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgRGVzcGl0
ZSBteSBnZW5lcmFsIGxpa2luZyBvZiB0aGUgR1BMLCBJIHBsYWNlIG15IG93biBjb250cmlidXRp
b25zCisgKiAgdG8gdGhpcyBjb2RlIGluIHRoZSBwdWJsaWMgZG9tYWluIGZvciB0aGUgYmVuZWZp
dCBvZiBhbGwgbWFua2luZCAtCisgKiAgZXZlbiB0aGUgc2xpbXkgb25lcyB3aG8gbWlnaHQgdHJ5
IHRvIHByb3ByaWV0aXplIG15IHdvcmsgYW5kIHVzZSBpdAorICogIHRvIG15IGRldHJpbWVudC4K
KyAqCisgKiBCYXNlZCBvbiBhIHNpbmdsZSBjaGFubmVsIDY0a2JwcyBvbmx5IEcuNzIyIGNvZGVj
IHdoaWNoIGlzOgorICoKKyAqKioqKiAgICBDb3B5cmlnaHQgKGMpIENNVSAgICAxOTkzICAgICAg
KioqKioKKyAqIENvbXB1dGVyIFNjaWVuY2UsIFNwZWVjaCBHcm91cAorICogQ2hlbmd4aWFuZyBM
dSBhbmQgQWxleCBIYXVwdG1hbm4KKyAqCisgKiAkSWQ6IGc3MjJfZW5jb2RlLmMsdiAxLjE0IDIw
MDYvMDcvMDcgMTY6Mzc6NDkgc3RldmV1IEV4cCAkCisgKgorICogTW9kaWZpY2F0aW9ucyBmb3Ig
V2ViUnRjLCAyMDExLzA0LzI4LCBieSB0bGVncmFuZDoKKyAqIC1SZW1vdmVkIHVzYWdlIG9mIGlu
dHR5cGVzLmggYW5kIHRnbWF0aC5oCisgKiAtQ2hhbmdlZCB0byB1c2UgV2ViUnRjIHR5cGVzCisg
KiAtQWRkZWQgb3B0aW9uIHRvIHJ1biBlbmNvZGVyIGJpdGV4YWN0IHdpdGggSVRVLVQgcmVmZXJl
bmNlIGltcGxlbWVudGF0aW9uCisgKi8KKworLyohIFxmaWxlICovCisKKyNpbmNsdWRlIDxtZW1v
cnkuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVk
ZSAiZzcyMl9lbmNfZGVjLmgiCisjaW5jbHVkZSAid2VicnRjL3R5cGVkZWZzLmgiCisKKyNpZiAh
ZGVmaW5lZChGQUxTRSkKKyNkZWZpbmUgRkFMU0UgMAorI2VuZGlmCisjaWYgIWRlZmluZWQoVFJV
RSkKKyNkZWZpbmUgVFJVRSAoIUZBTFNFKQorI2VuZGlmCisKK3N0YXRpYyBfX2lubGluZSBpbnQx
Nl90IHNhdHVyYXRlKGludDMyX3QgYW1wKQoreworICAgIGludDE2X3QgYW1wMTY7CisKKyAgICAv
KiBIb3BlZnVsbHkgdGhpcyBpcyBvcHRpbWlzZWQgZm9yIHRoZSBjb21tb24gY2FzZSAtIG5vdCBj
bGlwcGluZyAqLworICAgIGFtcDE2ID0gKGludDE2X3QpIGFtcDsKKyAgICBpZiAoYW1wID09IGFt
cDE2KQorICAgICAgICByZXR1cm4gYW1wMTY7CisgICAgaWYgKGFtcCA+IFdFQlJUQ19JTlQxNl9N
QVgpCisgICAgICAgIHJldHVybiAgV0VCUlRDX0lOVDE2X01BWDsKKyAgICByZXR1cm4gIFdFQlJU
Q19JTlQxNl9NSU47Cit9CisvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworc3RhdGljIHZvaWQgYmxv
Y2s0KEc3MjJFbmNvZGVyU3RhdGUgKnMsIGludCBiYW5kLCBpbnQgZCkKK3sKKyAgICBpbnQgd2Qx
OworICAgIGludCB3ZDI7CisgICAgaW50IHdkMzsKKyAgICBpbnQgaTsKKworICAgIC8qIEJsb2Nr
IDQsIFJFQ09OUyAqLworICAgIHMtPmJhbmRbYmFuZF0uZFswXSA9IGQ7CisgICAgcy0+YmFuZFti
YW5kXS5yWzBdID0gc2F0dXJhdGUocy0+YmFuZFtiYW5kXS5zICsgZCk7CisKKyAgICAvKiBCbG9j
ayA0LCBQQVJSRUMgKi8KKyAgICBzLT5iYW5kW2JhbmRdLnBbMF0gPSBzYXR1cmF0ZShzLT5iYW5k
W2JhbmRdLnN6ICsgZCk7CisKKyAgICAvKiBCbG9jayA0LCBVUFBPTDIgKi8KKyAgICBmb3IgKGkg
PSAwOyAgaSA8IDM7ICBpKyspCisgICAgICAgIHMtPmJhbmRbYmFuZF0uc2dbaV0gPSBzLT5iYW5k
W2JhbmRdLnBbaV0gPj4gMTU7CisgICAgd2QxID0gc2F0dXJhdGUocy0+YmFuZFtiYW5kXS5hWzFd
IDw8IDIpOworCisgICAgd2QyID0gKHMtPmJhbmRbYmFuZF0uc2dbMF0gPT0gcy0+YmFuZFtiYW5k
XS5zZ1sxXSkgID8gIC13ZDEgIDogIHdkMTsKKyAgICBpZiAod2QyID4gMzI3NjcpCisgICAgICAg
IHdkMiA9IDMyNzY3OworICAgIHdkMyA9ICh3ZDIgPj4gNykgKyAoKHMtPmJhbmRbYmFuZF0uc2db
MF0gPT0gcy0+YmFuZFtiYW5kXS5zZ1syXSkgID8gIDEyOCAgOiAgLTEyOCk7CisgICAgd2QzICs9
IChzLT5iYW5kW2JhbmRdLmFbMl0qMzI1MTIpID4+IDE1OworICAgIGlmICh3ZDMgPiAxMjI4OCkK
KyAgICAgICAgd2QzID0gMTIyODg7CisgICAgZWxzZSBpZiAod2QzIDwgLTEyMjg4KQorICAgICAg
ICB3ZDMgPSAtMTIyODg7CisgICAgcy0+YmFuZFtiYW5kXS5hcFsyXSA9IHdkMzsKKworICAgIC8q
IEJsb2NrIDQsIFVQUE9MMSAqLworICAgIHMtPmJhbmRbYmFuZF0uc2dbMF0gPSBzLT5iYW5kW2Jh
bmRdLnBbMF0gPj4gMTU7CisgICAgcy0+YmFuZFtiYW5kXS5zZ1sxXSA9IHMtPmJhbmRbYmFuZF0u
cFsxXSA+PiAxNTsKKyAgICB3ZDEgPSAocy0+YmFuZFtiYW5kXS5zZ1swXSA9PSBzLT5iYW5kW2Jh
bmRdLnNnWzFdKSAgPyAgMTkyICA6ICAtMTkyOworICAgIHdkMiA9IChzLT5iYW5kW2JhbmRdLmFb
MV0qMzI2NDApID4+IDE1OworCisgICAgcy0+YmFuZFtiYW5kXS5hcFsxXSA9IHNhdHVyYXRlKHdk
MSArIHdkMik7CisgICAgd2QzID0gc2F0dXJhdGUoMTUzNjAgLSBzLT5iYW5kW2JhbmRdLmFwWzJd
KTsKKyAgICBpZiAocy0+YmFuZFtiYW5kXS5hcFsxXSA+IHdkMykKKyAgICAgICAgcy0+YmFuZFti
YW5kXS5hcFsxXSA9IHdkMzsKKyAgICBlbHNlIGlmIChzLT5iYW5kW2JhbmRdLmFwWzFdIDwgLXdk
MykKKyAgICAgICAgcy0+YmFuZFtiYW5kXS5hcFsxXSA9IC13ZDM7CisKKyAgICAvKiBCbG9jayA0
LCBVUFpFUk8gKi8KKyAgICB3ZDEgPSAoZCA9PSAwKSAgPyAgMCAgOiAgMTI4OworICAgIHMtPmJh
bmRbYmFuZF0uc2dbMF0gPSBkID4+IDE1OworICAgIGZvciAoaSA9IDE7ICBpIDwgNzsgIGkrKykK
KyAgICB7CisgICAgICAgIHMtPmJhbmRbYmFuZF0uc2dbaV0gPSBzLT5iYW5kW2JhbmRdLmRbaV0g
Pj4gMTU7CisgICAgICAgIHdkMiA9IChzLT5iYW5kW2JhbmRdLnNnW2ldID09IHMtPmJhbmRbYmFu
ZF0uc2dbMF0pICA/ICB3ZDEgIDogIC13ZDE7CisgICAgICAgIHdkMyA9IChzLT5iYW5kW2JhbmRd
LmJbaV0qMzI2NDApID4+IDE1OworICAgICAgICBzLT5iYW5kW2JhbmRdLmJwW2ldID0gc2F0dXJh
dGUod2QyICsgd2QzKTsKKyAgICB9CisKKyAgICAvKiBCbG9jayA0LCBERUxBWUEgKi8KKyAgICBm
b3IgKGkgPSA2OyAgaSA+IDA7ICBpLS0pCisgICAgeworICAgICAgICBzLT5iYW5kW2JhbmRdLmRb
aV0gPSBzLT5iYW5kW2JhbmRdLmRbaSAtIDFdOworICAgICAgICBzLT5iYW5kW2JhbmRdLmJbaV0g
PSBzLT5iYW5kW2JhbmRdLmJwW2ldOworICAgIH0KKworICAgIGZvciAoaSA9IDI7ICBpID4gMDsg
IGktLSkKKyAgICB7CisgICAgICAgIHMtPmJhbmRbYmFuZF0ucltpXSA9IHMtPmJhbmRbYmFuZF0u
cltpIC0gMV07CisgICAgICAgIHMtPmJhbmRbYmFuZF0ucFtpXSA9IHMtPmJhbmRbYmFuZF0ucFtp
IC0gMV07CisgICAgICAgIHMtPmJhbmRbYmFuZF0uYVtpXSA9IHMtPmJhbmRbYmFuZF0uYXBbaV07
CisgICAgfQorCisgICAgLyogQmxvY2sgNCwgRklMVEVQICovCisgICAgd2QxID0gc2F0dXJhdGUo
cy0+YmFuZFtiYW5kXS5yWzFdICsgcy0+YmFuZFtiYW5kXS5yWzFdKTsKKyAgICB3ZDEgPSAocy0+
YmFuZFtiYW5kXS5hWzFdKndkMSkgPj4gMTU7CisgICAgd2QyID0gc2F0dXJhdGUocy0+YmFuZFti
YW5kXS5yWzJdICsgcy0+YmFuZFtiYW5kXS5yWzJdKTsKKyAgICB3ZDIgPSAocy0+YmFuZFtiYW5k
XS5hWzJdKndkMikgPj4gMTU7CisgICAgcy0+YmFuZFtiYW5kXS5zcCA9IHNhdHVyYXRlKHdkMSAr
IHdkMik7CisKKyAgICAvKiBCbG9jayA0LCBGSUxURVogKi8KKyAgICBzLT5iYW5kW2JhbmRdLnN6
ID0gMDsKKyAgICBmb3IgKGkgPSA2OyAgaSA+IDA7ICBpLS0pCisgICAgeworICAgICAgICB3ZDEg
PSBzYXR1cmF0ZShzLT5iYW5kW2JhbmRdLmRbaV0gKyBzLT5iYW5kW2JhbmRdLmRbaV0pOworICAg
ICAgICBzLT5iYW5kW2JhbmRdLnN6ICs9IChzLT5iYW5kW2JhbmRdLmJbaV0qd2QxKSA+PiAxNTsK
KyAgICB9CisgICAgcy0+YmFuZFtiYW5kXS5zeiA9IHNhdHVyYXRlKHMtPmJhbmRbYmFuZF0uc3op
OworCisgICAgLyogQmxvY2sgNCwgUFJFRElDICovCisgICAgcy0+YmFuZFtiYW5kXS5zID0gc2F0
dXJhdGUocy0+YmFuZFtiYW5kXS5zcCArIHMtPmJhbmRbYmFuZF0uc3opOworfQorLyotIEVuZCBv
ZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCisKK0c3MjJFbmNvZGVyU3RhdGUqIFdlYlJ0Y19nNzIyX2VuY29kZV9pbml0
KEc3MjJFbmNvZGVyU3RhdGUqIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBvcHRpb25zKSB7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIGlm
ICgocyA9IChHNzIyRW5jb2RlclN0YXRlICopIG1hbGxvYyhzaXplb2YoKnMpKSkgPT0gTlVMTCkK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1zZXQocywgMCwgc2l6ZW9m
KCpzKSk7CisgICAgaWYgKHJhdGUgPT0gNDgwMDApCisgICAgICAgIHMtPmJpdHNfcGVyX3NhbXBs
ZSA9IDY7CisgICAgZWxzZSBpZiAocmF0ZSA9PSA1NjAwMCkKKyAgICAgICAgcy0+Yml0c19wZXJf
c2FtcGxlID0gNzsKKyAgICBlbHNlCisgICAgICAgIHMtPmJpdHNfcGVyX3NhbXBsZSA9IDg7Cisg
ICAgaWYgKChvcHRpb25zICYgRzcyMl9TQU1QTEVfUkFURV84MDAwKSkKKyAgICAgICAgcy0+ZWln
aHRfayA9IFRSVUU7CisgICAgaWYgKChvcHRpb25zICYgRzcyMl9QQUNLRUQpICAmJiAgcy0+Yml0
c19wZXJfc2FtcGxlICE9IDgpCisgICAgICAgIHMtPnBhY2tlZCA9IFRSVUU7CisgICAgZWxzZQor
ICAgICAgICBzLT5wYWNrZWQgPSBGQUxTRTsKKyAgICBzLT5iYW5kWzBdLmRldCA9IDMyOworICAg
IHMtPmJhbmRbMV0uZGV0ID0gODsKKyAgICByZXR1cm4gczsKK30KKy8qLSBFbmQgb2YgZnVuY3Rp
b24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLworCitpbnQgV2ViUnRjX2c3MjJfZW5jb2RlX3JlbGVhc2UoRzcyMkVuY29kZXJTdGF0ZSAq
cykKK3sKKyAgICBmcmVlKHMpOworICAgIHJldHVybiAwOworfQorLyotIEVuZCBvZiBmdW5jdGlv
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCisKKy8qIFdlYlJ0YywgdGxlZ3JhbmQ6CisgKiBPbmx5IGRlZmluZSB0aGUgZm9sbG93aW5n
IGlmIGJpdC1leGFjdG5lc3Mgd2l0aCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24KKyAqIGlzIG5l
ZWRlZC4gV2lsbCBvbmx5IGhhdmUgYW55IGVmZmVjdCBpZiBpbnB1dCBzaWduYWwgaXMgc2F0dXJh
dGVkLgorICovCisvLyNkZWZpbmUgUlVOX0xJS0VfUkVGRVJFTkNFX0c3MjIKKyNpZmRlZiBSVU5f
TElLRV9SRUZFUkVOQ0VfRzcyMgoraW50MTZfdCBsaW1pdFZhbHVlcyAoaW50MTZfdCBybCkKK3sK
KworICAgIGludDE2X3QgeWw7CisKKyAgICB5bCA9IChybCA+IDE2MzgzKSA/IDE2MzgzIDogKChy
bCA8IC0xNjM4NCkgPyAtMTYzODQgOiBybCk7CisKKyAgICByZXR1cm4gKHlsKTsKK30KKyNlbmRp
ZgorCitzaXplX3QgV2ViUnRjX2c3MjJfZW5jb2RlKEc3MjJFbmNvZGVyU3RhdGUgKnMsIHVpbnQ4
X3QgZzcyMl9kYXRhW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3Qg
YW1wW10sIHNpemVfdCBsZW4pCit7CisgICAgc3RhdGljIGNvbnN0IGludCBxNlszMl0gPQorICAg
IHsKKyAgICAgICAgICAgMCwgICAzNSwgICA3MiwgIDExMCwgIDE1MCwgIDE5MCwgIDIzMywgIDI3
NiwKKyAgICAgICAgIDMyMywgIDM3MCwgIDQyMiwgIDQ3MywgIDUzMCwgIDU4NywgIDY1MCwgIDcx
NCwKKyAgICAgICAgIDc4NiwgIDg1OCwgIDk0MCwgMTAyMywgMTEyMSwgMTIxOSwgMTMzOSwgMTQ1
OCwKKyAgICAgICAgMTYxMiwgMTc2NSwgMTk4MCwgMjE5NSwgMjU1NywgMjkxOSwgICAgMCwgICAg
MAorICAgIH07CisgICAgc3RhdGljIGNvbnN0IGludCBpbG5bMzJdID0KKyAgICB7CisgICAgICAg
ICAwLCA2MywgNjIsIDMxLCAzMCwgMjksIDI4LCAyNywKKyAgICAgICAgMjYsIDI1LCAyNCwgMjMs
IDIyLCAyMSwgMjAsIDE5LAorICAgICAgICAxOCwgMTcsIDE2LCAxNSwgMTQsIDEzLCAxMiwgMTEs
CisgICAgICAgIDEwLCAgOSwgIDgsICA3LCAgNiwgIDUsICA0LCAgMAorICAgIH07CisgICAgc3Rh
dGljIGNvbnN0IGludCBpbHBbMzJdID0KKyAgICB7CisgICAgICAgICAwLCA2MSwgNjAsIDU5LCA1
OCwgNTcsIDU2LCA1NSwKKyAgICAgICAgNTQsIDUzLCA1MiwgNTEsIDUwLCA0OSwgNDgsIDQ3LAor
ICAgICAgICA0NiwgNDUsIDQ0LCA0MywgNDIsIDQxLCA0MCwgMzksCisgICAgICAgIDM4LCAzNywg
MzYsIDM1LCAzNCwgMzMsIDMyLCAgMAorICAgIH07CisgICAgc3RhdGljIGNvbnN0IGludCB3bFs4
XSA9CisgICAgeworICAgICAgICAtNjAsIC0zMCwgNTgsIDE3MiwgMzM0LCA1MzgsIDExOTgsIDMw
NDIKKyAgICB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcmw0MlsxNl0gPQorICAgIHsKKyAgICAg
ICAgMCwgNywgNiwgNSwgNCwgMywgMiwgMSwgNywgNiwgNSwgNCwgMywgMiwgMSwgMAorICAgIH07
CisgICAgc3RhdGljIGNvbnN0IGludCBpbGJbMzJdID0KKyAgICB7CisgICAgICAgIDIwNDgsIDIw
OTMsIDIxMzksIDIxODYsIDIyMzMsIDIyODIsIDIzMzIsCisgICAgICAgIDIzODMsIDI0MzUsIDI0
ODksIDI1NDMsIDI1OTksIDI2NTYsIDI3MTQsCisgICAgICAgIDI3NzQsIDI4MzQsIDI4OTYsIDI5
NjAsIDMwMjUsIDMwOTEsIDMxNTgsCisgICAgICAgIDMyMjgsIDMyOTgsIDMzNzEsIDM0NDQsIDM1
MjAsIDM1OTcsIDM2NzYsCisgICAgICAgIDM3NTYsIDM4MzgsIDM5MjIsIDQwMDgKKyAgICB9Owor
ICAgIHN0YXRpYyBjb25zdCBpbnQgcW00WzE2XSA9CisgICAgeworICAgICAgICAgICAgIDAsIC0y
MDQ1NiwgLTEyODk2LCAtODk2OCwKKyAgICAgICAgIC02Mjg4LCAgLTQyNDAsICAtMjU4NCwgLTEy
MDAsCisgICAgICAgICAyMDQ1NiwgIDEyODk2LCAgIDg5NjgsICA2Mjg4LAorICAgICAgICAgIDQy
NDAsICAgMjU4NCwgICAxMjAwLCAgICAgMAorICAgIH07CisgICAgc3RhdGljIGNvbnN0IGludCBx
bTJbNF0gPQorICAgIHsKKyAgICAgICAgLTc0MDgsICAtMTYxNiwgICA3NDA4LCAgIDE2MTYKKyAg
ICB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcW1mX2NvZWZmc1sxMl0gPQorICAgIHsKKyAgICAg
ICAgICAgMywgIC0xMSwgICAxMiwgICAzMiwgLTIxMCwgIDk1MSwgMzg3NiwgLTgwNSwgIDM2Miwg
LTE1NiwgICA1MywgIC0xMSwKKyAgICB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgaWhuWzNdID0g
ezAsIDEsIDB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgaWhwWzNdID0gezAsIDMsIDJ9OworICAg
IHN0YXRpYyBjb25zdCBpbnQgd2hbM10gPSB7MCwgLTIxNCwgNzk4fTsKKyAgICBzdGF0aWMgY29u
c3QgaW50IHJoMls0XSA9IHsyLCAxLCAyLCAxfTsKKworICAgIGludCBkbG93OworICAgIGludCBk
aGlnaDsKKyAgICBpbnQgZWw7CisgICAgaW50IHdkOworICAgIGludCB3ZDE7CisgICAgaW50IHJp
bDsKKyAgICBpbnQgd2QyOworICAgIGludCBpbDQ7CisgICAgaW50IGloMjsKKyAgICBpbnQgd2Qz
OworICAgIGludCBlaDsKKyAgICBpbnQgbWloOworICAgIGludCBpOworICAgIHNpemVfdCBqOwor
ICAgIC8qIExvdyBhbmQgaGlnaCBiYW5kIFBDTSBmcm9tIHRoZSBRTUYgKi8KKyAgICBpbnQgeGxv
dzsKKyAgICBpbnQgeGhpZ2g7CisgICAgc2l6ZV90IGc3MjJfYnl0ZXM7CisgICAgLyogRXZlbiBh
bmQgb2RkIHRhcCBhY2N1bXVsYXRvcnMgKi8KKyAgICBpbnQgc3VtZXZlbjsKKyAgICBpbnQgc3Vt
b2RkOworICAgIGludCBpaGlnaDsKKyAgICBpbnQgaWxvdzsKKyAgICBpbnQgY29kZTsKKworICAg
IGc3MjJfYnl0ZXMgPSAwOworICAgIHhoaWdoID0gMDsKKyAgICBmb3IgKGogPSAwOyAgaiA8IGxl
bjsgICkKKyAgICB7CisgICAgICAgIGlmIChzLT5pdHVfdGVzdF9tb2RlKQorICAgICAgICB7Cisg
ICAgICAgICAgICB4bG93ID0KKyAgICAgICAgICAgIHhoaWdoID0gYW1wW2orK10gPj4gMTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzLT5laWdo
dF9rKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIFdlIHNoaWZ0IGJ5IDEgdG8g
YWxsb3cgZm9yIHRoZSAxNSBiaXQgaW5wdXQgdG8gdGhlIEcuNzIyIGFsZ29yaXRobS4gKi8KKyAg
ICAgICAgICAgICAgICB4bG93ID0gYW1wW2orK10gPj4gMTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBBcHBseSB0aGUg
dHJhbnNtaXQgUU1GICovCisgICAgICAgICAgICAgICAgLyogU2h1ZmZsZSB0aGUgYnVmZmVyIGRv
d24gKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyAgaSA8IDIyOyAgaSsrKQorICAgICAg
ICAgICAgICAgICAgICBzLT54W2ldID0gcy0+eFtpICsgMl07CisgICAgICAgICAgICAgICAgcy0+
eFsyMl0gPSBhbXBbaisrXTsKKyAgICAgICAgICAgICAgICBzLT54WzIzXSA9IGFtcFtqKytdOwor
CisgICAgICAgICAgICAgICAgLyogRGlzY2FyZCBldmVyeSBvdGhlciBRTUYgb3V0cHV0ICovCisg
ICAgICAgICAgICAgICAgc3VtZXZlbiA9IDA7CisgICAgICAgICAgICAgICAgc3Vtb2RkID0gMDsK
KyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyAgaSA8IDEyOyAgaSsrKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Vtb2RkICs9IHMtPnhbMippXSpxbWZfY29lZmZz
W2ldOworICAgICAgICAgICAgICAgICAgICBzdW1ldmVuICs9IHMtPnhbMippICsgMV0qcW1mX2Nv
ZWZmc1sxMSAtIGldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBXZSBz
aGlmdCBieSAxMiB0byBhbGxvdyBmb3IgdGhlIFFNRiBmaWx0ZXJzIChEQyBnYWluID0gNDA5Niks
IHBsdXMgMQorICAgICAgICAgICAgICAgICAgIHRvIGFsbG93IGZvciB1cyBzdW1taW5nIHR3byBm
aWx0ZXJzLCBwbHVzIDEgdG8gYWxsb3cgZm9yIHRoZSAxNSBiaXQKKyAgICAgICAgICAgICAgICAg
ICBpbnB1dCB0byB0aGUgRy43MjIgYWxnb3JpdGhtLiAqLworICAgICAgICAgICAgICAgIHhsb3cg
PSAoc3VtZXZlbiArIHN1bW9kZCkgPj4gMTQ7CisgICAgICAgICAgICAgICAgeGhpZ2ggPSAoc3Vt
ZXZlbiAtIHN1bW9kZCkgPj4gMTQ7CisKKyNpZmRlZiBSVU5fTElLRV9SRUZFUkVOQ0VfRzcyMgor
ICAgICAgICAgICAgICAgIC8qIFRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG9ubHkgdXNlZCB0byB2
ZXJpZnkgYml0LWV4YWN0bmVzcworICAgICAgICAgICAgICAgICAqIHdpdGggcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIG9mIEcuNzIyLiBIaWdoZXIgcHJlY2lzaW9uCisgICAgICAgICAgICAgICAg
ICogaXMgYWNoaWV2ZWQgd2l0aG91dCBsaW1pdGluZyB0aGUgdmFsdWVzLgorICAgICAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgICAgIHhsb3cgPSBsaW1pdFZhbHVlcyh4bG93KTsKKyAgICAg
ICAgICAgICAgICB4aGlnaCA9IGxpbWl0VmFsdWVzKHhoaWdoKTsKKyNlbmRpZgorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIC8qIEJsb2NrIDFMLCBTVUJUUkEgKi8KKyAgICAgICAg
ZWwgPSBzYXR1cmF0ZSh4bG93IC0gcy0+YmFuZFswXS5zKTsKKworICAgICAgICAvKiBCbG9jayAx
TCwgUVVBTlRMICovCisgICAgICAgIHdkID0gKGVsID49IDApICA/ICBlbCAgOiAgLShlbCArIDEp
OworCisgICAgICAgIGZvciAoaSA9IDE7ICBpIDwgMzA7ICBpKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHdkMSA9IChxNltpXSpzLT5iYW5kWzBdLmRldCkgPj4gMTI7CisgICAgICAgICAgICBp
ZiAod2QgPCB3ZDEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
aWxvdyA9IChlbCA8IDApICA/ICBpbG5baV0gIDogIGlscFtpXTsKKworICAgICAgICAvKiBCbG9j
ayAyTCwgSU5WUUFMICovCisgICAgICAgIHJpbCA9IGlsb3cgPj4gMjsKKyAgICAgICAgd2QyID0g
cW00W3JpbF07CisgICAgICAgIGRsb3cgPSAocy0+YmFuZFswXS5kZXQqd2QyKSA+PiAxNTsKKwor
ICAgICAgICAvKiBCbG9jayAzTCwgTE9HU0NMICovCisgICAgICAgIGlsNCA9IHJsNDJbcmlsXTsK
KyAgICAgICAgd2QgPSAocy0+YmFuZFswXS5uYioxMjcpID4+IDc7CisgICAgICAgIHMtPmJhbmRb
MF0ubmIgPSB3ZCArIHdsW2lsNF07CisgICAgICAgIGlmIChzLT5iYW5kWzBdLm5iIDwgMCkKKyAg
ICAgICAgICAgIHMtPmJhbmRbMF0ubmIgPSAwOworICAgICAgICBlbHNlIGlmIChzLT5iYW5kWzBd
Lm5iID4gMTg0MzIpCisgICAgICAgICAgICBzLT5iYW5kWzBdLm5iID0gMTg0MzI7CisKKyAgICAg
ICAgLyogQmxvY2sgM0wsIFNDQUxFTCAqLworICAgICAgICB3ZDEgPSAocy0+YmFuZFswXS5uYiA+
PiA2KSAmIDMxOworICAgICAgICB3ZDIgPSA4IC0gKHMtPmJhbmRbMF0ubmIgPj4gMTEpOworICAg
ICAgICB3ZDMgPSAod2QyIDwgMCkgID8gIChpbGJbd2QxXSA8PCAtd2QyKSAgOiAgKGlsYlt3ZDFd
ID4+IHdkMik7CisgICAgICAgIHMtPmJhbmRbMF0uZGV0ID0gd2QzIDw8IDI7CisKKyAgICAgICAg
YmxvY2s0KHMsIDAsIGRsb3cpOworCisgICAgICAgIGlmIChzLT5laWdodF9rKQorICAgICAgICB7
CisgICAgICAgICAgICAvKiBKdXN0IGxlYXZlIHRoZSBoaWdoIGJpdHMgYXMgemVybyAqLworICAg
ICAgICAgICAgY29kZSA9ICgweEMwIHwgaWxvdykgPj4gKDggLSBzLT5iaXRzX3Blcl9zYW1wbGUp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLyogQmxv
Y2sgMUgsIFNVQlRSQSAqLworICAgICAgICAgICAgZWggPSBzYXR1cmF0ZSh4aGlnaCAtIHMtPmJh
bmRbMV0ucyk7CisKKyAgICAgICAgICAgIC8qIEJsb2NrIDFILCBRVUFOVEggKi8KKyAgICAgICAg
ICAgIHdkID0gKGVoID49IDApICA/ICBlaCAgOiAgLShlaCArIDEpOworICAgICAgICAgICAgd2Qx
ID0gKDU2NCpzLT5iYW5kWzFdLmRldCkgPj4gMTI7CisgICAgICAgICAgICBtaWggPSAod2QgPj0g
d2QxKSAgPyAgMiAgOiAgMTsKKyAgICAgICAgICAgIGloaWdoID0gKGVoIDwgMCkgID8gIGlobltt
aWhdICA6ICBpaHBbbWloXTsKKworICAgICAgICAgICAgLyogQmxvY2sgMkgsIElOVlFBSCAqLwor
ICAgICAgICAgICAgd2QyID0gcW0yW2loaWdoXTsKKyAgICAgICAgICAgIGRoaWdoID0gKHMtPmJh
bmRbMV0uZGV0KndkMikgPj4gMTU7CisKKyAgICAgICAgICAgIC8qIEJsb2NrIDNILCBMT0dTQ0gg
Ki8KKyAgICAgICAgICAgIGloMiA9IHJoMltpaGlnaF07CisgICAgICAgICAgICB3ZCA9IChzLT5i
YW5kWzFdLm5iKjEyNykgPj4gNzsKKyAgICAgICAgICAgIHMtPmJhbmRbMV0ubmIgPSB3ZCArIHdo
W2loMl07CisgICAgICAgICAgICBpZiAocy0+YmFuZFsxXS5uYiA8IDApCisgICAgICAgICAgICAg
ICAgcy0+YmFuZFsxXS5uYiA9IDA7CisgICAgICAgICAgICBlbHNlIGlmIChzLT5iYW5kWzFdLm5i
ID4gMjI1MjgpCisgICAgICAgICAgICAgICAgcy0+YmFuZFsxXS5uYiA9IDIyNTI4OworCisgICAg
ICAgICAgICAvKiBCbG9jayAzSCwgU0NBTEVIICovCisgICAgICAgICAgICB3ZDEgPSAocy0+YmFu
ZFsxXS5uYiA+PiA2KSAmIDMxOworICAgICAgICAgICAgd2QyID0gMTAgLSAocy0+YmFuZFsxXS5u
YiA+PiAxMSk7CisgICAgICAgICAgICB3ZDMgPSAod2QyIDwgMCkgID8gIChpbGJbd2QxXSA8PCAt
d2QyKSAgOiAgKGlsYlt3ZDFdID4+IHdkMik7CisgICAgICAgICAgICBzLT5iYW5kWzFdLmRldCA9
IHdkMyA8PCAyOworCisgICAgICAgICAgICBibG9jazQocywgMSwgZGhpZ2gpOworICAgICAgICAg
ICAgY29kZSA9ICgoaWhpZ2ggPDwgNikgfCBpbG93KSA+PiAoOCAtIHMtPmJpdHNfcGVyX3NhbXBs
ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocy0+cGFja2VkKQorICAgICAgICB7CisgICAg
ICAgICAgICAvKiBQYWNrIHRoZSBjb2RlIGJpdHMgKi8KKyAgICAgICAgICAgIHMtPm91dF9idWZm
ZXIgfD0gKGNvZGUgPDwgcy0+b3V0X2JpdHMpOworICAgICAgICAgICAgcy0+b3V0X2JpdHMgKz0g
cy0+Yml0c19wZXJfc2FtcGxlOworICAgICAgICAgICAgaWYgKHMtPm91dF9iaXRzID49IDgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZzcyMl9kYXRhW2c3MjJfYnl0ZXMrK10gPSAo
dWludDhfdCkgKHMtPm91dF9idWZmZXIgJiAweEZGKTsKKyAgICAgICAgICAgICAgICBzLT5vdXRf
Yml0cyAtPSA4OworICAgICAgICAgICAgICAgIHMtPm91dF9idWZmZXIgPj49IDg7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBn
NzIyX2RhdGFbZzcyMl9ieXRlcysrXSA9ICh1aW50OF90KSBjb2RlOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBnNzIyX2J5dGVzOworfQorLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKi0g
RW5kIG9mIGZpbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50
ZXJmYWNlLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9nNzIyX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQyNDRkNWM4MDk5NmE2YTA3NjJhZjVkMzFmZWQ4MTFiYjIyMmIzYTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9nNzIyX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTA3IEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxMSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJnNzIyX2VuY19kZWMuaCIKKyNpbmNsdWRlICJnNzIy
X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgIndlYnJ0Yy90eXBlZGVmcy5oIgorCitpbnQxNl90IFdl
YlJ0Y0c3MjJfQ3JlYXRlRW5jb2RlcihHNzIyRW5jSW5zdCAqKkc3MjJlbmNfaW5zdCkKK3sKKyAg
ICAqRzcyMmVuY19pbnN0PShHNzIyRW5jSW5zdCopbWFsbG9jKHNpemVvZihHNzIyRW5jb2RlclN0
YXRlKSk7CisgICAgaWYgKCpHNzIyZW5jX2luc3QhPU5VTEwpIHsKKyAgICAgIHJldHVybigwKTsK
KyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuKC0xKTsKKyAgICB9Cit9CisKK2ludDE2X3QgV2Vi
UnRjRzcyMl9FbmNvZGVySW5pdChHNzIyRW5jSW5zdCAqRzcyMmVuY19pbnN0KQoreworICAgIC8v
IENyZWF0ZSBhbmQvb3IgcmVzZXQgdGhlIEcuNzIyIGVuY29kZXIKKyAgICAvLyBCaXRyYXRlIDY0
IGticHMgYW5kIHdpZGViYW5kIG1vZGUgKDIpCisgICAgRzcyMmVuY19pbnN0ID0gKEc3MjJFbmNJ
bnN0ICopIFdlYlJ0Y19nNzIyX2VuY29kZV9pbml0KAorICAgICAgICAoRzcyMkVuY29kZXJTdGF0
ZSopIEc3MjJlbmNfaW5zdCwgNjQwMDAsIDIpOworICAgIGlmIChHNzIyZW5jX2luc3QgPT0gTlVM
TCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfQorCitpbnQgV2ViUnRjRzcyMl9GcmVlRW5jb2RlcihHNzIyRW5jSW5zdCAqRzcy
MmVuY19pbnN0KQoreworICAgIC8vIEZyZWUgZW5jb2RlciBtZW1vcnkKKyAgICByZXR1cm4gV2Vi
UnRjX2c3MjJfZW5jb2RlX3JlbGVhc2UoKEc3MjJFbmNvZGVyU3RhdGUqKSBHNzIyZW5jX2luc3Qp
OworfQorCitzaXplX3QgV2ViUnRjRzcyMl9FbmNvZGUoRzcyMkVuY0luc3QgKkc3MjJlbmNfaW5z
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90KiBzcGVlY2hJbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QqIGVuY29kZWQpCit7CisgICAgdW5zaWduZWQgY2hhciAqY29kZWNoYXIgPSAo
dW5zaWduZWQgY2hhciopIGVuY29kZWQ7CisgICAgLy8gRW5jb2RlIHRoZSBpbnB1dCBzcGVlY2gg
dmVjdG9yCisgICAgcmV0dXJuIFdlYlJ0Y19nNzIyX2VuY29kZSgoRzcyMkVuY29kZXJTdGF0ZSop
IEc3MjJlbmNfaW5zdCwgY29kZWNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
cGVlY2hJbiwgbGVuKTsKK30KKworaW50MTZfdCBXZWJSdGNHNzIyX0NyZWF0ZURlY29kZXIoRzcy
MkRlY0luc3QgKipHNzIyZGVjX2luc3QpCit7CisgICAgKkc3MjJkZWNfaW5zdD0oRzcyMkRlY0lu
c3QqKW1hbGxvYyhzaXplb2YoRzcyMkRlY29kZXJTdGF0ZSkpOworICAgIGlmICgqRzcyMmRlY19p
bnN0IT1OVUxMKSB7CisgICAgICByZXR1cm4oMCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVy
bigtMSk7CisgICAgfQorfQorCit2b2lkIFdlYlJ0Y0c3MjJfRGVjb2RlckluaXQoRzcyMkRlY0lu
c3QqIGluc3QpIHsKKyAgLy8gQ3JlYXRlIGFuZC9vciByZXNldCB0aGUgRy43MjIgZGVjb2Rlcgor
ICAvLyBCaXRyYXRlIDY0IGticHMgYW5kIHdpZGViYW5kIG1vZGUgKDIpCisgIFdlYlJ0Y19nNzIy
X2RlY29kZV9pbml0KChHNzIyRGVjb2RlclN0YXRlKilpbnN0LCA2NDAwMCwgMik7Cit9CisKK2lu
dCBXZWJSdGNHNzIyX0ZyZWVEZWNvZGVyKEc3MjJEZWNJbnN0ICpHNzIyZGVjX2luc3QpCit7Cisg
ICAgLy8gRnJlZSBlbmNvZGVyIG1lbW9yeQorICAgIHJldHVybiBXZWJSdGNfZzcyMl9kZWNvZGVf
cmVsZWFzZSgoRzcyMkRlY29kZXJTdGF0ZSopIEc3MjJkZWNfaW5zdCk7Cit9CisKK3NpemVfdCBX
ZWJSdGNHNzIyX0RlY29kZShHNzIyRGVjSW5zdCAqRzcyMmRlY19pbnN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuY29kZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpkZWNv
ZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKnNwZWVjaFR5cGUpCit7Cisg
ICAgLy8gRGVjb2RlIHRoZSBHLjcyMiBlbmNvZGVyIHN0cmVhbQorICAgICpzcGVlY2hUeXBlPUc3
MjJfV0VCUlRDX1NQRUVDSDsKKyAgICByZXR1cm4gV2ViUnRjX2c3MjJfZGVjb2RlKChHNzIyRGVj
b2RlclN0YXRlKikgRzcyMmRlY19pbnN0LCBkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2RlZCwgbGVuKTsKK30KKworaW50MTZfdCBXZWJSdGNHNzIyX1ZlcnNpb24o
Y2hhciAqdmVyc2lvblN0ciwgc2hvcnQgbGVuKQoreworICAgIC8vIEdldCB2ZXJzaW9uIHN0cmlu
ZworICAgIGNoYXIgdmVyc2lvblszMF0gPSAiMi4wLjBcbiI7CisgICAgaWYgKHN0cmxlbih2ZXJz
aW9uKSA8ICh1bnNpZ25lZCBpbnQpbGVuKQorICAgIHsKKyAgICAgICAgc3RyY3B5KHZlcnNpb25T
dHIsIHZlcnNpb24pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MjIvZzcyMl9pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjQxMWVmMGU4ZWRhYTVhYzBiNTA4YzU4NzIxYzNjZWUyMjhhY2YxZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgKQEAg
LTAsMCArMSwxODIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDExIFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFdFQlJUQ19N
T0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfRzcyMl9HNzIyX0lOVEVSRkFDRV9IXworI2RlZmlu
ZSBXRUJSVENfTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0c3MjJfRzcyMl9JTlRFUkZBQ0Vf
SF8KKworI2luY2x1ZGUgIndlYnJ0Yy90eXBlZGVmcy5oIgorCisvKgorICogU29sdXRpb24gdG8g
c3VwcG9ydCBtdWx0aXBsZSBpbnN0YW5jZXMKKyAqLworCit0eXBlZGVmIHN0cnVjdCBXZWJSdGNH
NzIyRW5jSW5zdCAgICBHNzIyRW5jSW5zdDsKK3R5cGVkZWYgc3RydWN0IFdlYlJ0Y0c3MjJEZWNJ
bnN0ICAgIEc3MjJEZWNJbnN0OworCisvKgorICogQ29tZm9ydCBub2lzZSBjb25zdGFudHMKKyAq
LworCisjZGVmaW5lIEc3MjJfV0VCUlRDX1NQRUVDSCAgICAgMQorI2RlZmluZSBHNzIyX1dFQlJU
Q19DTkcgICAgICAgIDIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBXZWJSdGNHNzIyX0NyZWF0ZUVuY29kZXIo
Li4uKQorICoKKyAqIENyZWF0ZSBtZW1vcnkgdXNlZCBmb3IgRzcyMiBlbmNvZGVyCisgKgorICog
SW5wdXQ6CisgKiAgICAgLSBHNzIyZW5jX2luc3QgICAgICAgICA6IEc3MjIgaW5zdGFuY2UgZm9y
IGVuY29kZXIKKyAqCisgKiBSZXR1cm4gdmFsdWUgICAgICAgICAgICAgICA6ICAwIC0gT2sKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgLSBFcnJvcgorICovCitpbnQxNl90IFdl
YlJ0Y0c3MjJfQ3JlYXRlRW5jb2RlcihHNzIyRW5jSW5zdCAqKkc3MjJlbmNfaW5zdCk7CisKKwor
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyAqIFdlYlJ0Y0c3MjJfRW5jb2RlckluaXQoLi4uKQorICoK
KyAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSBHNzIyIGluc3RhbmNlCisgKgorICogSW5w
dXQ6CisgKiAgICAgLSBHNzIyZW5jX2luc3QgICAgICAgICA6IEc3MjIgaW5zdGFuY2UsIGkuZS4g
dGhlIHVzZXIgdGhhdCBzaG91bGQgcmVjZWl2ZQorICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJlIGluaXRpYWxpemVkCisgKgorICogUmV0dXJuIHZhbHVlICAgICAgICAgICAgICAgOiAg
MCAtIE9rCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xIC0gRXJyb3IKKyAqLwor
CitpbnQxNl90IFdlYlJ0Y0c3MjJfRW5jb2RlckluaXQoRzcyMkVuY0luc3QgKkc3MjJlbmNfaW5z
dCk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFdlYlJ0Y0c3MjJfRnJlZUVuY29kZXIo
Li4uKQorICoKKyAqIEZyZWUgdGhlIG1lbW9yeSB1c2VkIGZvciBHNzIyIGVuY29kZXIKKyAqCisg
KiBJbnB1dDoKKyAqICAgICAtIEc3MjJlbmNfaW5zdCAgICAgICAgIDogRzcyMiBpbnN0YW5jZSBm
b3IgZW5jb2RlcgorICoKKyAqIFJldHVybiB2YWx1ZSAgICAgICAgICAgICAgIDogIDAgLSBPawor
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSAtIEVycm9yCisgKi8KK2ludCBXZWJS
dGNHNzIyX0ZyZWVFbmNvZGVyKEc3MjJFbmNJbnN0ICpHNzIyZW5jX2luc3QpOworCisKKworLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKyAqIFdlYlJ0Y0c3MjJfRW5jb2RlKC4uLikKKyAqCisgKiBUaGlz
IGZ1bmN0aW9uIGVuY29kZXMgRzcyMiBlbmNvZGVkIGRhdGEuCisgKgorICogSW5wdXQ6CisgKiAg
ICAgLSBHNzIyZW5jX2luc3QgICAgICAgICA6IEc3MjIgaW5zdGFuY2UsIGkuZS4gdGhlIHVzZXIg
dGhhdCBzaG91bGQgZW5jb2RlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcGFj
a2V0CisgKiAgICAgLSBzcGVlY2hJbiAgICAgICAgICAgICA6IElucHV0IHNwZWVjaCB2ZWN0b3IK
KyAqICAgICAtIGxlbiAgICAgICAgICAgICAgICAgIDogU2FtcGxlcyBpbiBzcGVlY2hJbgorICoK
KyAqIE91dHB1dDoKKyAqICAgICAgICAtIGVuY29kZWQgICAgICAgICAgIDogVGhlIGVuY29kZWQg
ZGF0YSB2ZWN0b3IKKyAqCisgKiBSZXR1cm4gdmFsdWUgICAgICAgICAgICAgICA6IExlbmd0aCAo
aW4gYnl0ZXMpIG9mIGNvZGVkIGRhdGEKKyAqLworCitzaXplX3QgV2ViUnRjRzcyMl9FbmNvZGUo
RzcyMkVuY0luc3QqIEc3MjJlbmNfaW5zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQxNl90KiBzcGVlY2hJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGVuY29kZWQpOworCisKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisgKiBXZWJSdGNHNzIyX0NyZWF0ZURlY29kZXIoLi4uKQorICoKKyAq
IENyZWF0ZSBtZW1vcnkgdXNlZCBmb3IgRzcyMiBlbmNvZGVyCisgKgorICogSW5wdXQ6CisgKiAg
ICAgLSBHNzIyZGVjX2luc3QgICAgICAgICA6IEc3MjIgaW5zdGFuY2UgZm9yIGRlY29kZXIKKyAq
CisgKiBSZXR1cm4gdmFsdWUgICAgICAgICAgICAgICA6ICAwIC0gT2sKKyAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLTEgLSBFcnJvcgorICovCitpbnQxNl90IFdlYlJ0Y0c3MjJfQ3Jl
YXRlRGVjb2RlcihHNzIyRGVjSW5zdCAqKkc3MjJkZWNfaW5zdCk7CisKKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisgKiBXZWJSdGNHNzIyX0RlY29kZXJJbml0KC4uLikKKyAqCisgKiBUaGlzIGZ1bmN0
aW9uIGluaXRpYWxpemVzIGEgRzcyMiBpbnN0YW5jZQorICoKKyAqIElucHV0OgorICogICAgIC0g
aW5zdCAgICAgIDogRzcyMiBpbnN0YW5jZQorICovCisKK3ZvaWQgV2ViUnRjRzcyMl9EZWNvZGVy
SW5pdChHNzIyRGVjSW5zdCogaW5zdCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBXZWJS
dGNHNzIyX0ZyZWVEZWNvZGVyKC4uLikKKyAqCisgKiBGcmVlIHRoZSBtZW1vcnkgdXNlZCBmb3Ig
RzcyMiBkZWNvZGVyCisgKgorICogSW5wdXQ6CisgKiAgICAgLSBHNzIyZGVjX2luc3QgICAgICAg
ICA6IEc3MjIgaW5zdGFuY2UgZm9yIGRlY29kZXIKKyAqCisgKiBSZXR1cm4gdmFsdWUgICAgICAg
ICAgICAgICA6ICAwIC0gT2sKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgLSBF
cnJvcgorICovCisKK2ludCBXZWJSdGNHNzIyX0ZyZWVEZWNvZGVyKEc3MjJEZWNJbnN0ICpHNzIy
ZGVjX2luc3QpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBXZWJSdGNHNzIyX0RlY29k
ZSguLi4pCisgKgorICogVGhpcyBmdW5jdGlvbiBkZWNvZGVzIGEgcGFja2V0IHdpdGggRzcyOSBm
cmFtZShzKS4gT3V0cHV0IHNwZWVjaCBsZW5ndGgKKyAqIHdpbGwgYmUgYSBtdWx0aXBsZSBvZiA4
MCBzYW1wbGVzICg4MCpmcmFtZXMvcGFja2V0KS4KKyAqCisgKiBJbnB1dDoKKyAqICAgICAtIEc3
MjJkZWNfaW5zdCAgICAgICA6IEc3MjIgaW5zdGFuY2UsIGkuZS4gdGhlIHVzZXIgdGhhdCBzaG91
bGQgZGVjb2RlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHBhY2tldAorICogICAg
IC0gZW5jb2RlZCAgICAgICAgICAgIDogRW5jb2RlZCBHNzIyIGZyYW1lKHMpCisgKiAgICAgLSBs
ZW4gICAgICAgICAgICAgICAgOiBCeXRlcyBpbiBlbmNvZGVkIHZlY3RvcgorICoKKyAqIE91dHB1
dDoKKyAqICAgICAgICAtIGRlY29kZWQgICAgICAgICA6IFRoZSBkZWNvZGVkIHZlY3RvcgorICog
ICAgICAtIHNwZWVjaFR5cGUgICAgICAgIDogMSBub3JtYWwsIDIgQ05HIChTaW5jZSBHNzIyIGRv
ZXMgbm90IGhhdmUgaXRzIG93bgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgRFRYL0NO
RyBzY2hlbWUgaXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gMSkKKyAqCisgKiBSZXR1cm4gdmFsdWUg
ICAgICAgICAgICAgOiBTYW1wbGVzIGluIGRlY29kZWQgdmVjdG9yCisgKi8KKworc2l6ZV90IFdl
YlJ0Y0c3MjJfRGVjb2RlKEc3MjJEZWNJbnN0ICpHNzIyZGVjX2luc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCogZW5jb2RlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmRlY29k
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqc3BlZWNoVHlwZSk7CisKKy8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisgKiBXZWJSdGNHNzIyX1ZlcnNpb24oLi4uKQorICoKKyAqIEdl
dCBhIHN0cmluZyB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGNvZGVjCisgKi8KKwor
aW50MTZfdCBXZWJSdGNHNzIyX1ZlcnNpb24oY2hhciAqdmVyc2lvblN0ciwgc2hvcnQgbGVuKTsK
KworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKKyNlbmRpZiAvKiBXRUJSVENf
TU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0c3MjJfRzcyMl9JTlRFUkZBQ0VfSF8gKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL3Rlc3QvdGVzdEc3MjIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvZzcyMi90ZXN0L3Rlc3RHNzIyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NWEyZWIzNTcyMTc1Y2RlMWRm
M2Q2NTI3YWQ1MDUwNDliMjA3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcy
Mi90ZXN0L3Rlc3RHNzIyLmNjCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworLyoKKyAqIHRlc3RHNzIyLmNwcCA6IERlZmluZXMgdGhlIGVudHJ5IHBvaW50IGZvciB0
aGUgY29uc29sZSBhcHBsaWNhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs
dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJ3ZWJydGMvdHlw
ZWRlZnMuaCIKKworLyogaW5jbHVkZSBBUEkgKi8KKyNpbmNsdWRlICJ3ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2c3MjIvZzcyMl9pbnRlcmZhY2UuaCIKKworLyogUnVudGltZSBz
dGF0aXN0aWNzICovCisjaW5jbHVkZSA8dGltZS5oPgorI2RlZmluZSBDTE9DS1NfUEVSX1NFQ19H
NzIyICAxMDAwMDAKKworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbgordHlwZWRlZiBzdHJ1Y3QgV2Vi
UnRjRzcyMkVuY0luc3QgICAgRzcyMkVuY0luc3Q7Cit0eXBlZGVmIHN0cnVjdCBXZWJSdGNHNzIy
RGVjSW5zdCAgICBHNzIyRGVjSW5zdDsKKworLyogZnVuY3Rpb24gZm9yIHJlYWRpbmcgYXVkaW8g
ZGF0YSBmcm9tIFBDTSBmaWxlICovCitib29sIHJlYWRmcmFtZShpbnQxNl90ICpkYXRhLCBGSUxF
ICppbnAsIHNpemVfdCBsZW5ndGgpCit7CisgICAgc2l6ZV90IHJsZW4gPSBmcmVhZChkYXRhLCBz
aXplb2YoaW50MTZfdCksIGxlbmd0aCwgaW5wKTsKKyAgICBpZiAocmxlbiA+PSBsZW5ndGgpCisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbWVtc2V0KGRhdGEgKyBybGVuLCAwLCAobGVuZ3RoIC0g
cmxlbikgKiBzaXplb2YoaW50MTZfdCkpOworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKQoreworICAgIGNoYXIgaW5uYW1lWzYwXSwgb3V0Yml0
WzQwXSwgb3V0bmFtZVs0MF07CisgICAgRklMRSAqaW5wLCAqb3V0Yml0cCwgKm91dHA7CisKKyAg
ICBpbnQgZnJhbWVjbnQ7CisgICAgYm9vbCBlbmRmaWxlOworICAgIHNpemVfdCBmcmFtZWxlbmd0
aCA9IDE2MDsKKyAgICBHNzIyRW5jSW5zdCAqRzcyMmVuY19pbnN0OworICAgIEc3MjJEZWNJbnN0
ICpHNzIyZGVjX2luc3Q7CisKKyAgICAvKiBSdW50aW1lIHN0YXRpc3RpY3MgKi8KKyAgICBkb3Vi
bGUgc3RhcnR0aW1lOworICAgIGRvdWJsZSBydW50aW1lID0gMDsKKyAgICBkb3VibGUgbGVuZ3Ro
X2ZpbGU7CisKKyAgICBzaXplX3Qgc3RyZWFtX2xlbiA9IDA7CisgICAgaW50MTZfdCBzaG9ydGRh
dGFbOTYwXTsKKyAgICBpbnQxNl90IGRlY29kZWRbOTYwXTsKKyAgICB1aW50OF90IHN0cmVhbWRh
dGFbODAgKiA2XTsKKyAgICBpbnQxNl90IHNwZWVjaFR5cGVbMV07CisKKyAgICAvKiBoYW5kbGlu
ZyB3cm9uZyBpbnB1dCBhcmd1bWVudHMgaW4gdGhlIGNvbW1hbmQgbGluZSAqLworICAgIGlmIChh
cmdjIT01KSAgeworICAgICAgICBwcmludGYoIlxuXG5Xcm9uZyBudW1iZXIgb2YgYXJndW1lbnRz
IG9yIGZsYWcgdmFsdWVzLlxuXG4iKTsKKworICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAg
IHByaW50ZigiVXNhZ2U6XG5cbiIpOworICAgICAgICBwcmludGYoIi4vdGVzdEc3MjIuZXhlIGZy
YW1lbGVuZ3RoIGluZmlsZSBvdXRiaXRmaWxlIG91dHNwZWVjaGZpbGUgXG5cbiIpOworICAgICAg
ICBwcmludGYoIndpdGg6XG4iKTsKKyAgICAgICAgcHJpbnRmKCJmcmFtZWxlbmd0aCAgOiAgICBG
cmFtZWxlbmd0aCBpbiBzYW1wbGVzLlxuXG4iKTsKKyAgICAgICAgcHJpbnRmKCJpbmZpbGUgICAg
ICAgOiAgICBOb3JtYWwgc3BlZWNoIGlucHV0IGZpbGVcblxuIik7CisgICAgICAgIHByaW50Zigi
b3V0Yml0ZmlsZSAgIDogICAgQml0c3RyZWFtIG91dHB1dCBmaWxlXG5cbiIpOworICAgICAgICBw
cmludGYoIm91dHNwZWVjaGZpbGU6ICAgIFNwZWVjaCBvdXRwdXQgZmlsZVxuXG4iKTsKKyAgICAg
ICAgZXhpdCgwKTsKKworICAgIH0KKworICAgIC8qIEdldCBmcmFtZSBsZW5ndGggKi8KKyAgICBp
bnQgZnJhbWVsZW5ndGhfaW50ID0gYXRvaShhcmd2WzFdKTsKKyAgICBpZiAoZnJhbWVsZW5ndGhf
aW50IDwgMCkgeworICAgICAgICBwcmludGYoIiAgRy43MjI6IEludmFsaWQgZnJhbWVsZW5ndGgg
JWQuXG4iLCBmcmFtZWxlbmd0aF9pbnQpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICBm
cmFtZWxlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWVsZW5ndGhfaW50KTsKKworICAg
IC8qIEdldCBJbnB1dCBhbmQgT3V0cHV0IGZpbGVzICovCisgICAgc3NjYW5mKGFyZ3ZbMl0sICIl
cyIsIGlubmFtZSk7CisgICAgc3NjYW5mKGFyZ3ZbM10sICIlcyIsIG91dGJpdCk7CisgICAgc3Nj
YW5mKGFyZ3ZbNF0sICIlcyIsIG91dG5hbWUpOworCisgICAgaWYgKChpbnAgPSBmb3Blbihpbm5h
bWUsInJiIikpID09IE5VTEwpIHsKKyAgICAgICAgcHJpbnRmKCIgIEcuNzIyOiBDYW5ub3QgcmVh
ZCBmaWxlICVzLlxuIiwgaW5uYW1lKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgaWYg
KChvdXRiaXRwID0gZm9wZW4ob3V0Yml0LCJ3YiIpKSA9PSBOVUxMKSB7CisgICAgICAgIHByaW50
ZigiICBHLjcyMjogQ2Fubm90IHdyaXRlIGZpbGUgJXMuXG4iLCBvdXRiaXQpOworICAgICAgICBl
eGl0KDEpOworICAgIH0KKyAgICBpZiAoKG91dHAgPSBmb3BlbihvdXRuYW1lLCJ3YiIpKSA9PSBO
VUxMKSB7CisgICAgICAgIHByaW50ZigiICBHLjcyMjogQ2Fubm90IHdyaXRlIGZpbGUgJXMuXG4i
LCBvdXRuYW1lKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgcHJpbnRmKCJcbklucHV0
OiVzXG5PdXRwdXQgYml0c3RyZWFtOiVzXG5PdXRwdXQ6JXNcbiIsIGlubmFtZSwgb3V0Yml0LCBv
dXRuYW1lKTsKKworICAgIC8qIENyZWF0ZSBhbmQgaW5pdCAqLworICAgIFdlYlJ0Y0c3MjJfQ3Jl
YXRlRW5jb2RlcigoRzcyMkVuY0luc3QgKiopJkc3MjJlbmNfaW5zdCk7CisgICAgV2ViUnRjRzcy
Ml9DcmVhdGVEZWNvZGVyKChHNzIyRGVjSW5zdCAqKikmRzcyMmRlY19pbnN0KTsKKyAgICBXZWJS
dGNHNzIyX0VuY29kZXJJbml0KChHNzIyRW5jSW5zdCAqKUc3MjJlbmNfaW5zdCk7CisgICAgV2Vi
UnRjRzcyMl9EZWNvZGVySW5pdCgoRzcyMkRlY0luc3QgKilHNzIyZGVjX2luc3QpOworCisKKyAg
ICAvKiBJbml0aWFsaXplIGVuY29kZXIgYW5kIGRlY29kZXIgKi8KKyAgICBmcmFtZWNudCA9IDA7
CisgICAgZW5kZmlsZSA9IGZhbHNlOworICAgIHdoaWxlICghZW5kZmlsZSkgeworICAgICAgICBm
cmFtZWNudCsrOworCisgICAgICAgIC8qIFJlYWQgc3BlZWNoIGJsb2NrICovCisgICAgICAgIGVu
ZGZpbGUgPSByZWFkZnJhbWUoc2hvcnRkYXRhLCBpbnAsIGZyYW1lbGVuZ3RoKTsKKworICAgICAg
ICAvKiBTdGFydCBjbG9jayBiZWZvcmUgY2FsbCB0byBlbmNvZGVyIGFuZCBkZWNvZGVyICovCisg
ICAgICAgIHN0YXJ0dGltZSA9IGNsb2NrKCkvKGRvdWJsZSlDTE9DS1NfUEVSX1NFQ19HNzIyOwor
CisgICAgICAgIC8qIEcuNzIyIGVuY29kaW5nICsgZGVjb2RpbmcgKi8KKyAgICAgICAgc3RyZWFt
X2xlbiA9IFdlYlJ0Y0c3MjJfRW5jb2RlKChHNzIyRW5jSW5zdCAqKUc3MjJlbmNfaW5zdCwgc2hv
cnRkYXRhLCBmcmFtZWxlbmd0aCwgc3RyZWFtZGF0YSk7CisgICAgICAgIFdlYlJ0Y0c3MjJfRGVj
b2RlKEc3MjJkZWNfaW5zdCwgc3RyZWFtZGF0YSwgc3RyZWFtX2xlbiwgZGVjb2RlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3BlZWNoVHlwZSk7CisKKyAgICAgICAgLyogU3RvcCBjbG9j
ayBhZnRlciBjYWxsIHRvIGVuY29kZXIgYW5kIGRlY29kZXIgKi8KKyAgICAgICAgcnVudGltZSAr
PSAoZG91YmxlKSgoY2xvY2soKS8oZG91YmxlKUNMT0NLU19QRVJfU0VDX0c3MjIpLXN0YXJ0dGlt
ZSk7CisKKyAgICAgICAgLyogV3JpdGUgY29kZWQgYml0cyB0byBmaWxlICovCisgICAgICAgIGlm
IChmd3JpdGUoc3RyZWFtZGF0YSwgc2l6ZW9mKHNob3J0KSwgc3RyZWFtX2xlbiAvIDIsIG91dGJp
dHApICE9CisgICAgICAgICAgICBzdHJlYW1fbGVuIC8gMikgeworICAgICAgICAgIHJldHVybiAt
MTsKKyAgICAgICAgfQorICAgICAgICAvKiBXcml0ZSBjb2RlZCBzcGVlY2ggdG8gZmlsZSAqLwor
ICAgICAgICBpZiAoZndyaXRlKGRlY29kZWQsIHNpemVvZihzaG9ydCksIGZyYW1lbGVuZ3RoLCBv
dXRwKSAhPQorICAgICAgICAgICAgZnJhbWVsZW5ndGgpIHsKKyAgICAgICAgICByZXR1cm4gLTE7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJSdGNHNzIyX0ZyZWVFbmNvZGVyKChHNzIyRW5j
SW5zdCAqKUc3MjJlbmNfaW5zdCk7CisgICAgV2ViUnRjRzcyMl9GcmVlRGVjb2RlcigoRzcyMkRl
Y0luc3QgKilHNzIyZGVjX2luc3QpOworCisgICAgbGVuZ3RoX2ZpbGUgPSAoKGRvdWJsZSlmcmFt
ZWNudCooZG91YmxlKWZyYW1lbGVuZ3RoLzE2MDAwKTsKKyAgICBwcmludGYoIlxuXG5MZW5ndGgg
b2Ygc3BlZWNoIGZpbGU6ICUuMWYgc1xuIiwgbGVuZ3RoX2ZpbGUpOworICAgIHByaW50ZigiVGlt
ZSB0byBydW4gRy43MjI6ICAgICAgJS4yZiBzICglLjJmICUlIG9mIHJlYWx0aW1lKVxuXG4iLCBy
dW50aW1lLCAoMTAwKnJ1bnRpbWUvbGVuZ3RoX2ZpbGUpKTsKKyAgICBwcmludGYoIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLUVORC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCisgICAgZmNsb3Nl
KGlucCk7CisgICAgZmNsb3NlKG91dGJpdHApOworICAgIGZjbG9zZShvdXRwKTsKKworICAgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndl
YnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyMTViMWIwMTBk
NGZmYzA1ZmFhMzUwNTFhZjAxYjg3MjhlMGQ5NjUuLmM3MzlmYjUwOGQ1ODk1ZTE2N2RmY2I3YTgx
Yjc4OWNmNTU4ZmQ4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9s
aWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxLDYg
KzIxLDIzIEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJNDE0MEI4MjAxRTRFMzM4MzAwNzQwOUU2IC8q
IGF1ZGlvX2VuY29kZXJfcGNtLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0MEI4MTgxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNt
LmNjICovOyB9OworCQk0MTQwQjgyMTFFNEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9w
Y20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBC
ODE5MUU0RTMzODMwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX3BjbS5oICovOyB9OworCQk0MTQw
QjgyMjFFNEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9wY20uY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQwQjgxQTFFNEUzMzgzMDA3NDA5
RTYgLyogYXVkaW9fZGVjb2Rlcl9wY20uY2MgKi87IH07CisJCTQxNDBCODIzMUU0RTMzODMwMDc0
MDlFNiAvKiBhdWRpb19kZWNvZGVyX3BjbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE0MEI4MUIxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2RlY29k
ZXJfcGNtLmggKi87IH07CisJCTQxNDBCODI0MUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVy
ZmFjZS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0
MEI4MUMxRTRFMzM4MzAwNzQwOUU2IC8qIGc3MTFfaW50ZXJmYWNlLmMgKi87IH07CisJCTQxNDBC
ODI1MUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0MEI4MUQxRTRFMzM4MzAwNzQwOUU2IC8q
IGc3MTFfaW50ZXJmYWNlLmggKi87IH07CisJCTQxNDBCODI2MUU0RTMzODMwMDc0MDlFNiAvKiBn
NzExLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQw
QjgxRTFFNEUzMzgzMDA3NDA5RTYgLyogZzcxMS5jICovOyB9OworCQk0MTQwQjgyNzFFNEUzMzgz
MDA3NDA5RTYgLyogZzcxMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE0MEI4MUYxRTRFMzM4MzAwNzQwOUU2IC8qIGc3MTEuaCAqLzsgfTsKKwkJNDE0
MEI4MzExRTRFMzM5NjAwNzQwOUU2IC8qIGF1ZGlvX2RlY29kZXJfZzcyMi5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODI4MUU0RTMzOTYwMDc0
MDlFNiAvKiBhdWRpb19kZWNvZGVyX2c3MjIuY2MgKi87IH07CisJCTQxNDBCODMyMUU0RTMzOTYw
MDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX2c3MjIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODI5MUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19k
ZWNvZGVyX2c3MjIuaCAqLzsgfTsKKwkJNDE0MEI4MzMxRTRFMzM5NjAwNzQwOUU2IC8qIGF1ZGlv
X2VuY29kZXJfZzcyMi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNDBCODJBMUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX2c3MjIuY2Mg
Ki87IH07CisJCTQxNDBCODM0MUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX2c3MjIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODJC
MUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX2c3MjIuaCAqLzsgfTsKKwkJNDE0MEI4
MzUxRTRFMzM5NjAwNzQwOUU2IC8qIGc3MjJfZGVjb2RlLmMgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQwQjgyQzFFNEUzMzk2MDA3NDA5RTYgLyogZzcy
Ml9kZWNvZGUuYyAqLzsgfTsKKwkJNDE0MEI4MzYxRTRFMzM5NjAwNzQwOUU2IC8qIGc3MjJfZW5j
X2RlYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0
MEI4MkQxRTRFMzM5NjAwNzQwOUU2IC8qIGc3MjJfZW5jX2RlYy5oICovOyB9OworCQk0MTQwQjgz
NzFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9lbmNvZGUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODJFMUU0RTMzOTYwMDc0MDlFNiAvKiBnNzIy
X2VuY29kZS5jICovOyB9OworCQk0MTQwQjgzODFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9pbnRl
cmZhY2UuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NDBCODJGMUU0RTMzOTYwMDc0MDlFNiAvKiBnNzIyX2ludGVyZmFjZS5jICovOyB9OworCQk0MTQw
QjgzOTFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODMwMUU0RTMzOTYwMDc0MDlFNiAv
KiBnNzIyX2ludGVyZmFjZS5oICovOyB9OwogCQk0MTRENzExNDFFNEFFOThDMDAyM0U1MjYgLyog
dXNlcl9zb2NrZXQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNEQ3MTEyMUU0QUU5ODIwMDIzRTUyNiAvKiB1c2VyX3NvY2tldC5jICovOyB9OwogCQk0
MTRENzExNzFFNEFFQUZCMDAyM0U1MjYgLyogc2N0cF9pbmRhdGEuYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEQ3MTE1MUU0QUVBQ0QwMDIzRTUyNiAv
KiBzY3RwX2luZGF0YS5jICovOyB9OwogCQk0MTRENzExOTFFNEFFQjExMDAyM0U1MjYgLyogc2N0
cF91c2Vyc3BhY2UuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNEQ3MTE4MUU0QUVCMTEwMDIzRTUyNiAvKiBzY3RwX3VzZXJzcGFjZS5jICovOyB9OwpA
QCAtMjc0NSw2ICsyNzYyLDIzIEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk0MTQwQjgx
ODFFNEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9wY20uY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhdWRpb19lbmNvZGVyX3BjbS5jYzsgcGF0aCA9IGc3MTEv
YXVkaW9fZW5jb2Rlcl9wY20uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDBC
ODE5MUU0RTMzODMwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX3BjbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBhdWRpb19lbmNvZGVyX3BjbS5oOyBwYXRoID0gZzcxMS9hdWRp
b19lbmNvZGVyX3BjbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQwQjgxQTFF
NEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9wY20uY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBhdWRpb19kZWNvZGVyX3BjbS5jYzsgcGF0aCA9IGc3MTEvYXVk
aW9fZGVjb2Rlcl9wY20uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDBCODFC
MUU0RTMzODMwMDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX3BjbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBhdWRpb19kZWNvZGVyX3BjbS5oOyBwYXRoID0gZzcxMS9hdWRpb19k
ZWNvZGVyX3BjbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQwQjgxQzFFNEUz
MzgzMDA3NDA5RTYgLyogZzcxMV9pbnRlcmZhY2UuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5j
OyBuYW1lID0gZzcxMV9pbnRlcmZhY2UuYzsgcGF0aCA9IGc3MTEvZzcxMV9pbnRlcmZhY2UuYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MEI4MUQxRTRFMzM4MzAwNzQwOUU2IC8q
IGc3MTFfaW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGc3MTFf
aW50ZXJmYWNlLmg7IHBhdGggPSBnNzExL2c3MTFfaW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNDBCODFFMUU0RTMzODMwMDc0MDlFNiAvKiBnNzExLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGc3MTEuYzsgcGF0aCA9IGc3MTEvZzcxMS5jOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQwQjgxRjFFNEUzMzgzMDA3NDA5RTYgLyog
ZzcxMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnNzExLmg7IHBhdGggPSBn
NzExL2c3MTEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MEI4MjgxRTRFMzM5
NjAwNzQwOUU2IC8qIGF1ZGlvX2RlY29kZXJfZzcyMi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IGF1ZGlvX2RlY29kZXJfZzcyMi5jYzsgcGF0aCA9IGc3MjIvYXVkaW9f
ZGVjb2Rlcl9nNzIyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQwQjgyOTFF
NEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IGF1ZGlvX2RlY29kZXJfZzcyMi5oOyBwYXRoID0gZzcyMi9hdWRpb19k
ZWNvZGVyX2c3MjIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MEI4MkExRTRF
MzM5NjAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfZzcyMi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IGF1ZGlvX2VuY29kZXJfZzcyMi5jYzsgcGF0aCA9IGc3MjIvYXVk
aW9fZW5jb2Rlcl9nNzIyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQwQjgy
QjFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IGF1ZGlvX2VuY29kZXJfZzcyMi5oOyBwYXRoID0gZzcyMi9hdWRp
b19lbmNvZGVyX2c3MjIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MEI4MkMx
RTRFMzM5NjAwNzQwOUU2IC8qIGc3MjJfZGVjb2RlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgbmFtZSA9IGc3MjJfZGVjb2RlLmM7IHBhdGggPSBnNzIyL2c3MjJfZGVjb2RlLmM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDBCODJEMUU0RTMzOTYwMDc0MDlFNiAvKiBnNzIy
X2VuY19kZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZzcyMl9lbmNfZGVj
Lmg7IHBhdGggPSBnNzIyL2c3MjJfZW5jX2RlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQwQjgyRTFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9lbmNvZGUuYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gZzcyMl9lbmNvZGUuYzsgcGF0aCA9IGc3MjIvZzcyMl9l
bmNvZGUuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MEI4MkYxRTRFMzM5NjAw
NzQwOUU2IC8qIGc3MjJfaW50ZXJmYWNlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFt
ZSA9IGc3MjJfaW50ZXJmYWNlLmM7IHBhdGggPSBnNzIyL2c3MjJfaW50ZXJmYWNlLmM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDBCODMwMUU0RTMzOTYwMDc0MDlFNiAvKiBnNzIy
X2ludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnNzIyX2ludGVy
ZmFjZS5oOyBwYXRoID0gZzcyMi9nNzIyX2ludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTRENzExMjFFNEFFOTgyMDAyM0U1MjYgLyogdXNlcl9zb2NrZXQuYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gdXNlcl9zb2NrZXQuYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE0RDcxMTUxRTRBRUFDRDAwMjNFNTI2IC8qIHNjdHBfaW5kYXRh
LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHNjdHBfaW5kYXRhLmM7IHBhdGgg
PSBuZXRpbmV0L3NjdHBfaW5kYXRhLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NEQ3MTE4MUU0QUVCMTEwMDIzRTUyNiAvKiBzY3RwX3VzZXJzcGFjZS5jICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmM7IG5hbWUgPSBzY3RwX3VzZXJzcGFjZS5jOyBwYXRoID0gbmV0aW5ldC9zY3Rw
X3VzZXJzcGFjZS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMxOSw2ICs1MzUz
LDM3IEBACiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTQxNDBCODE2MUU0RTMzNUUwMDc0MDlFNiAvKiBn
NzExICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTQw
QjgxODFFNEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9wY20uY2MgKi8sCisJCQkJNDE0
MEI4MTkxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmggKi8sCisJCQkJNDE0
MEI4MUExRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2RlY29kZXJfcGNtLmNjICovLAorCQkJCTQx
NDBCODFCMUU0RTMzODMwMDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX3BjbS5oICovLAorCQkJCTQx
NDBCODFDMUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVyZmFjZS5jICovLAorCQkJCTQxNDBC
ODFEMUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVyZmFjZS5oICovLAorCQkJCTQxNDBCODFF
MUU0RTMzODMwMDc0MDlFNiAvKiBnNzExLmMgKi8sCisJCQkJNDE0MEI4MUYxRTRFMzM4MzAwNzQw
OUU2IC8qIGc3MTEuaCAqLywKKwkJCSk7CisJCQluYW1lID0gZzcxMTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTQxNDBCODE3MUU0RTMzNjUwMDc0MDlFNiAvKiBnNzIyICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTQwQjgyODFF
NEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmNjICovLAorCQkJCTQxNDBCODI5
MUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX2c3MjIuaCAqLywKKwkJCQk0MTQwQjgy
QTFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyLmNjICovLAorCQkJCTQxNDBC
ODJCMUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX2c3MjIuaCAqLywKKwkJCQk0MTQw
QjgyQzFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9kZWNvZGUuYyAqLywKKwkJCQk0MTQwQjgyRDFF
NEUzMzk2MDA3NDA5RTYgLyogZzcyMl9lbmNfZGVjLmggKi8sCisJCQkJNDE0MEI4MkUxRTRFMzM5
NjAwNzQwOUU2IC8qIGc3MjJfZW5jb2RlLmMgKi8sCisJCQkJNDE0MEI4MkYxRTRFMzM5NjAwNzQw
OUU2IC8qIGc3MjJfaW50ZXJmYWNlLmMgKi8sCisJCQkJNDE0MEI4MzAxRTRFMzM5NjAwNzQwOUU2
IC8qIGc3MjJfaW50ZXJmYWNlLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGc3MjI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1QzA4ODUxMTFFNEE5OUMyMDA0MDM5OTUgLyog
aW5jbHVkZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC03
NTQyLDYgKzc2MDcsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk1Q0REOEM5RDFFNDNDNkVCMDA2MjFFOTIgLyogY25nICovLAorCQkJCTQxNDBCODE2MUU0RTMz
NUUwMDc0MDlFNiAvKiBnNzExICovLAorCQkJCTQxNDBCODE3MUU0RTMzNjUwMDc0MDlFNiAvKiBn
NzIyICovLAogCQkJCTVDREQ4QUQ2MUU0M0MyOUYwMDYyMUU5MiAvKiBpbGJjICovLAogCQkJCTVD
REQ4NzZEMUU0M0JCN0UwMDYyMUU5MiAvKiBpc2FjICovLAogCQkJCTVDREQ4QzUyMUU0M0M1Rjcw
MDYyMUU5MiAvKiBvcHVzICovLApAQCAtOTY4NCw2ICs5NzUxLDcgQEAKIAkJCQk1QzYzRjdDNjFF
NDE2Mjg4MDAyQ0E1MzEgLyogY29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODk0MjFF
NDNCRjNBMDA2MjFFOTIgLyogY29tbW9uX2hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2
Q0RENEMxRTQxMzU5ODAwOTc1NEUzIC8qIGNvbW1vbl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE0MEI4MzkxRTRFMzM5NjAwNzQwOUU2IC8qIGc3MjJfaW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEI4NzFFNDNDMkI1MDA2MjFFOTIgLyogY29tcF9jb3JyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODY0NjFFNDNCOEI1MDA2MjFFOTIgLyogY29tcGxleF9mZnRfdGFi
bGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOTA3ODFFNDNEMTVDMDA2MjFFOTIgLyogY29t
cGxleF9tYXRyaXguaCBpbiBIZWFkZXJzICovLApAQCAtOTk4Miw2ICsxMDA1MCw3IEBACiAJCQkJ
NUNERDg3MkIxRTQzQkFCRTAwNjIxRTkyIC8qIG5vaXNlX2dtbV90YWJsZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ5MDJBMUU0M0NFREUwMDYyMUU5MiAvKiBub2lzZV9sZXZlbF9lc3RpbWF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ5MDJDMUU0M0NFREUwMDYyMUU5MiAvKiBub2lz
ZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDBCODM2MUU0RTMz
OTYwMDc0MDlFNiAvKiBnNzIyX2VuY19kZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NUZG
MUU0M0I4NEUwMDYyMUU5MiAvKiBub2lzZV9zdXBwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg0RUExRTQzQjBCNjAwNjIxRTkyIC8qIG5vaXNlX3N1cHByZXNzaW9uX2ltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4NUZEMUU0M0I4NEUwMDYyMUU5MiAvKiBub2lzZV9zdXBw
cmVzc2lvbl94LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDYyLDYgKzEwMTMxLDcgQEAKIAkJCQk1
Q0REOEJEODFFNDNDMkI1MDA2MjFFOTIgLyogcG9seV90b19sc3AuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDRkQ1NDY0MUU0QzU1RDIwMDQ4MjkwOCAvKiBSVENBdWRpb1NvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUM2M0Y5RjgxRTQxNzRGNjAwMkNBNTMxIC8qIHBvcnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxNDBCODI1MUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5RkIxRTQxNzRGNjAwMkNBNTMxIC8qIHBvcnRhbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOUZDMUU0MTc0RjYwMDJDQTUzMSAvKiBwb3J0
aW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE0NjFFNDNCRkIzMDA2MjFFOTIg
LyogcG9zdF9kZWNvZGVfdmFkLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTA3LDExICsxMDE3Nywx
NCBAQAogCQkJCTVDREQ4QkRBMUU0M0MyQjUwMDYyMUU5MiAvKiByZWZpbmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzYzRkEwMjFFNDE3NEY2MDAyQ0E1MzEgLyogcmVsYXlwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzYzRkEwNTFFNDE3NEY2MDAyQ0E1MzEgLyogcmVsYXlzZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxNDBCODM0MUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19lbmNv
ZGVyX2c3MjIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDBCODIxMUU0RTMzODMwMDc0MDlFNiAv
KiBhdWRpb19lbmNvZGVyX3BjbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg5NjIxRTQzQkYz
QTAwNjIxRTkyIC8qIHJlbWIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4RkRDMUU0M0NENjYw
MDYyMUU5MiAvKiByZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3JfYWJzX3NlbmRfdGltZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDhGREUxRTQzQ0Q2NjAwNjIxRTkyIC8qIHJlbW90ZV9iaXRyYXRl
X2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZFMjFF
NDNDRDY2MDA2MjFFOTIgLyogcmVtb3RlX2VzdGltYXRvcl9wcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM2M0Y5NjMxRTQxNzM3QjAwMkNBNTMxIC8qIHJlbW90ZWF1ZGlvc291cmNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTQwQjgzMjFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rl
cl9nNzIyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODRCQzFFNDNBRjEzMDA2MjFFOTIgLyog
cmVuZGVyX3F1ZXVlX2l0ZW1fdmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NTE5
MUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4OTY1MUU0M0JGM0EwMDYyMUU5MiAvKiByZXBvcnRfYmxvY2suaCBpbiBIZWFkZXJzICovLApA
QCAtMTAxMzcsNiArMTAyMTAsNyBAQAogCQkJCTVDNEI0QkMxMUU0MzFDOTAwMDI2NTFDOCAvKiBS
VENBdWRpb1NvdXJjZStQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNEJDMzFFNDMx
QzkwMDAyNjUxQzggLyogUlRDQXVkaW9UcmFjaytQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzRCNEJDNTFFNDMxQzkwMDAyNjUxQzggLyogUlRDQVZGb3VuZGF0aW9uVmlkZW9Tb3VyY2Ur
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0MEI4MjMxRTRFMzM4MzAwNzQwOUU2IC8q
IGF1ZGlvX2RlY29kZXJfcGNtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjg2NTFFNDE2Mjg4
MDAyQ0E1MzEgLyogcnRjY2VydGlmaWNhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGODY3
MUU0MTYyODgwMDJDQTUzMSAvKiBydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUM0QjRCQzgxRTQzMUM5MDAwMjY1MUM4IC8qIFJUQ0NvbmZpZ3VyYXRpb24rUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDMwMCw2ICsxMDM3NCw3IEBACiAJCQkJNUM0QjQ4
RjUxRTQyQzFFMzAwMjY1MUM4IC8qIHN0cmVhbXBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUM2M0Y4OUIxRTQxNjI4ODAwMkNBNTMxIC8qIHN0cmluZ2VuY29kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM2M0Y4OUQxRTQxNjI4ODAwMkNBNTMxIC8qIHN0cmluZ3V0aWxzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTQwQjgyNzFFNEUzMzgzMDA3NDA5RTYgLyogZzcxMS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDg3REExRTQzQkMwNjAwNjIxRTkyIC8qIHN0cnVjdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDNjNGQTBDMUU0MTc0RjYwMDJDQTUzMSAvKiBzdHVuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzYzRkEwRjFFNDE3NEY2MDAyQ0E1MzEgLyogc3R1bnBvcnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTE0NTgsNiArMTE1MzMsNyBAQAogCQkJCTVDREQ4NjQ0MUU0M0I4QjUwMDYyMUU5
MiAvKiBjb21wbGV4X2JpdF9yZXZlcnNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0NzFF
NDNCOEI1MDA2MjFFOTIgLyogY29tcGxleF9mZnQuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
OTQ0MUU0M0JGM0EwMDYyMUU5MiAvKiBjb21wb3VuZF9wYWNrZXQuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MTQwQjgzNzFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9lbmNvZGUuYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4RkVCMUU0M0NEQ0EwMDYyMUU5MiAvKiBjb25maWcuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1QzZDREQ0RDFFNDEzNTk4MDA5NzU0RTMgLyogY29uZmlnLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhGQjIxRTQzQ0QwNzAwNjIxRTkyIC8qIGNvbmdlc3Rpb25fY29udHJv
bGxlci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTE1NTAsNiArMTE2MjYsNyBAQAogCQkJCTVDNEI0
Q0Q0MUU0MzIwQTkwMDI2NTFDOCAvKiBmaWxlX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODRERjFFNDNCMDREMDA2MjFFOTIgLyogZmlsZV9wbGF5ZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1QzYzRjdFMzFFNDE2Mjg4MDAyQ0E1MzEgLyogZmlsZV9wb3NpeC5jYyBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNDBCODMxMUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX2c3MjIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRFMDFFNDNCMDREMDA2MjFFOTIgLyogZmlsZV9y
ZWNvcmRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzhCMUU0M0M2NjAwMDYyMUU5MiAv
KiBmaWxlX3V0aWxzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0Y3RTYxRTQxNjI4ODAwMkNB
NTMxIC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5jYyBpbiBTb3VyY2VzICovLApAQCAtMTE1ODMsNiAr
MTE2NjAsNyBAQAogCQkJCTVDREQ4NEIyMUU0M0FGMTMwMDYyMUU5MiAvKiBnYWluX2NvbnRyb2xf
Zm9yX2V4cGVyaW1lbnRhbF9hZ2MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCNDFFNDNB
RjEzMDA2MjFFOTIgLyogZ2Fpbl9jb250cm9sX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEJBNDFFNDNDMkI1MDA2MjFFOTIgLyogZ2Fpbl9kZXF1YW50LmMgaW4gU291cmNlcyAqLywK
KwkJCQk0MTQwQjgzMzFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQTYxRTQzQzJCNTAwNjIxRTkyIC8qIGdhaW5fcXVhbnQu
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ5MDIyMUU0M0NFREUwMDYyMUU5MiAvKiBnYWluX3Nl
bGVjdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRDUxRTQzOUE2RjAwNjIxRTkyIC8q
IGdlbmVyaWNfZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTE1OTYsNiArMTE2NzQsNyBA
QAogCQkJCTVDREQ4NTU4MUU0M0I0MkIwMDYyMUU5MiAvKiBoMjY0LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDgzNTQxRTQzMjU3MjAwNjIxRTkyIC8qIGgyNjRfYml0c3RyZWFtX3BhcnNlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzU2MUU0MzI1NzIwMDYyMUU5MiAvKiBoMjY0X2Nv
bW1vbi5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDBCODI0MUU0RTMzODMwMDc0MDlFNiAvKiBn
NzExX2ludGVyZmFjZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1NTAxRTQzQjQyQjAwNjIx
RTkyIC8qIGgyNjRfb2JqYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0Q5MUU0MzlBNkYw
MDYyMUU5MiAvKiBoMjY0X3Nwc19wcHNfdHJhY2tlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
NEI0QkI3MUU0MzFDOTAwMDI2NTFDOCAvKiBoMjY0X3ZpZGVvX3Rvb2xib3hfZGVjb2Rlci5jYyBp
biBTb3VyY2VzICovLApAQCAtMTE5OTQsNiArMTIwNzMsNyBAQAogCQkJCTVDREQ4NUJDMUU0M0I1
QzAwMDYyMUU5MiAvKiBzdGF0c19jb3VudGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0Y5
NzAxRTQxNzM3QjAwMkNBNTMxIC8qIHN0YXRzY29sbGVjdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUM2M0Y5NzIxRTQxNzM3QjAwMkNBNTMxIC8qIHN0YXRzdHlwZXMuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MTQwQjgzODFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9pbnRlcmZhY2UuYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDNjNGODk4MUU0MTYyODgwMDJDQTUzMSAvKiBzdHJlYW0uY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODVCRjFFNDNCNUMwMDA2MjFFOTIgLyogc3RyZWFtX3N5bmNo
cm9uaXphdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEY0MUU0MkMxRTMwMDI2NTFD
OCAvKiBzdHJlYW1wYXJhbXMuY2MgaW4gU291cmNlcyAqLywKQEAgLTEyMDE5LDYgKzEyMDk5LDgg
QEAKIAkJCQk1Q0REODRDMzFFNDNBRjEzMDA2MjFFOTIgLyogdGhyZWVfYmFuZF9maWx0ZXJfYmFu
ay5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTU3MUU0M0JGQjMwMDYyMUU5MiAvKiB0aWNr
X3RpbWVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3RjcxRTQzQkRFRDAwNjIxRTkyIC8q
IHRpbWVfc2NoZWR1bGVyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0MEI4MjYxRTRFMzM4MzAw
NzQwOUU2IC8qIGc3MTEuYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDBCODIyMUU0RTMzODMwMDc0
MDlFNiAvKiBhdWRpb19kZWNvZGVyX3BjbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTVB
MUU0M0JGQjMwMDYyMUU5MiAvKiB0aW1lX3N0cmV0Y2guY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODhEQTFFNDNCRTNEMDA2MjFFOTIgLyogdGltZV91dGlsLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUM0QjRDRTkxRTQzMjBBOTAwMjY1MUM4IC8qIHRpbWVzdGFtcF9leHRyYXBvbGF0b3IuY2Mg
aW4gU291cmNlcyAqLywKQEAgLTEyMDY0LDYgKzEyMTQ2LDcgQEAKIAkJCQk1Q0REODZFMzFFNDNC
QTI4MDA2MjFFOTIgLyogdmFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3M0ExRTQzQkFC
RTAwNjIxRTkyIC8qIHZhZF9hdWRpb19wcm9jLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3
M0QxRTQzQkFCRTAwNjIxRTkyIC8qIHZhZF9jaXJjdWxhcl9idWZmZXIuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MTQwQjgzNTFFNEUzMzk2MDA3NDA5RTYgLyogZzcyMl9kZWNvZGUuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4NkQ2MUU0M0JBMjgwMDYyMUU5MiAvKiB2YWRfY29yZS5jIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDg2RDkxRTQzQkEyODAwNjIxRTkyIC8qIHZhZF9maWx0ZXJiYW5r
LmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZEQzFFNDNCQTI4MDA2MjFFOTIgLyogdmFkX2dt
bS5jIGluIFNvdXJjZXMgKi8sCkBAIC0xMjEwMyw2ICsxMjE4Niw3IEBACiAJCQkJNUNERDg0N0Ix
RTQzQUUyOTAwNjIxRTkyIC8qIHZvZV9uZXR3b3JrX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODQ3RDFFNDNBRTI5MDA2MjFFOTIgLyogdm9lX3J0cF9ydGNwX2ltcGwuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODQ3RjFFNDNBRTI5MDA2MjFFOTIgLyogdm9lX3ZpZGVvX3N5bmNf
aW1wbC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDBCODIwMUU0RTMzODMwMDc0MDlFNiAvKiBh
dWRpb19lbmNvZGVyX3BjbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NDgxMUU0M0FFMjkw
MDYyMUU5MiAvKiB2b2Vfdm9sdW1lX2NvbnRyb2xfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NzQwMUU0M0JBQkUwMDYyMUU5MiAvKiB2b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4NEM3MUU0M0FGMTMwMDYyMUU5MiAvKiB2b2ljZV9kZXRl
Y3Rpb25faW1wbC5jYyBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>