<?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>10080</bug_id>
          
          <creation_ts>2006-07-23 11:38:39 -0700</creation_ts>
          <short_desc>Adopt gcc -pedantic changes from the Unity project to improve cross-compiler compatibility</short_desc>
          <delta_ts>2006-07-29 16:10:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>50617</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-23 11:38:39 -0700</bug_when>
    <thetext>Forthcoming patch includes numerous small changes to improve compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50618</commentid>
    <comment_count>1</comment_count>
      <attachid>9635</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-23 11:46:11 -0700</bug_when>
    <thetext>Created attachment 9635
patch

Includes both pedantic functional changes (ie. removing semicolons from after namespace ending curly-bracket, and trailing comma from last enum declaration, etc.) and purely cosmetic changes to comply with style guidelines in the files already being altered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50619</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-23 11:49:59 -0700</bug_when>
    <thetext>I can&apos;t believe I forgot to say it, but most of these changes come from changes made to the Unity project branch and were committed to their tree by hausmann.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50622</commentid>
    <comment_count>3</comment_count>
      <attachid>9635</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-23 13:38:01 -0700</bug_when>
    <thetext>Comment on attachment 9635
patch

+}; // namespace WebCore

Oops!

Other than that, looks good. When can we turn -pedantic on for OS X builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50878</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-26 17:10:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 9635 [edit])
&gt; +}; // namespace WebCore
&gt; 
&gt; Oops!
&gt; 

Fixed.  Will post in upcoming version of the patch

&gt; Other than that, looks good. When can we turn -pedantic on for OS X builds?
&gt; 

It doesn&apos;t look like we will be able to turn on the -pedantic flag any time soon because we use #import a lot currently the -pedantic flag warns about this even if -Wno-import is also specified.  There is some discussion at http://www.cocoabuilder.com/archive/message/xcode/2006/6/15/7289 and a radar has been filed &lt;rdar://4588440&gt;.  Other foreseeable issues are the use of long long (although this can be overcome by defining -Wno-long-long) and the use of anonymous variadic macros (overcomeable with -Wno-variadic-macros or by using the gnu99 dialect -std=gnu99).

:)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50928</commentid>
    <comment_count>5</comment_count>
      <attachid>9714</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-27 08:28:13 -0700</bug_when>
    <thetext>Created attachment 9714
patch 2

New version fixes the issue Darin pointed out and adds some other pedantic fixes.  It also adds the gcc flag -Wnewline-eof (by way of the Xcode GUI) to all the projects and fixes any files that failed due to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50930</commentid>
    <comment_count>6</comment_count>
      <attachid>9714</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-27 08:33:54 -0700</bug_when>
    <thetext>Comment on attachment 9714
patch 2

Buried in all of this is an actual bug fix, in RenderStyle.h.

Would you please land that separately? And perhaps we can come up with a layout test for it?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51084</commentid>
    <comment_count>7</comment_count>
      <attachid>9750</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-28 14:59:41 -0700</bug_when>
    <thetext>Created attachment 9750
patch 3

Oy this patch is getting big.  I have taken out RenderStyle.h change, but added a ton more fixes of the other type.  I have also added a fix to use Vector instead of variable-length arrays in a couple places in JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51085</commentid>
    <comment_count>8</comment_count>
      <attachid>9750</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-28 15:18:57 -0700</bug_when>
    <thetext>Comment on attachment 9750
patch 3

+        Vector&lt;JSValueRef&gt; arguments(argumentCount);

For efficiency, this should use the feature of Vector where it uses storage on the stack if it fits. Like this:

        Vector&lt;JSValueRef, 256&gt; arguments(argumentCount);

The comments in the change log do not mention the change from C++ style comments to plain C comments, nor the motivation for that change. I&apos;d like to understand why a Mac-OS-X-only prefix file needs that change.

Change log doesn&apos;t mention changing from ABS macro to abs function.

Change log doesn&apos;t mention changing from -HUGE_VAL to -numeric_limits&lt;double&gt;::max(), but also, that should probably be numeric_limits&lt;double&gt;::min() instead. Also -HUGE_VAL is actually negative infinity, which is even better. Is there some portable way to get negative infinity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51086</commentid>
    <comment_count>9</comment_count>
      <attachid>9750</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-28 15:27:11 -0700</bug_when>
    <thetext>Comment on attachment 9750
patch 3

Maybe Vector&lt;JSValueRef, 16&gt; instead of 256.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51087</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-28 15:29:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Oy this patch is getting big.

Lets try to land it soon and then do additional changes in a separate patch. No reason we have to do this all at once.

And I&apos;m interested in more tightening of warning settings on Mac OS X if that&apos;s practical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51123</commentid>
    <comment_count>11</comment_count>
      <attachid>9757</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-29 14:28:10 -0700</bug_when>
    <thetext>Created attachment 9757
patch 4

Now uses -numeric_limits&lt;double&gt;::infinity() instead of -numeric_limits&lt;double&gt;::max() (which was instead of -HUGE_VAL).  For floating point numbers numeric_limits&lt;&gt;::min() is actually the smallest positive number, so this is our best bet.  Added other changes to ChangeLogs.  The reason to use C style comments in those prefix headers is really only to give the compiler what it wants.  I think that they might get included in some non-C++ files and therefore the pedantic setting warns about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51125</commentid>
    <comment_count>12</comment_count>
      <attachid>9757</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-29 15:37:21 -0700</bug_when>
    <thetext>Comment on attachment 9757
patch 4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51130</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-29 16:10:45 -0700</bug_when>
    <thetext>Landed in r15696.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9635</attachid>
            <date>2006-07-23 11:46:11 -0700</date>
            <delta_ts>2006-07-28 15:28:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pedanticChanges.diff</filename>
            <type>text/plain</type>
            <size>41236</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTgwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDctMjIgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAg
QWRvcHQgcGVkYW50aWMgY2hhbmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUg
CisgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgY29tcGF0YWJpbGl0eQorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBranMvY29s
bGVjdG9yLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKID09PSBTYWZhcmktNTIxLjIw
ID09PQogCiAyMDA2LTA3LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NTgwKQorKysgSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
Nzg4LDcgKzc4OCw2IEBACiAJCTY1MTYyRUYxMDhFNkEyMUMwMDc1NTZDRCAvKiB3dGYgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDRjY1NTNCMEEyMDQ4
REUwMDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi8sCiAJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5
RDEzIC8qIHVuaWNvZGUgKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5
c0lubGluZS5oICovLAogCQkJCTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25z
LmNwcCAqLywKQEAgLTgwNSw2ICs4MDQsNyBAQAogCQkJCTY1REZDOTJFMDhFQTE3M0EwMEY3MzAw
QiAvKiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzkyRjA4RUExNzNBMDBGNzMwMEIgLyogSGFz
aFRyYWl0cy5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBMaXN0UmVmUHRy
LmggKi8sCisJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRyYXMuaCAqLywK
IAkJCQk5MzAzRjU2OTA5OTExOTAwMDBBRDcxQjggLyogTm9uY29weWFibGUuaCAqLywKIAkJCQk5
MzAzRjVBNDA5OTExQTU4MDBBRDcxQjggLyogT3duQXJyYXlQdHIuaCAqLywKIAkJCQk5MzAzRjU2
NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rv
ci5oCShyZXZpc2lvbiAxNTU4MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBzdGF0
aWMgdm9pZCBmaW5hbENoZWNrKCk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHByb3RlY3Qo
SlNWYWx1ZSAqKTsKLSAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3QoSlNWYWx1ZSAqKTsKKyAgICBz
dGF0aWMgdm9pZCBwcm90ZWN0KEpTVmFsdWUqKTsKKyAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3Qo
SlNWYWx1ZSopOwogCiAgICAgc3RhdGljIHNpemVfdCBudW1JbnRlcnByZXRlcnMoKTsKICAgICBz
dGF0aWMgc2l6ZV90IG51bVByb3RlY3RlZE9iamVjdHMoKTsKQEAgLTY1LDEzICs2NSwxMyBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICAgIHN0YXRpYyB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKCk7
CiAgICAgc3RhdGljIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseSgpOwotICAg
IHN0YXRpYyB2b2lkIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KFRocmVhZCAqdGhyZWFk
KTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShUaHJlYWQq
IHRocmVhZCk7CiAgICAgc3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5
KCk7Ci0gICAgc3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KHZvaWQg
KnN0YXJ0LCB2b2lkICplbmQpOworICAgIHN0YXRpYyB2b2lkIG1hcmtTdGFja09iamVjdHNDb25z
ZXJ2YXRpdmVseSh2b2lkKiBzdGFydCwgdm9pZCogZW5kKTsKIAogICAgIHN0YXRpYyBib29sIG1l
bW9yeUZ1bGw7CiAgIH07CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBLSlMKIAotI2VuZGlmIC8qIF9L
SlNDT0xMRUNUT1JfSF8gKi8KKyNlbmRpZiAvKiBLSlNDT0xMRUNUT1JfSF8gKi8KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxNTU4MCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLy8gLSotIG1vZGU6IGMr
KzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKiAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNl
dDogNCAtKi0gKi8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjcsMzIgKzI3LDMyIEBACiAjaWZuZGVm
IEtYTUxDT1JFX1BMQVRGT1JNX0gKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fSAogCi0vLyBQ
TEFURk9STSBoYW5kbGVzIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIGdyYXBoaWNzIEFQSSwg
YW5kIENQVQorLyogUExBVEZPUk0gaGFuZGxlcyBPUywgb3BlcmF0aW5nIGVudmlyb25tZW50LCBn
cmFwaGljcyBBUEksIGFuZCBDUFUgKi8KICNkZWZpbmUgUExBVEZPUk0oS1hfRkVBVFVSRSkgKGRl
ZmluZWQoIEtYTUxDT1JFX1BMQVRGT1JNXyMjS1hfRkVBVFVSRSApICYmIEtYTUxDT1JFX1BMQVRG
T1JNXyMjS1hfRkVBVFVSRSkKICNkZWZpbmUgQ09NUElMRVIoS1hfRkVBVFVSRSkgKGRlZmluZWQo
IEtYTUxDT1JFX0NPTVBJTEVSXyMjS1hfRkVBVFVSRSApICYmIEtYTUxDT1JFX0NPTVBJTEVSXyMj
S1hfRkVBVFVSRSkKICNkZWZpbmUgSEFWRShLWF9GRUFUVVJFKSAoZGVmaW5lZCggSEFWRV8jI0tY
X0ZFQVRVUkUgKSAmJiBIQVZFXyMjS1hfRkVBVFVSRSkKICNkZWZpbmUgVVNFKEtYX0ZFQVRVUkUp
IChkZWZpbmVkKCBLWE1MQ09SRV9VU0VfIyNLWF9GRUFUVVJFICkgJiYgS1hNTENPUkVfVVNFXyMj
S1hfRkVBVFVSRSkKIAotLy8gT3BlcmF0aW5nIHN5c3RlbXMgLSBsb3ctbGV2ZWwgZGVwZW5kZW5j
aWVzCisvKiBPcGVyYXRpbmcgc3lzdGVtcyAtIGxvdy1sZXZlbCBkZXBlbmRlbmNpZXMgKi8KIAot
Ly8gUExBVEZPUk0oREFSV0lOKQotLy8gT3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNp
ZXMgZm9yIE1hYyBPUyBYIC8gRGFyd2luIHRoYXQgc2hvdWxkCi0vLyBiZSB1c2VkIHJlZ2FyZGxl
c3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25tZW50CisvKiBQTEFURk9STShEQVJXSU4pICovCisvKiBP
cGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgTWFjIE9TIFggLyBEYXJ3aW4g
dGhhdCBzaG91bGQgKi8KKy8qIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJv
bm1lbnQgKi8KICNpZmRlZiBfX0FQUExFX18KICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fREFS
V0lOIDEKICNlbmRpZgogCi0vLyBQTEFURk9STShXSU5fT1MpCi0vLyBPcGVyYXRpbmcgc3lzdGVt
IGxldmVsIGRlcGVuZGVuY2llcyBmb3IgV2luZG93cyB0aGF0IHNob3VsZCBiZSB1c2VkCi0vLyBy
ZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudAorLyogUExBVEZPUk0oV0lOX09TKSAq
LworLyogT3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIFdpbmRvd3MgdGhh
dCBzaG91bGQgYmUgdXNlZCAqLworLyogcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1l
bnQgKi8KICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgS1hN
TENPUkVfUExBVEZPUk1fV0lOX09TIDEKICNlbmRpZgogCi0vLyBQTEFURk9STShVTklYKQotLy8g
T3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIFVuaXgtbGlrZSBzeXN0ZW1z
IHRoYXQKLS8vIHNob3VsZCBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25t
ZW50Ci0vLyAoaW5jbHVkZXMgUExBVEZPUk0oREFSV0lOKSkKKy8qIFBMQVRGT1JNKFVOSVgpICov
CisvKiBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgVW5peC1saWtlIHN5
c3RlbXMgdGhhdCAqLworLyogc2hvdWxkIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcg
ZW52aXJvbm1lbnQgKi8KKy8qIChpbmNsdWRlcyBQTEFURk9STShEQVJXSU4pKSAqLwogI2lmICAg
ZGVmaW5lZChfX0FQUExFX18pICAgXAogICAgfHwgZGVmaW5lZCh1bml4KSAgICAgICAgXAogICAg
fHwgZGVmaW5lZChfX3VuaXgpICAgICAgXApAQCAtNjIsMTMgKzYyLDEzIEBACiAjZGVmaW5lIEtY
TUxDT1JFX1BMQVRGT1JNX1VOSVggMQogI2VuZGlmCiAKLS8vIE9wZXJhdGluZyBlbnZpcm9ubWVu
dHMKKy8qIE9wZXJhdGluZyBlbnZpcm9ubWVudHMgKi8KIAotLy8gSSBtYWRlIHRoZSBCVUlMRElO
R19LREVfXyBtYWNybyB1cCBmb3IgdGhlIEtERSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lCisvKiBJ
IG1hZGUgdGhlIEJVSUxESU5HX0tERV9fIG1hY3JvIHVwIGZvciB0aGUgS0RFIGJ1aWxkIHN5c3Rl
bSB0byBkZWZpbmUgKi8KIAotLy8gUExBVEZPUk0oS0RFKQotLy8gUExBVEZPUk0oTUFDKQotLy8g
UExBVEZPUk0oV0lOKQorLyogUExBVEZPUk0oS0RFKSAqLworLyogUExBVEZPUk0oTUFDKSAqLwor
LyogUExBVEZPUk0oV0lOKSAqLwogI2lmIGRlZmluZWQoQlVJTERJTkdfS0RFX18pCiAjZGVmaW5l
IEtYTUxDT1JFX1BMQVRGT1JNX0tERSAxCiAjZWxpZiBQTEFURk9STShEQVJXSU4pCkBAIC04MSw5
ICs4MSw5IEBACiAjZW5kaWYKIAogCi0vLyBDUFUKKy8qIENQVSAqLwogCi0vLyBQTEFURk9STShQ
UEMpCisvKiBQTEFURk9STShQUEMpICovCiAjaWYgICBkZWZpbmVkKF9fcHBjX18pICAgICBcCiAg
ICB8fCBkZWZpbmVkKF9fUFBDX18pICAgICBcCiAgICB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSBc
CkBAIC05NSw3ICs5NSw3IEBACiAjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX0JJR19FTkRJQU4g
MQogI2VuZGlmCiAKLS8vIFBMQVRGT1JNKFBQQzY0KQorLyogUExBVEZPUk0oUFBDNjQpICovCiAj
aWYgICBkZWZpbmVkKF9fcHBjNjRfXykgXAogICAgfHwgZGVmaW5lZChfX1BQQzY0X18pCiAjZGVm
aW5lIEtYTUxDT1JFX1BMQVRGT1JNX1BQQzY0IDEKQEAgLTEwNyw3ICsxMDcsNyBAQAogI2RlZmlu
ZSBLWE1MQ09SRV9QTEFURk9STV9NSURETEVfRU5ESUFOIDEKICNlbmRpZgogCi0vLyBQTEFURk9S
TShYODYpCisvKiBQTEFURk9STShYODYpICovCiAjaWYgICBkZWZpbmVkKF9faTM4Nl9fKSBcCiAg
ICB8fCBkZWZpbmVkKGkzODYpICAgICBcCiAgICB8fCBkZWZpbmVkKF9NX0lYODYpICBcCkBAIC0x
MTYsNDYgKzExNiw0NiBAQAogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9YODYgMQogI2VuZGlm
CiAKLS8vIFBMQVRGT1JNKFg4Nl82NCkKKy8qIFBMQVRGT1JNKFg4Nl82NCkgKi8KICNpZiAgIGRl
ZmluZWQoX194ODZfNjRfXykgXAogICAgfHwgZGVmaW5lZChfX2lhNjRfXykKICNkZWZpbmUgS1hN
TENPUkVfUExBVEZPUk1fWDg2XzY0IDEKICNlbmRpZgogCi0vLyBDb21waWxlcgorLyogQ29tcGls
ZXIgKi8KIAotLy8gQ09NUElMRVIoTVNWQykKKy8qIENPTVBJTEVSKE1TVkMpICovCiAjaWYgZGVm
aW5lZChfTVNDX1ZFUikKICNkZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfTVNWQyAxCiAjZW5kaWYK
IAotLy8gQ09NUElMRVIoR0NDKQorLyogQ09NUElMRVIoR0NDKSAqLwogI2lmIGRlZmluZWQoX19H
TlVDX18pCiAjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0dDQyAxCiAjZW5kaWYKIAotLy8gQ09N
UElMRVIoQk9STEFORCkKLS8vIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMgdGhpcyBy
ZWxldmFudCBhbnkgbW9yZT8KKy8qIENPTVBJTEVSKEJPUkxBTkQpICovCisvKiBub3QgcmVhbGx5
IGZ1bGx5IHN1cHBvcnRlZCAtIGlzIHRoaXMgcmVsZXZhbnQgYW55IG1vcmU/ICovCiAjaWYgZGVm
aW5lZChfX0JPUkxBTkRDX18pCiAjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0JPUkxBTkQgMQog
I2VuZGlmCiAKLS8vIENPTVBJTEVSKENZR1dJTikKLS8vIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9y
dGVkIC0gaXMgdGhpcyByZWxldmFudCBhbnkgbW9yZT8KKy8qIENPTVBJTEVSKENZR1dJTikgKi8K
Ky8qIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMgdGhpcyByZWxldmFudCBhbnkgbW9y
ZT8gKi8KICNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCiAjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVS
X0NZR1dJTiAxCiAjZW5kaWYKIAotLy8gbXVsdGlwbGUgdGhyZWFkcyBvbmx5IHN1cHBvcnRlZCBv
biBNYWMgZm9yIG5vdworLyogbXVsdGlwbGUgdGhyZWFkcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMg
Zm9yIG5vdyAqLwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgS1hNTENPUkVfVVNFX01VTFRJ
UExFX1RIUkVBRFMgMQogI2VuZGlmCiAKLS8vIGZvciBVbmljb2RlLCBLREUgdXNlcyBRdCwgZXZl
cnl0aGluZyBlbHNlIHVzZXMgSUNVCisvKiBmb3IgVW5pY29kZSwgS0RFIHVzZXMgUXQsIGV2ZXJ5
dGhpbmcgZWxzZSB1c2VzIElDVSAqLwogI2lmIFBMQVRGT1JNKEtERSkKICNkZWZpbmUgS1hNTENP
UkVfVVNFX1FUNF9VTklDT0RFIDEKICNlbHNlCiAjZGVmaW5lIEtYTUxDT1JFX1VTRV9JQ1VfVU5J
Q09ERSAxCiAjZW5kaWYKIAotI2VuZGlmIC8vIEtYTUxDT1JFX1BMQVRGT1JNX0gKKyNlbmRpZiAv
KiBLWE1MQ09SRV9QTEFURk9STV9IICovCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDA2LTA3LTIyICBTYW0g
V2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MAorICAgICAgICAgIEFkb3B0IHBlZGFudGlj
IGNoYW5nZXMgZnJvbSB0aGUgVW5pdHkgcHJvamVjdCB0byBpbXByb3ZlIAorICAgICAgICAgIGNy
b3NzLWNvbXBpbGVyIGNvbXBhdGFiaWxpdHkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5oOgor
ICAgICAgICAoS0pTOjpET01Ob2RlOjopOgorICAgICAgICAqIGRvbS9DaGlsZE5vZGVMaXN0Lmg6
CisgICAgICAgICogZG9tL0RvY1B0ci5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudE1hcmtlcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oOgor
ICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50OjopOgorICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hbWVOb2RlTGlzdDo6cm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRv
bS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKiBodG1sL0Zvcm1EYXRhTGlzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGFMaXN0SXRlbTo6Rm9ybURhdGFMaXN0SXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YUxpc3Q6OmFwcGVuZERhdGEpOgorICAgICAgICAqIGh0bWwv
SFRNTEJsb2NrcXVvdGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SFJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQcmVFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MVG9rZW5pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpTdGF0ZTo6KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjop
OgorICAgICAgICAqIHBsYXRmb3JtL0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhOjpGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRm9udERhdGEuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZXByZWNhdGVkUmVuZGVyU2VsZWN0OjpzZXRXaWRnZXRXcml0aW5nRGlyZWN0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3cuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6OlJlbmRlckZsb3cpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNl
dEJpdERlZmF1bHRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5oOgorCiAyMDA2LTA3LTIy
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAbnlwb3AuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE1NTgwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw2ICszNTAsOCBAQAogCQk4NTRGRTczNzBB
MjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2Fs
LmggKi87IH07CiAJCTg1NEZFNzM4MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJFMEEy
Mjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLzsgfTsKIAkJODU0RkU3MzkwQTIyOTdC
RTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmgg
Ki87IH07CisJCTg1RUM5QUZBMEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFQzlBRjgwQTcxQTJDNjAw
RUVFQUVEIC8qIEZvbnREYXRhLmggKi87IH07CisJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAv
KiBMYW5ndWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggKi87IH07CiAJCTkzMDMy
Q0M4MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhD
Ry5jcHAgKi87IH07CiAJCTkzMDMyQ0NBMDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRC
MDBGODJBMTggLyogUGF0aC5oICovOyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyog
VGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovOyB9OwpAQCAtMjAzOCw2ICsyMDQw
LDggQEAKIAkJODU0RkU3MkQwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmVlV2Fsa2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8qIFRy
ZWVXYWxrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVXYWxrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVE
IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUVDOUFGOTBBNzFBMkM2MDBFRUVB
RUQgLyogTGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhbmd1
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDMyQ0M3MDlBRUMzNDMwMEY4
MkExOCAvKiBQYXRoQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGF0aENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMzJDQzkwOUFFQzM0
QjAwRjgyQTE4IC8qIFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4
NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMjgsNiArNTEzMiw3IEBACiAJCQkJQkM2
REFCRjIwQTE5MDE1NzAwRTVDRDE0IC8qIEZvbnRDYWNoZS5jcHAgKi8sCiAJCQkJQkNGN0MwQjcw
QTE2ODdDQzAwMzJGNzVCIC8qIEZvbnRDYWNoZS5oICovLAogCQkJCUJDQzA4OTE5MEExQzQ2NTIw
MDYxODlBNiAvKiBGb250RGF0YS5jcHAgKi8sCisJCQkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVE
IC8qIEZvbnREYXRhLmggKi8sCiAJCQkJQkNDNDdFNkEwOUEzRkU0NzAwQURCNzcxIC8qIEZvbnRE
ZXNjcmlwdGlvbi5oICovLAogCQkJCUJDRjdDMDc3MEExNjgwQzAwMDMyRjc1QiAvKiBGb250RmFs
bGJhY2tMaXN0LmNwcCAqLywKIAkJCQlCQ0VCMzc3NTA5QjdCQjBEMDBDQjM4QjEgLyogRm9udEZh
bGxiYWNrTGlzdC5oICovLApAQCAtNTE1Miw2ICs1MTU3LDcgQEAKIAkJCQlCQ0YxQTVFRjA5Nzgz
OTYwMDA2MUExMjMgLyogSW50U2l6ZS5oICovLAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMx
RiAvKiBLVVJMLmNwcCAqLywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5o
ICovLAorCQkJCTg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovLAogCQkJ
CUY1ODc4NTEzMDJERTM3NTkwMUVBNDEyMiAvKiBMaXN0Qm94LmggKi8sCiAJCQkJOTM1MjA3QkQw
OUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLywKIAkJCQlBODIzOURGRTA5
QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCkBAIC01MjMwLDE0ICs1MjM2LDYgQEAK
IAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNEUxOTU5MjMwQTM5REFDQzAwMjIwRkU1IC8qIE1l
ZGlhUXVlcnkuY3BwICovLAotCQkJCTRFMTk1OTI0MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5LmggKi8sCi0JCQkJNEUxOTU5MjUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwICovLAotCQkJCTRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmggKi8sCi0JCQkJNEUxOTU5MjcwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVl
cnlFeHAuY3BwICovLAotCQkJCTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5
RXhwLmggKi8sCi0JCQkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5h
bWVzLmNwcCAqLywKLQkJCQk0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJl
TmFtZXMuaCAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICov
LAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKIAkJCQlB
ODBFNkNCQjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBA
IC01MzA4LDggKzUzMDYsMTYgQEAKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZXByb3AgKi8sCiAJCQkJOTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIg
Ki8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMgKi8sCisJCQkJ
NEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLywKKwkJ
CQk0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCAqLywKIAkJ
CQlBOEVBODAwMTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCAqLywKIAkJCQlBOEVB
ODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi8sCisJCQkJNEUxOTU5MjMwQTM5
REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnkuY3BwICovLAorCQkJCTRFMTk1OTI0MEEzOURBQ0Mw
MDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmggKi8sCisJCQkJNEUxOTU5MjUwQTM5REFDQzAwMjIwRkU1
IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAorCQkJCTRFMTk1OTI2MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCisJCQkJNEUxOTU5MjcwQTM5REFDQzAw
MjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuY3BwICovLAorCQkJCTRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8sCiAJCQkJQTgwRTZDRDEwQTE5ODlDQTAwN0ZCOEM1
IC8qIFBhaXIuaCAqLywKIAkJCQk5M0NBNEM5RjA5REY5M0ZBMDBERjg2NzcgLyogcXVpcmtzLmNz
cyAqLywKIAkJCQlBODBFNzk5NjBBMTlCRDIxMDA3RkI4QzUgLyogUmVjdC5pZGwgKi8sCkBAIC01
MzM0LDE0ICs1MzQwLDYgQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNBIC8qIHJlbmRlcmlu
ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQUJEREZF
NzMwQTVDNkU2RjAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNwcCAqLywKLQkJCQlBQkRERkU3
NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAqLywKLQkJCQlBQkRERkU3NTBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBNZW51LmNwcCAqLywKLQkJCQlBQkRERkU3NjBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBNZW51LmggKi8sCi0JCQkJQUJEREZFNzcwQTVD
NkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVwTWVudU1hYy5oICovLAotCQkJCUFCRERGRTc4MEE1
QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1cE1lbnVNYWMubW0gKi8sCi0JCQkJQUJFN0I1MjEw
QTQ4OUY4MzAwMzE4ODFDIC8qIERlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuY3BwICovLAotCQkJCUFC
RTdCNTIyMEE0ODlGODMwMDMxODgxQyAvKiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0LmggKi8sCiAJ
CQkJQThDRkYwNEIwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgKi8sCiAJ
CQkJQThDRkYwNDkwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oICovLAogCQkJ
CUJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBiaWRpLmNwcCAqLywKQEAgLTUzNDksNiArNTM0
Nyw4IEBACiAJCQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAq
LywKIAkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLywKIAkJ
CQlCQ0VBNDgxNzA5N0Q5MzAyMDA5NEM5RTQgLyogRGF0YVJlZi5oICovLAorCQkJCUFCRTdCNTIx
MEE0ODlGODMwMDMxODgxQyAvKiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcCAqLywKKwkJCQlB
QkU3QjUyMjBBNDg5RjgzMDAzMTg4MUMgLyogRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oICovLAog
CQkJCUJDOTJGMURCMEE0MEFFQTMwMEFDMDc0NiAvKiBEZXByZWNhdGVkU2xpZGVyLmNwcCAqLywK
IAkJCQlCQzkyRjFEQzBBNDBBRUEzMDBBQzA3NDYgLyogRGVwcmVjYXRlZFNsaWRlci5oICovLAog
CQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCkBAIC01
MzY2LDggKzUzNjYsNiBAQAogCQkJCTkzNUM0NzYwMDlBQzRDRDEwMEE2QUFCNCAvKiBMZW5ndGgu
aCAqLywKIAkJCQlBOEVBN0E0RDBBMTkxQTUyMDBBOEVGNUYgLyogTGlzdE1hcmtlckJveC5jcHAg
Ki8sCiAJCQkJQThFQTdBNDkwQTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guaCAqLywK
LQkJCQlCQ0VBNDg0NDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyU3R5bGUuY3BwICovLAotCQkJ
CUJDRUE0ODQ1MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJTdHlsZS5oICovLAogCQkJCUJDRUE0
ODFDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuY3BwICovLAogCQkJCUJDRUE0ODFE
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJBcHBsZXQuaCAqLywKIAkJCQlCQ0VBNDgxRTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJlbmEuY3BwICovLApAQCAtNTQxOCwxNCArNTQxNiwyMiBA
QAogCQkJCUE4RUE3QTRDMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0SXRlbS5oICovLAog
CQkJCUE4RUE3QTRCMEExOTFBNTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0TWFya2VyLmNwcCAqLywK
IAkJCQlBOEVBN0E0QTBBMTkxQTUyMDBBOEVGNUYgLyogUmVuZGVyTGlzdE1hcmtlci5oICovLAor
CQkJCUFCRERGRTczMEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCisJ
CQkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8sCiAJCQkJ
QkNFQTQ4NDAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJQkNF
QTQ4NDEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oICovLAogCQkJCUE4NzFERUM4
MEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJQYXJ0LmNwcCAqLywKIAkJCQlBODcxREVDRjBBMTUz
MEM3MDBCMTJBNjggLyogUmVuZGVyUGFydC5oICovLAogCQkJCUE4NzFERUNFMEExNTMwQzcwMEIx
MkE2OCAvKiBSZW5kZXJQYXJ0T2JqZWN0LmNwcCAqLywKIAkJCQlBODcxREVDRDBBMTUzMEM3MDBC
MTJBNjggLyogUmVuZGVyUGFydE9iamVjdC5oICovLAorCQkJCUFCRERGRTc1MEE1QzZFNzAwMEEz
RTExRCAvKiBSZW5kZXJQb3B1cE1lbnUuY3BwICovLAorCQkJCUFCRERGRTc2MEE1QzZFNzAwMEEz
RTExRCAvKiBSZW5kZXJQb3B1cE1lbnUuaCAqLywKKwkJCQlBQkRERkU3NzBBNUM2RTcwMDBBM0Ux
MUQgLyogUmVuZGVyUG9wdXBNZW51TWFjLmggKi8sCisJCQkJQUJEREZFNzgwQTVDNkU3MDAwQTNF
MTFEIC8qIFJlbmRlclBvcHVwTWVudU1hYy5tbSAqLywKIAkJCQlBODcxREZERTBBMTUzNzZCMDBC
MTJBNjggLyogUmVuZGVyUmVwbGFjZWQuY3BwICovLAogCQkJCUE4NzFERkRGMEExNTM3NkIwMEIx
MkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5oICovLAorCQkJCUJDRUE0ODQ0MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJTdHlsZS5jcHAgKi8sCisJCQkJQkNFQTQ4NDUwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlclN0eWxlLmggKi8sCiAJCQkJQThERjRBRTIwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRl
clRhYmxlLmNwcCAqLywKIAkJCQlBOERGNEFFMTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFi
bGUuaCAqLywKIAkJCQlBOERGNEFFMDA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVDZWxs
LmNwcCAqLywKQEAgLTYzOTYsNiArNjQwMiw4IEBACiAJCQkJRTE0ODQzMkYwQTY3NEZDMjAwN0U0
RDM5IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FG
MzQ4MTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3Vh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tbm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbW5vZGUuaAkocmV2
aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb21ub2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBBdHRyaWJ1dGVzLCBO
YW1lc3BhY2VVUkksIFByZWZpeCwgTG9jYWxOYW1lLCBPd25lckRvY3VtZW50LCBJbnNlcnRCZWZv
cmUsCiAgICAgICAgIFJlcGxhY2VDaGlsZCwgUmVtb3ZlQ2hpbGQsIEFwcGVuZENoaWxkLCBIYXNB
dHRyaWJ1dGVzLCBIYXNDaGlsZE5vZGVzLAogICAgICAgICBDbG9uZU5vZGUsIE5vcm1hbGl6ZSwg
SXNTdXBwb3J0ZWQsIENvbnRhaW5zLCBJc1NhbWVOb2RlLCBJc0VxdWFsTm9kZSwgVGV4dENvbnRl
bnQsCi0gICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBMb29r
dXBQcmVmaXgsCisgICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJ
LCBMb29rdXBQcmVmaXgKICAgICB9OwogICAgIAogcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9k
b20vQ2hpbGROb2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NoaWxkTm9kZUxp
c3QuaAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDE3ICsyOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIENoaWxkTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QKLXsKK2NsYXNzIENoaWxkTm9k
ZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgotICAgIENoaWxkTm9kZUxpc3QoIE5v
ZGUgKm4pOworICAgIENoaWxkTm9kZUxpc3QoTm9kZSopOwogCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUgKml0ZW0gKCB1bnNpZ25lZCBpbmRl
eCApIGNvbnN0OworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoIE5vZGUgKnRlc3RO
b2RlICkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKE5vZGUqIHRlc3ROb2Rl
KSBjb25zdDsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIERPTV9DaGlsZE5vZGVMaXN0SW1wbF9oCkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2NQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2NQdHIuaAkocmV2aXNp
b24gMTU1ODApCisrKyBXZWJDb3JlL2RvbS9Eb2NQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
OSArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBUPiBj
bGFzcyBEb2NQdHIKLXsKLSBwdWJsaWM6Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRG9jUHRy
IHsKK3B1YmxpYzoKICAgICBEb2NQdHIoKSA6IG1fcHRyKDApIHt9CiAgICAgRG9jUHRyKFQgKnB0
cikgOiBtX3B0cihwdHIpIHsgaWYgKHB0cikgcHRyLT5zZWxmT25seVJlZigpOyB9CiAgICAgRG9j
UHRyKGNvbnN0IERvY1B0ciAmbykgOiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0
cikgcHRyLT5zZWxmT25seVJlZlJlZigpOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgJKHJldmlz
aW9uIDE1NTgwKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMjUgKzI2LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEEgcmFuZ2Ug
b2YgYSBub2RlIHdpdGhpbiBhIGRvY3VtZW50IHRoYXQgaXMgIm1hcmtlZCIsIHN1Y2ggYXMgYmVp
bmcgbWlzc3BlbGxlZAotc3RydWN0IERvY3VtZW50TWFya2VyCi17CitzdHJ1Y3QgRG9jdW1lbnRN
YXJrZXIgeworCiAgICAgZW51bSBNYXJrZXJUeXBlIHsKLSAgICAgICAgQWxsTWFya2VycyA9IC0x
LAotICAgICAgICBTcGVsbGluZyA9IDAsCi0gICAgICAgIFRleHRNYXRjaCwKKyAgICAgICAgQWxs
TWFya2VycyAgPSAtMSwKKyAgICAgICAgU3BlbGxpbmcgICAgPSAwLAorICAgICAgICBUZXh0TWF0
Y2ggICA9IDEKICAgICB9OwotICAgIAorCiAgICAgZW51bSBNYXJrZXJUeXBlIHR5cGU7Ci0gICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsKLSAgICAKLSAgICBib29sIG9wZXJhdG9y
ID09IChjb25zdCBEb2N1bWVudE1hcmtlciAmbykgY29uc3QgeworICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0OworICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBEb2N1bWVudE1hcmtlciYgbykgY29uc3QKKyAgICB7CiAgICAgICAgIHJldHVybiB0eXBl
ID09IG8udHlwZSAmJiBzdGFydE9mZnNldCA9PSBvLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9
PSBvLmVuZE9mZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgRG9jdW1l
bnRNYXJrZXIgJm8pIGNvbnN0IHsKKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEb2N1bWVu
dE1hcmtlciYgbykgY29uc3QKKyAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwog
ICAgIH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYg
Ly8gRE9NX0RvY3VtZW50TWFya2VyX2gKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCShyZXZpc2lv
biAxNTU4MCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjEsNiArMTIxLDYgQEAgaW5saW5lIHZvaWQgYWxsb3dFdmVudERpc3BhdGNoKCkgeyB9
CiAKICNlbmRpZiAvLyBOREVCVUcgCiAKLX0gLy9uYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBET01fRXZlbnRUYXJnZXROb2RlSW1w
bF9oCkluZGV4OiBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBET01fS0VZX0xPQ0FUSU9OX1NUQU5EQVJEICAgICAg
PSAweDAwLAogICAgICAgICAgICAgRE9NX0tFWV9MT0NBVElPTl9MRUZUICAgICAgICAgID0gMHgw
MSwKICAgICAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fUklHSFQgICAgICAgICA9IDB4MDIsCi0g
ICAgICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCAgICAgICAgPSAweDAzLAorICAgICAg
ICAgICAgRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQgICAgICAgID0gMHgwMwogICAgICAgICB9Owog
ICAgICAgICAKICAgICAgICAgS2V5Ym9hcmRFdmVudCgpOwpJbmRleDogV2ViQ29yZS9kb20vTmFt
ZU5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHJl
dmlzaW9uIDE1NTgwKQorKysgV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDI1ICszMywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvKioKICAqIE5vZGVM
aXN0IHdoaWNoIGxpc3RzIGFsbCBOb2RlcyBpbiBhIEVsZW1lbnQgd2l0aCBhIGdpdmVuICJuYW1l
PSIgdGFnCiAgKi8KLWNsYXNzIE5hbWVOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdAoteworY2xh
c3MgTmFtZU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBOYW1lTm9k
ZUxpc3QoIE5vZGUgKmRvYywgY29uc3QgU3RyaW5nICZ0ICk7CisgICAgTmFtZU5vZGVMaXN0KE5v
ZGUqIGRvYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIERPTSBtZXRob2RzIG92ZXJy
aWRkZW4gZnJvbSAgcGFyZW50IGNsYXNzZXMKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlICppdGVtICggdW5zaWduZWQgaW5kZXggKSBjb25z
dDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAg
Ly8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQotICAgIHZpcnR1YWwgdm9pZCByb290
Tm9kZUNoaWxkcmVuQ2hhbmdlZCgpIHt9OworICAgIHZpcnR1YWwgdm9pZCByb290Tm9kZUNoaWxk
cmVuQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByb290Tm9kZUF0dHJpYnV0ZUNoYW5n
ZWQoKSB7IE5vZGVMaXN0Ojpyb290Tm9kZUNoaWxkcmVuQ2hhbmdlZCgpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoIE5vZGUgKnRlc3ROb2RlICkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKE5vZGUqIHRlc3ROb2RlKSBjb25zdDsKIAog
ICAgIFN0cmluZyBub2RlTmFtZTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERPTV9OYW1lTm9kZUxpc3RJbXBsX2gKSW5k
ZXg6IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1F1YWxpZmllZE5hbWUuY3BwCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgU3RyaW5n
IFF1YWxpZmllZE5hbWU6OnRvU3RyaW5nKCkgY29uc3QKIH0KIAogLy8gR2xvYmFsIGluaXQgcm91
dGluZXMKLURFRklORV9HTE9CQUwoUXVhbGlmaWVkTmFtZSwgYW55TmFtZSwgbnVsbEF0b20sIHN0
YXJBdG9tLCBzdGFyQXRvbSk7CitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUs
IG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pCiAKIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5p
dCgpCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUv
aHRtbC9Gb3JtRGF0YUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE1IEBACiAj
aWZuZGVmIEhUTUxfRm9ybURhdGFMaXN0X2gKICNkZWZpbmUgSFRNTF9Gb3JtRGF0YUxpc3RfaAog
CisjaW5jbHVkZSAiRGVwcmVjYXRlZFZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFZh
bHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGb3JtRGF0YUxpc3RJ
dGVtIHsKLSAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJlY2F0ZWRDU3RyaW5nICZkYXRh
KSA6IG1fZGF0YShkYXRhKSB7IH0KLSAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJlY2F0
ZWRTdHJpbmcgJnBhdGgpIDogbV9wYXRoKHBhdGgpIHsgfQorICAgIEZvcm1EYXRhTGlzdEl0ZW0o
Y29uc3QgRGVwcmVjYXRlZENTdHJpbmcmIGRhdGEpIDogbV9kYXRhKGRhdGEpIHsgfQorICAgIEZv
cm1EYXRhTGlzdEl0ZW0oY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgcGF0aCkgOiBtX3BhdGgocGF0
aCkgeyB9CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIG1fcGF0aDsKICAgICBEZXByZWNhdGVkQ1N0
cmluZyBtX2RhdGE7CkBAIC00NSwxNSArNDUsMTUgQEAgY2xhc3MgRm9ybURhdGFMaXN0IHsKIHB1
YmxpYzoKICAgICBGb3JtRGF0YUxpc3QoY29uc3QgVGV4dEVuY29kaW5nJik7CiAKLSAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IFN0cmluZyAmdmFsdWUpCisgICAg
dm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXkuZGVwcmVjYXRlZFN0cmluZygpKTsgYXBwZW5kU3Ry
aW5nKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7IH0KLSAgICB2b2lkIGFwcGVuZERhdGEoY29u
c3QgU3RyaW5nICZrZXksIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnZhbHVlKQorICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgdmFs
dWUpCiAgICAgICAgIHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVkU3RyaW5nKCkpOyBhcHBl
bmRTdHJpbmcodmFsdWUpOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAma2V5
LCBjb25zdCBEZXByZWNhdGVkQ1N0cmluZyAmdmFsdWUpCisgICAgdm9pZCBhcHBlbmREYXRhKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBEZXByZWNhdGVkQ1N0cmluZyYgdmFsdWUpCiAgICAgICAg
IHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVkU3RyaW5nKCkpOyBhcHBlbmRTdHJpbmcodmFs
dWUpOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAma2V5LCBpbnQgdmFsdWUp
CisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYga2V5LCBpbnQgdmFsdWUpCiAgICAg
ICAgIHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVkU3RyaW5nKCkpOyBhcHBlbmRTdHJpbmco
RGVwcmVjYXRlZFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7IH0KLSAgICB2b2lkIGFwcGVuZEZpbGUo
Y29uc3QgU3RyaW5nICZrZXksIGNvbnN0IFN0cmluZyAmZmlsZW5hbWUpOworICAgIHZvaWQgYXBw
ZW5kRmlsZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAKICAg
ICBEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxGb3JtRGF0YUxpc3RJdGVtPiBiZWdp
bigpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fbGlzdC5iZWdpbigpOyB9CkBAIC02MSwxMyAr
NjEsMTMgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBtX2xpc3QuZW5kKCk7IH0KIAogcHJp
dmF0ZToKLSAgICB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBEZXByZWNhdGVkQ1N0cmluZyAmcyk7
Ci0gICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmcyk7CisgICAg
dm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZENTdHJpbmcmKTsKKyAgICB2b2lkIGFw
cGVuZFN0cmluZyhjb25zdCBEZXByZWNhdGVkU3RyaW5nJik7CiAKICAgICBUZXh0RW5jb2Rpbmcg
bV9lbmNvZGluZzsKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEZvcm1EYXRhTGlzdEl0ZW0+IG1f
bGlzdDsKIH07CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlm
IC8vIEhUTUxfRm9ybURhdGFMaXN0X2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVt
ZW50LmgJKHJldmlzaW9uIDE1NTgwKQorKysgV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSFRNTEJsb2NrcXVvdGVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50
Ci17CitjbGFzcyBIVE1MQmxvY2txdW90ZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgogICAgIEhUTUxCbG9ja3F1b3RlRWxlbWVudChEb2N1bWVudCopOwogICAgIH5IVE1M
QmxvY2txdW90ZUVsZW1lbnQoKTsKQEAgLTQxLDUgKzQwLDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q2l0ZShjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxCbG9ja3F1b3RlRWxlbWVudF9I
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTERpdkVsZW1lbnQgOiBwdWJsaWMgSFRN
TEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxEaXZFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKICAgICBIVE1MRGl2RWxlbWVudChEb2N1bWVudCopOwogICAgIH5IVE1MRGl2RWxl
bWVudCgpOwotICAgIAorCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVt
ZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KICAgICB2aXJ0dWFsIGlu
dCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDU7IH0KLSAgICAKKwogICAgIHZpcnR1YWwg
Ym9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRy
eSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqKTsKIApAQCAtNDQsNSArNDMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGln
bihjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxEaXZFbGVtZW50X0gKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDE1NTgwKQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMSArMjYsMTcgQEAKICNpZm5kZWYgSFRN
TF9IVE1MRm9ybUVsZW1lbnRJbXBsX0gKICNkZWZpbmUgSFRNTF9IVE1MRm9ybUVsZW1lbnRJbXBs
X0gKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24u
aCIgCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGb3JtRGF0YTsKLX07CisjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb3Jt
RGF0YTsKIGNsYXNzIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVt
ZW50OwogY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogCi1jbGFzcyBIVE1MRm9ybUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxGb3JtRWxlbWVudCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEZvcm1FbGVtZW50KERvY3VtZW50Kik7CiAg
ICAgdmlydHVhbCB+SFRNTEZvcm1FbGVtZW50KCk7CkBAIC02NCw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgYXV0b0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvY29tcGxldGU7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUgKmF0dHIpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudChIVE1MR2VuZXJpY0Zv
cm1FbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVGb3JtRWxlbWVudChIVE1MR2VuZXJpY0Zvcm1F
bGVtZW50Kik7CkBAIC04MSwxMCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2Vy
dmVBY3Jvc3NSZW1vdmUoYm9vbCBiKSB7IG1fcHJlc2VydmVBY3Jvc3NSZW1vdmUgPSBiOyB9CiAg
ICAgYm9vbCBwcmVzZXJ2ZUFjcm9zc1JlbW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVB
Y3Jvc3NSZW1vdmU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1
dGUgKmF0dHIpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKSBjb25zdDsKICAgICAKICAgICB2b2lkIHN1Ym1pdENsaWNrKCk7Ci0gICAgYm9vbCBmb3Jt
V291bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcgJnVybCk7CisgICAgYm9vbCBm
b3JtV291bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBT
dHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKQEAg
LTEzMCw2ICsxMjYsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBvbGROYW1lQXR0cjsKIH07CiAK
LX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYg
Ly8gSFRNTF9IVE1MRm9ybUVsZW1lbnRJbXBsX0gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSFJF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAkocmV2
aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRN
TEhSRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3MgSFRNTEhSRWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEhSRWxlbWVudChEb2N1bWVu
dCopOwogICAgIH5IVE1MSFJFbGVtZW50KCk7CkBAIC01Myw1ICs1Miw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFdpZHRoKGNvbnN0IFN0cmluZyYpOwogfTsKIAotfTsgLy9uYW1lc3BhY2UKLSNl
bmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFRNTEhSRWxlbWVudF9I
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyAr
MjEsNiBAQAogICoKICAqLwogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjaWZuZGVmIEhUTUxIZWFk
aW5nRWxlbWVudF9ICiAjZGVmaW5lIEhUTUxIZWFkaW5nRWxlbWVudF9ICiAKQEAgLTI5LDggKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MSGVhZGluZ0VsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxIZWFkaW5nRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEhlYWRpbmdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00Miw1ICs0MCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEFsaWduKGNvbnN0IFN0cmluZyYpOwogfTsKIAotfTsgLy9uYW1lc3BhY2UKLSNl
bmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFRNTEhlYWRpbmdFbGVt
ZW50X0gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgJKHJldmlzaW9uIDE1NTgwKQor
KysgV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1hcnF1ZWVF
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MTWFycXVlZUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxNYXJxdWVlRWxlbWVudChE
b2N1bWVudCopOwogICAgIApAQCAtNDUsNSArNDQsNiBAQCBwcml2YXRlOgogICAgIGludCBtX21p
bmltdW1EZWxheTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxNYXJxdWVlRWxlbWVudF9ICkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuaAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQYXJhZ3JhcGhFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MUGFyYWdyYXBoRWxlbWVudCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFBhcmFncmFwaEVsZW1lbnQoRG9jdW1lbnQq
KTsKIApAQCAtNDQsNSArNDMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGlnbihjb25zdCBT
dHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEhUTUxQYXJhZ3JhcGhFbGVtZW50X0gKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MUHJlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTFByZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNz
IEhUTUxQcmVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1M
UHJlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDEsMTAg
KzQwLDExIEBAIHB1YmxpYzoKIAogICAgIGludCB3aWR0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
V2lkdGgoaW50IHcpOwotICAgIAorCiAgICAgYm9vbCB3cmFwKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRXcmFwKGJvb2wgYik7CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9OyAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFRNTFByZUVsZW1lbnRfSApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRv
a2VuaXplci5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgRGlzY2FyZExGID0gMSA8PCAyMCwgLy8gRklYTUU6IHNob3VsZCBjbGFyaWZ5IGRpZmZlcmVu
Y2UgYmV0d2VlbiBza2lwIGFuZCBkaXNjYXJkCiAgICAgICAgICAgICBBbGxvd1lpZWxkID0gMSA8
PCAyMSwKICAgICAgICAgICAgIExvYWRpbmdFeHRTY3JpcHQgPSAxIDw8IDIyLAotICAgICAgICAg
ICAgRm9yY2VTeW5jaHJvbm91cyA9IDEgPDwgMjMsCisgICAgICAgICAgICBGb3JjZVN5bmNocm9u
b3VzID0gMSA8PCAyMwogICAgICAgICB9OwogICAgIAogICAgICAgICB2b2lkIHNldEJpdChTdGF0
ZUJpdHMgYml0LCBib29sIHZhbHVlKSAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNv
cmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNs
dWRlICJEZXByZWNhdGVkU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkVkaXRBY3Rpb24uaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJTY3JvbGxCYXIuaCIKICNpbmNsdWRlICJO
b2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU2Nyb2xsQmFyLmgi
CiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiVGV4dEdyYW51bGFyaXR5Lmgi
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiBu
YW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBKU1ZhbHVlOwpAQCAtODcsMTEgKzg3LDEwIEBAIGVu
dW0gT2JqZWN0Q29udGVudFR5cGUgewogICAgIE9iamVjdENvbnRlbnROb25lLAogICAgIE9iamVj
dENvbnRlbnRJbWFnZSwKICAgICBPYmplY3RDb250ZW50RnJhbWUsCi0gICAgT2JqZWN0Q29udGVu
dFBsdWdpbiwKKyAgICBPYmplY3RDb250ZW50UGx1Z2luCiB9OwogCiBjbGFzcyBGcmFtZSA6IHB1
YmxpYyBTaGFyZWQ8RnJhbWU+LCBOb25jb3B5YWJsZSB7Ci0KIHB1YmxpYzoKICAgZW51bSB7IE5v
WFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uID0gSU5UX01JTiB9OwogCkBAIC04MTgsNiAr
ODE3LDYgQEAgcHVibGljOgogICBGcmFtZVByaXZhdGUqIGQ7CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEZyYW1lX0gKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vRm9udERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRm9u
dERhdGEuY3BwCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vRm9udERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxOCArMjgsMTcgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnREYXRhLmgiCiAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBGb250RGF0YTo6Rm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgZikKLTptX2ZvbnQoZiksIG1fdHJlYXRBc0ZpeGVkUGl0Y2goZmFsc2UpLAotIG1fc21hbGxD
YXBzRm9udERhdGEoMCkKLSB7ICAgIAotICAgIG1fZm9udCA9IGY7CisgICAgOiBtX2ZvbnQoZikK
KyAgICAsIG1fdHJlYXRBc0ZpeGVkUGl0Y2goZmFsc2UpCisgICAgLCBtX3NtYWxsQ2Fwc0ZvbnRE
YXRhKDApCit7ICAgIAogICAgIHBsYXRmb3JtSW5pdCgpOwogICAgIAogICAgIC8vIE5hc3R5IGhh
Y2sgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCByb3VuZCBvciBjZWlsIHNwYWNlIHdpZHRocy4K
QEAgLTcyLDQgKzcxLDQgQEAgZmxvYXQgRm9udERhdGE6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5
cAogICAgIHJldHVybiB3aWR0aDsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vRm9udERhdGEuaAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0Zv
bnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCw5IEBAIGNsYXNzIFdpZHRoTWFw
OwogCiBlbnVtIFBpdGNoIHsgVW5rbm93blBpdGNoLCBGaXhlZFBpdGNoLCBWYXJpYWJsZVBpdGNo
IH07CiAKLWNsYXNzIEZvbnREYXRhIDogTm9uY29weWFibGUKLXsKK2NsYXNzIEZvbnREYXRhIDog
Tm9uY29weWFibGUgewogcHVibGljOgotICAgIEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIGYpOworICAgIEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKICAgICB+Rm9u
dERhdGEoKTsKIAogcHVibGljOgpAQCAtMTE3LDYgKzExNiw2IEBAIHB1YmxpYzoKICNlbmRpZgog
fTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBGT05U
REFUQV9ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0
LmNwcAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVu
ZGVyU2VsZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNyBAQCBEZXByZWNhdGVk
UmVuZGVyU2VsZWN0OjpEZXByZWNhdGVkUmVuZGVyCiAKIHZvaWQgRGVwcmVjYXRlZFJlbmRlclNl
bGVjdDo6c2V0V2lkZ2V0V3JpdGluZ0RpcmVjdGlvbigpCiB7Ci0gICAgVGV4dERpcmVjdGlvbiBk
ID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMID8gUlRMIDogTFRSOwotICAgIHN0YXRpY19j
YXN0PExpc3RCb3gqPihtX3dpZGdldCktPnNldFdyaXRpbmdEaXJlY3Rpb24oZCk7CisgICAgc3Rh
dGljX2Nhc3Q8TGlzdEJveCo+KG1fd2lkZ2V0KS0+c2V0V3JpdGluZ0RpcmVjdGlvbihzdHlsZSgp
LT5kaXJlY3Rpb24oKSk7CiB9CiAKIHZvaWQgRGVwcmVjYXRlZFJlbmRlclNlbGVjdDo6c2V0U3R5
bGUoUmVuZGVyU3R5bGUqIHMpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgJKHJldmlzaW9u
IDE1NTgwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAkod29ya2luZyBjb3B5
KQpAQCAtMTksMTIgKzE5LDE0IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAq
LwogCisjaWZuZGVmIEVsbGlwc2lzQm94X0gKKyNkZWZpbmUgRWxsaXBzaXNCb3hfSAorCiAjaW5j
bHVkZSAiSW5saW5lQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRWxsaXBz
aXNCb3ggOiBwdWJsaWMgSW5saW5lQm94Ci17CitjbGFzcyBFbGxpcHNpc0JveCA6IHB1YmxpYyBJ
bmxpbmVCb3ggewogcHVibGljOgogICAgIEVsbGlwc2lzQm94KFJlbmRlck9iamVjdCogb2JqLCBj
b25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwLAogICAgICAg
ICAgICAgICAgIGludCB3LCBpbnQgeSwgaW50IGgsIGludCBiLCBib29sIGZpcnN0TGluZSwgSW5s
aW5lQm94KiBtYXJrdXBCb3gpCkBAIC00OSw0ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgSW5saW5l
Qm94KiBtX21hcmt1cEJveDsKIH07CiAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFbGxpcHNpc0JveF9ICkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDE1NTgwKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBS
b290SW5saW5lQm94OwogCiBlbnVtIENhcmV0VHlwZSB7CiAgICAgQ3Vyc29yQ2FyZXQsCi0gICAg
RHJhZ0NhcmV0LAorICAgIERyYWdDYXJldAogfTsKIAogY2xhc3MgUmVuZGVyQmxvY2sgOiBwdWJs
aWMgUmVuZGVyRmxvdyB7CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9j
ayhOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2soKTsKIAotICAgIHZpcnR1YWwgY29u
c3QgY2hhciAqcmVuZGVyTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJp
ZGRlbiBmb3IgaW5saW5lLWJsb2NrLgogICAgIHZpcnR1YWwgc2hvcnQgbGluZUhlaWdodChib29s
IGIsIGJvb2wgaXNSb290TGluZUJveD1mYWxzZSkgY29uc3Q7CkBAIC00NDYsNiArNDQ2LDYgQEAg
cHJvdGVjdGVkOgogICAgIGludCBtX3RhYldpZHRoOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFJFTkRFUl9CTE9DS19ICisjZW5kaWYg
Ly8gUmVuZGVyQmxvY2tfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDE1ICsyMCwxNCBAQAogICoKICAqLwogCi0jaWZuZGVm
IFJFTkRFUl9GTEVYSUJMRV9CT1hfSAotI2RlZmluZSBSRU5ERVJfRkxFWElCTEVfQk9YX0gKKyNp
Zm5kZWYgUmVuZGVyRmxleGlibGVCb3hfSAorI2RlZmluZSBSZW5kZXJGbGV4aWJsZUJveF9ICiAK
ICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrCi17CitjbGFzcyBSZW5kZXJG
bGV4aWJsZUJveCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRmxl
eGlibGVCb3goTm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlckZsZXhpYmxlQm94KCk7CkBAIC00
NCwxMyArNDMsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpbmdDaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fZmxleGluZ0NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCBib29s
IGlzU3RyZXRjaGluZ0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRy
ZW47IH0KLSAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25zdDsK
KworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwogCiAgICAgdm9p
ZCBwbGFjZUNoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIGludCB4LCBpbnQgeSk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBpbnQgYWxsb3dlZENoaWxkRmxleChSZW5kZXJPYmplY3QqIGNoaWxkLCBib29s
IGV4cGFuZGluZywgdW5zaWduZWQgaW50IGdyb3VwKTsKKyAgICBpbnQgYWxsb3dlZENoaWxkRmxl
eChSZW5kZXJPYmplY3QqIGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5zaWduZWQgZ3JvdXApOwog
CiAgICAgYm9vbCBoYXNNdWx0aXBsZUxpbmVzKCkgeyByZXR1cm4gc3R5bGUoKS0+Ym94TGluZXMo
KSA9PSBNVUxUSVBMRTsgfQogICAgIGJvb2wgaXNWZXJ0aWNhbCgpIHsgcmV0dXJuIHN0eWxlKCkt
PmJveE9yaWVudCgpID09IFZFUlRJQ0FMOyB9CkBAIC02MCw5ICs1OSw2IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIG1fc3RyZXRjaGluZ0NoaWxkcmVuIDogMTsKIH07CiAKLX07IC8vIG5hbWVzcGFj
ZQotCi0jZW5kaWYgLy8gUkVOREVSX0ZMRVhJQkxFX0JPWF9ICi0KLQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCisjZW5kaWYgLy8gUmVuZGVyRmxleGlibGVCb3hfSApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3cuaAkocmV2aXNpb24gMTU1ODApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKICAqCiAgKi8KIAotI2lmbmRl
ZiBSRU5ERVJfRkxPV19ICi0jZGVmaW5lIFJFTkRFUl9GTE9XX0gKKyNpZm5kZWYgUmVuZGVyRmxv
d19ICisjZGVmaW5lIFJlbmRlckZsb3dfSAogCiAjaW5jbHVkZSAiUmVuZGVyQ29udGFpbmVyLmgi
CiAKQEAgLTM4LDEyICszOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBiZWhhdmlvdXIg
b2YgdGV4dCwgc28gcHV0dGluZyB0aGUgbGF5b3V0aW5nIHJvdXRpbmVzIGluIHRoZSBpbmxpbmUK
ICAqIGVsZW1lbnRzIGlzIGltcG9zc2libGUuCiAgKi8KLWNsYXNzIFJlbmRlckZsb3cgOiBwdWJs
aWMgUmVuZGVyQ29udGFpbmVyCi17CitjbGFzcyBSZW5kZXJGbG93IDogcHVibGljIFJlbmRlckNv
bnRhaW5lciB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRmxvdyhOb2RlKiBub2RlKQotICAgICAgOiBS
ZW5kZXJDb250YWluZXIobm9kZSksIG1fbGluZUhlaWdodCgtMSkKLSAgICB7IG1fY29udGludWF0
aW9uID0gMDsgbV9maXJzdExpbmVCb3ggPSAwOyBtX2xhc3RMaW5lQm94ID0gMDt9CisgICAgICAg
IDogUmVuZGVyQ29udGFpbmVyKG5vZGUpCisgICAgICAgICwgbV9jb250aW51YXRpb24oMCkKKyAg
ICAgICAgLCBtX2ZpcnN0TGluZUJveCgwKQorICAgICAgICAsIG1fbGFzdExpbmVCb3goMCkKKyAg
ICAgICAgLCBtX2xpbmVIZWlnaHQoLTEpCisgICAgeworICAgIH0KIAogICAgIHZpcnR1YWwgUmVu
ZGVyRmxvdyogY29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250aW51YXRpb247IH0K
ICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5kZXJGbG93KiBjKSB7IG1fY29udGludWF0aW9u
ID0gYzsgfQpAQCAtMTAzLDcgKzEwNyw2IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIHNob3J0
IG1fbGluZUhlaWdodDsKIH07CiAKLSAgICAKLX07IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIFJlbmRlckZsb3dfSApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNzIsNiArMTA3Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9
IGZhbHNlOwogICAgICAgICAKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVE
aXNwbGF5ID0gbm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5hbERpc3BsYXkgPSBpbml0aWFsRGlz
cGxheSgpOworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2JnX3JlcGVhdCA9IGluaXRpYWxC
YWNrZ3JvdW5kUmVwZWF0KCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dY
ID0gaW5pdGlhbE92ZXJmbG93WCgpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJm
bG93WSA9IGluaXRpYWxPdmVyZmxvd1koKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl92
ZXJ0aWNhbF9hbGlnbiA9IGluaXRpYWxWZXJ0aWNhbEFsaWduKCk7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9iaWRpLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5oCShy
ZXZpc2lvbiAxNTU4MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAkod29ya2luZyBjb3B5
KQpAQCAtOTIsMTEgKzkyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gT3Zl
cnJpZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgog
ICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsKIAotcHJpdmF0ZToK
KyAgICBwcml2YXRlOgogICAgICAgICAvLyBUaGUgbm9ybWFsIG9wZXJhdG9yIG5ldyBpcyBkaXNh
bGxvd2VkLgogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSB0aHJvdygpOwogCi1w
dWJsaWM6CisgICAgcHVibGljOgogICAgICAgICBpbnQgc3RhcnQ7CiAgICAgICAgIGludCBzdG9w
OwogCkBAIC0xMTQsNiArMTE0LDYgQEAgcHVibGljOgogICAgIHN0cnVjdCBCaWRpSXRlcmF0b3I7
CiAgICAgc3RydWN0IEJpZGlTdGF0ZTsKIAotfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmCisjZW5kaWYgLy8gQklESV9ICg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9714</attachid>
            <date>2006-07-27 08:28:13 -0700</date>
            <delta_ts>2006-07-28 15:28:28 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>pedantic2.diff</filename>
            <type>text/plain</type>
            <size>71114</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDYtMDctMjcgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAgQWRvcHQgcGVkYW50aWMgY2hh
bmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCisgICAgICAgICAgY3Jvc3Mt
Y29tcGlsZXIgY29tcGF0YWJpbGl0eQorCisgICAgICAgICAgQ2hhbmdlcyBpbmNsdWRlOgorICAg
ICAgICAgICogUmVtb3ZpbmcgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gbmFtZXNwYWNlIGJyYWNl
cy4KKyAgICAgICAgICAqIFJlbW92aW5nIHRyYWlsaW5nIGNvbW1hIGZyb20gbGFzdCBlbnVtIGRl
Y2xhcmF0aW9uLgorICAgICAgICAgICogVXBkYXRpbmcgdG8gbWF0Y2ggc3R5bGUgZ3VpZGVsaW5l
cy4KKyAgICAgICAgICAqIEFkZGluZyBtaXNzaW5nIG5ld2xpbmUgdG8gdGhlIGVuZCBvZiB0aGUg
ZmlsZS4KKyAgICAgICAgICAqIFR1cm5pbmcgb24gZ2NjIHdhcm5pbmcgZm9yIG1pc3NpbmcgbmV3
bGluZSBhdCB0aGUgZW5kIG9mIGEgc291cmNlIGZpbGUKKyAgICAgICAgICAgIChHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX05FV0xJTkUgaW4gWGNvZGUsIC1XbmV3bGluZSBpbiBnY2MpLgorICAgICAg
ICAgICogQWxwaGFiZXRpY2FsIHNvcnRpbmcgb2YgWGNvZGUgc291cmNlIGxpc3QgZmlsZXMuIAor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX2NsYXNzLmg6CisgICAgICAgICogYmluZGluZ3Mvam5p
L2puaV9vYmpjLm1tOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6ZGlzcGF0Y2hKTklDYWxsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX3V0aWxpdHkuaDoKKyAgICAgICAgKiBranMvY29s
bGVjdG9yLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMDYtMDctMjQgIERhbiBX
YXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYW5kIHR3
ZWFrZWQgYSBiaXQgYnkgRGFyaW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjQ4
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg4LDcgKzc4OCw2IEBACiAJCTY1MTYyRUYxMDhFNkEy
MUMwMDc1NTZDRCAvKiB3dGYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUJDRjY1NTNCMEEyMDQ4REUwMDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi8sCiAJ
CQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sCiAJCQkJOTNBQTRGNzcw
OTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lubGluZS5oICovLAogCQkJCTY1RTIxN0I4MDhFN0VF
Q0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLywKQEAgLTgwNSw2ICs4MDQsNyBAQAogCQkJ
CTY1REZDOTJFMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzky
RjA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRyYWl0cy5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2
QkIwMDY2NkQwRCAvKiBMaXN0UmVmUHRyLmggKi8sCisJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhB
MTk0IC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJCQk5MzAzRjU2OTA5OTExOTAwMDBBRDcxQjggLyog
Tm9uY29weWFibGUuaCAqLywKIAkJCQk5MzAzRjVBNDA5OTExQTU4MDBBRDcxQjggLyogT3duQXJy
YXlQdHIuaCAqLywKIAkJCQk5MzAzRjU2NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8s
CkBAIC0xMjE1LDEzICsxMjE1LDEwIEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwotCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3Mg
PSAxOwogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3Jp
cHRDb3JlICovOwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhC
IC8qIFByb2R1Y3RzICovOwogCQkJcHJvamVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290
ID0gIiI7Ci0JCQlzaG91bGRDaGVja0NvbXBhdGliaWxpdHkgPSAxOwogCQkJdGFyZ2V0cyA9ICgK
IAkJCQk5MzJGNUIzRTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUgKi8sCiAJCQkJ
OTM1RjY5RjUwODI0NEZFQTAwM0QxQTQ1IC8qIGRmdGFibGVzICovLApAQCAtMTc0OCw2ICsxNzQ1
LDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZF
X1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxf
REVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpA
QCAtMTc4NSw2ICsxNzgzLDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJ
CUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNf
RVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsK
IAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dB
Uk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC40OwpAQCAtMTgyMiw2ICsxODIxLDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFT
SU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJF
QVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdf
TkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlXQVJO
SU5HX0NGTEFHUyA9ICgKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfY2xh
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2NsYXNz
LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9j
bGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBAIG5hbWVzcGFjZSBLSlMgewog
CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1jbGFzcyBKYXZhQ2xhc3MgOiBwdWJsaWMgQ2xhc3MK
LXsKK2NsYXNzIEphdmFDbGFzcyA6IHB1YmxpYyBDbGFzcyB7CiBwdWJsaWM6CiAgICAgSmF2YUNs
YXNzIChqb2JqZWN0IGFuSW5zdGFuY2UpOwogICAgIH5KYXZhQ2xhc3MgKCk7CkBAIC03MCw0ICs2
OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwogCi0jZW5kaWYKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCisjZW5kaWYgLy8gSk5JX0NMQVNTX0hfCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX29iamMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvYmluZGluZ3Mvam5pL2puaV9vYmpjLm1tCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfb2JqYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQs
NCArNjQsNCBAQCBib29sIEtKUzo6QmluZGluZ3M6OmRpc3BhdGNoSk5JQ2FsbCAoY29uCiAKICAg
ICBiemVybyAoJnJlc3VsdCwgc2l6ZW9mKGp2YWx1ZSkpOwogICAgIHJldHVybiBmYWxzZTsKLX0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9qbmkvam5pX3V0aWxpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9qbmkvam5pX3V0aWxpdHkuaAkocmV2aXNpb24gMTU2NDgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9qbmkvam5pX3V0aWxpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTEgKzQz
LDEwIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgZG91YmxlX3R5cGUKIH0gSk5JVHlwZTsKIAotbmFt
ZXNwYWNlIEtKUwoteworbmFtZXNwYWNlIEtKUyB7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7CiAK
LW5hbWVzcGFjZSBCaW5kaW5ncyAKLXsKIGNsYXNzIEphdmFQYXJhbWV0ZXI7CiAKIGNvbnN0IGNo
YXIgKmdldENoYXJhY3RlcnNGcm9tSlN0cmluZyhqc3RyaW5nIGFKU3RyaW5nKTsKQEAgLTExMSw0
ICsxMTAsNCBAQCBib29sIGRpc3BhdGNoSk5JQ2FsbChjb25zdCB2b2lkICp0YXJnZXRBCiAKIH0g
Ly8gbmFtZXNwYWNlIEtKUwogCi0jZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisj
ZW5kaWYgLy8gX0pOSV9VVElMSVRZX0hfCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZp
c2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsOCArNTEsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBzdGF0aWMgdm9pZCBm
aW5hbENoZWNrKCk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHByb3RlY3QoSlNWYWx1ZSAq
KTsKLSAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3QoSlNWYWx1ZSAqKTsKKyAgICBzdGF0aWMgdm9p
ZCBwcm90ZWN0KEpTVmFsdWUqKTsKKyAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3QoSlNWYWx1ZSop
OwogCiAgICAgc3RhdGljIHNpemVfdCBudW1JbnRlcnByZXRlcnMoKTsKICAgICBzdGF0aWMgc2l6
ZV90IG51bVByb3RlY3RlZE9iamVjdHMoKTsKQEAgLTY1LDEzICs2NSwxMyBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogICAgIHN0YXRpYyB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKCk7CiAgICAgc3Rh
dGljIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseSgpOwotICAgIHN0YXRpYyB2
b2lkIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KFRocmVhZCAqdGhyZWFkKTsKKyAgICBz
dGF0aWMgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShUaHJlYWQqIHRocmVhZCk7
CiAgICAgc3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KCk7Ci0gICAg
c3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KHZvaWQgKnN0YXJ0LCB2
b2lkICplbmQpOworICAgIHN0YXRpYyB2b2lkIG1hcmtTdGFja09iamVjdHNDb25zZXJ2YXRpdmVs
eSh2b2lkKiBzdGFydCwgdm9pZCogZW5kKTsKIAogICAgIHN0YXRpYyBib29sIG1lbW9yeUZ1bGw7
CiAgIH07CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBLSlMKIAotI2VuZGlmIC8qIF9LSlNDT0xMRUNU
T1JfSF8gKi8KKyNlbmRpZiAvKiBLSlNDT0xMRUNUT1JfSF8gKi8KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotCisvKiAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0g
Ki8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjcsMzIgKzI3LDMyIEBACiAjaWZuZGVmIEtYTUxDT1JF
X1BMQVRGT1JNX0gKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fSAogCi0vLyBQTEFURk9STSBo
YW5kbGVzIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIGdyYXBoaWNzIEFQSSwgYW5kIENQVQor
LyogUExBVEZPUk0gaGFuZGxlcyBPUywgb3BlcmF0aW5nIGVudmlyb25tZW50LCBncmFwaGljcyBB
UEksIGFuZCBDUFUgKi8KICNkZWZpbmUgUExBVEZPUk0oS1hfRkVBVFVSRSkgKGRlZmluZWQoIEtY
TUxDT1JFX1BMQVRGT1JNXyMjS1hfRkVBVFVSRSApICYmIEtYTUxDT1JFX1BMQVRGT1JNXyMjS1hf
RkVBVFVSRSkKICNkZWZpbmUgQ09NUElMRVIoS1hfRkVBVFVSRSkgKGRlZmluZWQoIEtYTUxDT1JF
X0NPTVBJTEVSXyMjS1hfRkVBVFVSRSApICYmIEtYTUxDT1JFX0NPTVBJTEVSXyMjS1hfRkVBVFVS
RSkKICNkZWZpbmUgSEFWRShLWF9GRUFUVVJFKSAoZGVmaW5lZCggSEFWRV8jI0tYX0ZFQVRVUkUg
KSAmJiBIQVZFXyMjS1hfRkVBVFVSRSkKICNkZWZpbmUgVVNFKEtYX0ZFQVRVUkUpIChkZWZpbmVk
KCBLWE1MQ09SRV9VU0VfIyNLWF9GRUFUVVJFICkgJiYgS1hNTENPUkVfVVNFXyMjS1hfRkVBVFVS
RSkKIAotLy8gT3BlcmF0aW5nIHN5c3RlbXMgLSBsb3ctbGV2ZWwgZGVwZW5kZW5jaWVzCisvKiBP
cGVyYXRpbmcgc3lzdGVtcyAtIGxvdy1sZXZlbCBkZXBlbmRlbmNpZXMgKi8KIAotLy8gUExBVEZP
Uk0oREFSV0lOKQotLy8gT3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIE1h
YyBPUyBYIC8gRGFyd2luIHRoYXQgc2hvdWxkCi0vLyBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygb3Bl
cmF0aW5nIGVudmlyb25tZW50CisvKiBQTEFURk9STShEQVJXSU4pICovCisvKiBPcGVyYXRpbmcg
c3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgTWFjIE9TIFggLyBEYXJ3aW4gdGhhdCBzaG91
bGQgKi8KKy8qIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQgKi8K
ICNpZmRlZiBfX0FQUExFX18KICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fREFSV0lOIDEKICNl
bmRpZgogCi0vLyBQTEFURk9STShXSU5fT1MpCi0vLyBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRl
cGVuZGVuY2llcyBmb3IgV2luZG93cyB0aGF0IHNob3VsZCBiZSB1c2VkCi0vLyByZWdhcmRsZXNz
IG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudAorLyogUExBVEZPUk0oV0lOX09TKSAqLworLyogT3Bl
cmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIFdpbmRvd3MgdGhhdCBzaG91bGQg
YmUgdXNlZCAqLworLyogcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQgKi8KICNp
ZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNkZWZpbmUgS1hNTENPUkVfUExB
VEZPUk1fV0lOX09TIDEKICNlbmRpZgogCi0vLyBQTEFURk9STShVTklYKQotLy8gT3BlcmF0aW5n
IHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIFVuaXgtbGlrZSBzeXN0ZW1zIHRoYXQKLS8v
IHNob3VsZCBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25tZW50Ci0vLyAo
aW5jbHVkZXMgUExBVEZPUk0oREFSV0lOKSkKKy8qIFBMQVRGT1JNKFVOSVgpICovCisvKiBPcGVy
YXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgVW5peC1saWtlIHN5c3RlbXMgdGhh
dCAqLworLyogc2hvdWxkIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1l
bnQgKi8KKy8qIChpbmNsdWRlcyBQTEFURk9STShEQVJXSU4pKSAqLwogI2lmICAgZGVmaW5lZChf
X0FQUExFX18pICAgXAogICAgfHwgZGVmaW5lZCh1bml4KSAgICAgICAgXAogICAgfHwgZGVmaW5l
ZChfX3VuaXgpICAgICAgXApAQCAtNjIsMTMgKzYyLDEzIEBACiAjZGVmaW5lIEtYTUxDT1JFX1BM
QVRGT1JNX1VOSVggMQogI2VuZGlmCiAKLS8vIE9wZXJhdGluZyBlbnZpcm9ubWVudHMKKy8qIE9w
ZXJhdGluZyBlbnZpcm9ubWVudHMgKi8KIAotLy8gSSBtYWRlIHRoZSBCVUlMRElOR19LREVfXyBt
YWNybyB1cCBmb3IgdGhlIEtERSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lCisvKiBJIG1hZGUgdGhl
IEJVSUxESU5HX0tERV9fIG1hY3JvIHVwIGZvciB0aGUgS0RFIGJ1aWxkIHN5c3RlbSB0byBkZWZp
bmUgKi8KIAotLy8gUExBVEZPUk0oS0RFKQotLy8gUExBVEZPUk0oTUFDKQotLy8gUExBVEZPUk0o
V0lOKQorLyogUExBVEZPUk0oS0RFKSAqLworLyogUExBVEZPUk0oTUFDKSAqLworLyogUExBVEZP
Uk0oV0lOKSAqLwogI2lmIGRlZmluZWQoQlVJTERJTkdfS0RFX18pCiAjZGVmaW5lIEtYTUxDT1JF
X1BMQVRGT1JNX0tERSAxCiAjZWxpZiBQTEFURk9STShEQVJXSU4pCkBAIC04MSw5ICs4MSw5IEBA
CiAjZW5kaWYKIAogCi0vLyBDUFUKKy8qIENQVSAqLwogCi0vLyBQTEFURk9STShQUEMpCisvKiBQ
TEFURk9STShQUEMpICovCiAjaWYgICBkZWZpbmVkKF9fcHBjX18pICAgICBcCiAgICB8fCBkZWZp
bmVkKF9fUFBDX18pICAgICBcCiAgICB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSBcCkBAIC05NSw3
ICs5NSw3IEBACiAjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX0JJR19FTkRJQU4gMQogI2VuZGlm
CiAKLS8vIFBMQVRGT1JNKFBQQzY0KQorLyogUExBVEZPUk0oUFBDNjQpICovCiAjaWYgICBkZWZp
bmVkKF9fcHBjNjRfXykgXAogICAgfHwgZGVmaW5lZChfX1BQQzY0X18pCiAjZGVmaW5lIEtYTUxD
T1JFX1BMQVRGT1JNX1BQQzY0IDEKQEAgLTEwNyw3ICsxMDcsNyBAQAogI2RlZmluZSBLWE1MQ09S
RV9QTEFURk9STV9NSURETEVfRU5ESUFOIDEKICNlbmRpZgogCi0vLyBQTEFURk9STShYODYpCisv
KiBQTEFURk9STShYODYpICovCiAjaWYgICBkZWZpbmVkKF9faTM4Nl9fKSBcCiAgICB8fCBkZWZp
bmVkKGkzODYpICAgICBcCiAgICB8fCBkZWZpbmVkKF9NX0lYODYpICBcCkBAIC0xMTYsNDYgKzEx
Niw0NiBAQAogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9YODYgMQogI2VuZGlmCiAKLS8vIFBM
QVRGT1JNKFg4Nl82NCkKKy8qIFBMQVRGT1JNKFg4Nl82NCkgKi8KICNpZiAgIGRlZmluZWQoX194
ODZfNjRfXykgXAogICAgfHwgZGVmaW5lZChfX2lhNjRfXykKICNkZWZpbmUgS1hNTENPUkVfUExB
VEZPUk1fWDg2XzY0IDEKICNlbmRpZgogCi0vLyBDb21waWxlcgorLyogQ29tcGlsZXIgKi8KIAot
Ly8gQ09NUElMRVIoTVNWQykKKy8qIENPTVBJTEVSKE1TVkMpICovCiAjaWYgZGVmaW5lZChfTVND
X1ZFUikKICNkZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfTVNWQyAxCiAjZW5kaWYKIAotLy8gQ09N
UElMRVIoR0NDKQorLyogQ09NUElMRVIoR0NDKSAqLwogI2lmIGRlZmluZWQoX19HTlVDX18pCiAj
ZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0dDQyAxCiAjZW5kaWYKIAotLy8gQ09NUElMRVIoQk9S
TEFORCkKLS8vIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMgdGhpcyByZWxldmFudCBh
bnkgbW9yZT8KKy8qIENPTVBJTEVSKEJPUkxBTkQpICovCisvKiBub3QgcmVhbGx5IGZ1bGx5IHN1
cHBvcnRlZCAtIGlzIHRoaXMgcmVsZXZhbnQgYW55IG1vcmU/ICovCiAjaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pCiAjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0JPUkxBTkQgMQogI2VuZGlmCiAK
LS8vIENPTVBJTEVSKENZR1dJTikKLS8vIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMg
dGhpcyByZWxldmFudCBhbnkgbW9yZT8KKy8qIENPTVBJTEVSKENZR1dJTikgKi8KKy8qIG5vdCBy
ZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMgdGhpcyByZWxldmFudCBhbnkgbW9yZT8gKi8KICNp
ZiBkZWZpbmVkKF9fQ1lHV0lOX18pCiAjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0NZR1dJTiAx
CiAjZW5kaWYKIAotLy8gbXVsdGlwbGUgdGhyZWFkcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMgZm9y
IG5vdworLyogbXVsdGlwbGUgdGhyZWFkcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMgZm9yIG5vdyAq
LwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgS1hNTENPUkVfVVNFX01VTFRJUExFX1RIUkVB
RFMgMQogI2VuZGlmCiAKLS8vIGZvciBVbmljb2RlLCBLREUgdXNlcyBRdCwgZXZlcnl0aGluZyBl
bHNlIHVzZXMgSUNVCisvKiBmb3IgVW5pY29kZSwgS0RFIHVzZXMgUXQsIGV2ZXJ5dGhpbmcgZWxz
ZSB1c2VzIElDVSAqLwogI2lmIFBMQVRGT1JNKEtERSkKICNkZWZpbmUgS1hNTENPUkVfVVNFX1FU
NF9VTklDT0RFIDEKICNlbHNlCiAjZGVmaW5lIEtYTUxDT1JFX1VTRV9JQ1VfVU5JQ09ERSAxCiAj
ZW5kaWYKIAotI2VuZGlmIC8vIEtYTUxDT1JFX1BMQVRGT1JNX0gKKyNlbmRpZiAvKiBLWE1MQ09S
RV9QTEFURk9STV9IICovCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA2
LTA3LTI3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1
Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MAorICAgICAgICAgIEFk
b3B0IHBlZGFudGljIGNoYW5nZXMgZnJvbSB0aGUgVW5pdHkgcHJvamVjdCB0byBpbXByb3ZlIAor
ICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIGNvbXBhdGFiaWxpdHkKKworICAgICAgICAgIENoYW5n
ZXMgaW5jbHVkZToKKyAgICAgICAgICAqIFR1cm5pbmcgb24gZ2NjIHdhcm5pbmcgZm9yIG1pc3Np
bmcgbmV3bGluZSBhdCB0aGUgZW5kIG9mIGEgc291cmNlIGZpbGUKKyAgICAgICAgICAgIChHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgaW4gWGNvZGUsIC1XbmV3bGluZSBpbiBnY2MpLgor
CisgICAgICAgICogSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
PT09IFNhZmFyaS01MjEuMTkgPT09CiAKIDIwMDYtMDctMTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSmF2YVNj
cmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU2NDgpCisrKyBK
YXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVG
SVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlH
Q0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01J
U1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtNDYwLDYgKzQ2MSw3IEBACiAJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICIiOwogCQkJCUdDQ19USFJFQURTQUZF
X1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxf
REVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpA
QCAtNDk1LDYgKzQ5Nyw3IEBACiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlF
UzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5J
TkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUg
PSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJ
CUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJV0FSTklOR19DRkxB
R1MgPSAoCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDA2LTA3LTI3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA4MAorICAgICAgICAgIEFkb3B0IHBlZGFudGljIGNoYW5nZXMgZnJvbSB0aGUg
VW5pdHkgcHJvamVjdCB0byBpbXByb3ZlIAorICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIGNvbXBh
dGFiaWxpdHkKKworICAgICAgICAgIENoYW5nZXMgaW5jbHVkZToKKyAgICAgICAgICAqIFJlbW92
aW5nIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIG5hbWVzcGFjZSBicmFjZXMuCisgICAgICAgICAg
KiBSZW1vdmluZyB0cmFpbGluZyBjb21tYSBmcm9tIGxhc3QgZW51bSBkZWNsYXJhdGlvbi4KKyAg
ICAgICAgICAqIFVwZGF0aW5nIHRvIG1hdGNoIHN0eWxlIGd1aWRlbGluZXMuCisgICAgICAgICAg
KiBBZGRpbmcgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisgICAgICAg
ICAgKiBUdXJuaW5nIG9uIGdjYyB3YXJuaW5nIGZvciBtaXNzaW5nIG5ld2xpbmUgYXQgdGhlIGVu
ZCBvZiBhIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAoR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19O
RVdMSU5FIGluIFhjb2RlLCAtV25ld2xpbmUgaW4gZ2NjKS4KKyAgICAgICAgICAqIEFscGhhYmV0
aWNhbCBzb3J0aW5nIG9mIFhjb2RlIHNvdXJjZSBsaXN0IGZpbGVzLiAKKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMva2pzX2RvbW5vZGUuaDoKKyAgICAgICAgKEtKUzo6RE9NTm9kZTo6KToKKyAgICAgICAgKiBi
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOgorICAgICAgICAqIGJyaWRnZS9tYWMvV2Vi
Q29yZUtleWJvYXJkQWNjZXNzLmg6CisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDoKKyAg
ICAgICAgKiBkb20vRG9jUHRyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TWFya2VyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFy
a2VyOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXROb2RlLmg6CisgICAg
ICAgICogZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZl
bnQ6Oik6CisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
TmFtZU5vZGVMaXN0Ojpyb290Tm9kZUNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogZG9tL1F1
YWxpZmllZE5hbWUuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVW5saW5rQ29tbWFuZC5oOgorICAg
ICAgICAoV2ViQ29yZTo6VW5saW5rQ29tbWFuZDo6ZWRpdGluZ0FjdGlvbik6CisgICAgICAgICog
aHRtbC9Gb3JtRGF0YUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhTGlzdEl0ZW06
OkZvcm1EYXRhTGlzdEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFMaXN0OjphcHBl
bmREYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEhlYWRpbmdFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MUHJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6U3RhdGU6Oik6CisgICAgICAgICogaWNvbi9JY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OkluaGVyaXRlZEZsYWdzOjopOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjopOgorICAgICAg
ICAqIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICoga3N2ZzIvc2NyaXB0cy9tYWtlX25hbWVzLnBsOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdDb2xvci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYWludC5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcGxhdGZv
cm0vRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleTo6Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Gb250
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YTo6Rm9udERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL0ZvbnREYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZvbnRDYWNo
ZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvR2x5cGhNYXBNYWMuY3BwOgorICAgICAg
ICAqIHJlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlcHJlY2F0ZWRSZW5kZXJTZWxlY3Q6OnNldFdpZGdldFdyaXRpbmdEaXJlY3Rpb24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvdy5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvdzo6UmVuZGVyRmxvdyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYW1lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL2JpZGkuaDoKKwogMjAwNi0wNy0yNyAgRXJpYyBTZWlkZWwgIDxlcmlj
QGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGFwLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjQ4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTM1MCw2ICszNTAsOCBAQAogCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2Fs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcy
RDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi87IH07CiAJCTg1NEZFNzM4MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2Vy
LmNwcCAqLzsgfTsKIAkJODU0RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJGMEEy
Mjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi87IH07CisJCTg1RUM5QUZBMEE3MUEyQzYw
MEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggKi87IH07
CisJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVE
IC8qIExhbmd1YWdlLmggKi87IH07CiAJCTkzMDMyQ0M4MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRo
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMw
MzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi87IH07CiAJCTkzMDMyQ0NBMDlB
RUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovOyB9Owog
CQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBU
aW1lci5oICovOyB9OwpAQCAtMTU5OCwyMyArMTYwMCw2IEBACiAJCUZBRTA0MTkwMDk3NTk2Qzkw
MDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9h
ZGVyLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVnaW4g
UEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0JCUJDRjRFNTA5MEE3NTY2OTUwMDkwNTI3QSAvKiBE
ZXZlbG9wbWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gRGV2
ZWxvcG1lbnQ7Ci0JCX07Ci0JCUJDRjRFNTBBMEE3NTY2OTUwMDkwNTI3QSAvKiBEZXBsb3ltZW50
ICovID0gewotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVudDsK
LQkJfTsKLS8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKQEAgLTIwNTcsNiArMjA0Miw4IEBACiAJCTg1NEZFNzJEMEEyMjk3QkUwMDU4RDdBRCAv
KiBUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYXZlcnNh
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3
QUQgLyogVHJlZVdhbGtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVHJlZVdhbGtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJG
MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmVlV2Fsa2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
RUM5QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzAzMkNDNzA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMDMyQ0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTQw
LDcgKzQxMjcsNiBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQkNDRDc0REIwQTRDOEQz
NTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCAqLywKIAkJCQk5M0VFQzFGMDA5
QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuY3BwICovLAogCQkJCTkzRUVDMUYxMDlD
Mjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTkzMENBQjg4MDlDNDlF
RkEwMDIyOUMwNCAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8sCkBAIC00MzQyLDYgKzQzMjgsNyBA
QAogCQkJCUE4RUE3OUU2MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxpc3RFbGVtZW50LmggKi8s
CiAJCQkJMUE4NUIxRDUwQTFCMjM2QzAwRDhDODdDIC8qIEhUTUxVTGlzdEVsZW1lbnQuaWRsICov
LAogCQkJCUJDQ0Q3NEU0MEE0QzhEREYwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJjZURvY3VtZW50
LmNwcCAqLywKKwkJCQlCQ0NENzREQjBBNEM4RDM1MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBodG1sOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTUxNTEsNiArNTEzOCw3IEBACiAJCQkJQkM2REFCRjIwQTE5MDE1NzAwRTVD
RDE0IC8qIEZvbnRDYWNoZS5jcHAgKi8sCiAJCQkJQkNGN0MwQjcwQTE2ODdDQzAwMzJGNzVCIC8q
IEZvbnRDYWNoZS5oICovLAogCQkJCUJDQzA4OTE5MEExQzQ2NTIwMDYxODlBNiAvKiBGb250RGF0
YS5jcHAgKi8sCisJCQkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggKi8s
CiAJCQkJQkNDNDdFNkEwOUEzRkU0NzAwQURCNzcxIC8qIEZvbnREZXNjcmlwdGlvbi5oICovLAog
CQkJCUJDRjdDMDc3MEExNjgwQzAwMDMyRjc1QiAvKiBGb250RmFsbGJhY2tMaXN0LmNwcCAqLywK
IAkJCQlCQ0VCMzc3NTA5QjdCQjBEMDBDQjM4QjEgLyogRm9udEZhbGxiYWNrTGlzdC5oICovLApA
QCAtNTE3NSw2ICs1MTYzLDcgQEAKIAkJCQlCQ0YxQTVFRjA5NzgzOTYwMDA2MUExMjMgLyogSW50
U2l6ZS5oICovLAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLywK
IAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovLAorCQkJCTg1RUM5QUY5
MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovLAogCQkJCUY1ODc4NTEzMDJERTM3NTkw
MUVBNDEyMiAvKiBMaXN0Qm94LmggKi8sCiAJCQkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8q
IExvY2FsaXplZFN0cmluZ3MuaCAqLywKIAkJCQlBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyog
TG9nZ2luZy5jcHAgKi8sCkBAIC01MjUzLDE0ICs1MjQyLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJF
ODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJNEUxOTU5MjMwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnkuY3BwICovLAot
CQkJCTRFMTk1OTI0MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmggKi8sCi0JCQkJNEUx
OTU5MjUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovLAotCQkJ
CTRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8sCi0J
CQkJNEUxOTU5MjcwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuY3BwICovLAotCQkJ
CTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8sCi0JCQkJNEUx
OTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLywKLQkJCQk0
RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCAqLywKIAkJCQlB
ODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlF
MEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKIAkJCQlBODBFNkNCQjBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBAIC01MzMxLDggKzUzMTIsMTYg
QEAKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AgKi8sCiAJCQkJOTND
QTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIgKi8sCiAJCQkJOTNDQTRDOUQw
OURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMgKi8sCisJCQkJNEUxOTU5MUYwQTM5REFCQTAw
MjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLywKKwkJCQk0RTE5NTkyMDBBMzlEQUJB
MDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCAqLywKIAkJCQlBOEVBODAwMTBBMTk1MTZF
MDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCAqLywKIAkJCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVG
NUYgLyogTWVkaWFMaXN0LmggKi8sCisJCQkJNEUxOTU5MjMwQTM5REFDQzAwMjIwRkU1IC8qIE1l
ZGlhUXVlcnkuY3BwICovLAorCQkJCTRFMTk1OTI0MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5LmggKi8sCisJCQkJNEUxOTU5MjUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwICovLAorCQkJCTRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmggKi8sCisJCQkJNEUxOTU5MjcwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVl
cnlFeHAuY3BwICovLAorCQkJCTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5
RXhwLmggKi8sCiAJCQkJQTgwRTZDRDEwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCAqLywKIAkJ
CQk5M0NBNEM5RjA5REY5M0ZBMDBERjg2NzcgLyogcXVpcmtzLmNzcyAqLywKIAkJCQlBODBFNzk5
NjBBMTlCRDIxMDA3RkI4QzUgLyogUmVjdC5pZGwgKi8sCkBAIC01MzU3LDE0ICs1MzQ2LDYgQEAK
IAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNBIC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQUJEREZFNzMwQTVDNkU2RjAwQTNFMTFE
IC8qIFJlbmRlck1lbnVMaXN0LmNwcCAqLywKLQkJCQlBQkRERkU3NDBBNUM2RTcwMDBBM0UxMUQg
LyogUmVuZGVyTWVudUxpc3QuaCAqLywKLQkJCQlBQkRERkU3NTBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyUG9wdXBNZW51LmNwcCAqLywKLQkJCQlBQkRERkU3NjBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyUG9wdXBNZW51LmggKi8sCi0JCQkJQUJEREZFNzcwQTVDNkU3MDAwQTNFMTFEIC8qIFJl
bmRlclBvcHVwTWVudU1hYy5oICovLAotCQkJCUFCRERGRTc4MEE1QzZFNzAwMEEzRTExRCAvKiBS
ZW5kZXJQb3B1cE1lbnVNYWMubW0gKi8sCi0JCQkJQUJFN0I1MjEwQTQ4OUY4MzAwMzE4ODFDIC8q
IERlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuY3BwICovLAotCQkJCUFCRTdCNTIyMEE0ODlGODMwMDMx
ODgxQyAvKiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0LmggKi8sCiAJCQkJQThDRkYwNEIwQTE1NEYw
OTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgKi8sCiAJCQkJQThDRkYwNDkwQTE1NEYw
OTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oICovLAogCQkJCUJDRUE0ODEzMDk3RDkzMDIw
MDk0QzlFNCAvKiBiaWRpLmNwcCAqLywKQEAgLTUzNzIsNiArNTM1Myw4IEBACiAJCQkJQkNFQTQ4
MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLywKIAkJCQlCQ0VBNDgxNjA5
N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAqLywKIAkJCQlCQ0VBNDgxNzA5N0Q5MzAy
MDA5NEM5RTQgLyogRGF0YVJlZi5oICovLAorCQkJCUFCRTdCNTIxMEE0ODlGODMwMDMxODgxQyAv
KiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcCAqLywKKwkJCQlBQkU3QjUyMjBBNDg5RjgzMDAz
MTg4MUMgLyogRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oICovLAogCQkJCUJDOTJGMURCMEE0MEFF
QTMwMEFDMDc0NiAvKiBEZXByZWNhdGVkU2xpZGVyLmNwcCAqLywKIAkJCQlCQzkyRjFEQzBBNDBB
RUEzMDBBQzA3NDYgLyogRGVwcmVjYXRlZFNsaWRlci5oICovLAogCQkJCUE4Q0ZGNkNBMEExNTYx
Q0QwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCkBAIC01Mzg5LDggKzUzNzIsNiBAQAog
CQkJCTkzNUM0NzYwMDlBQzRDRDEwMEE2QUFCNCAvKiBMZW5ndGguaCAqLywKIAkJCQlBOEVBN0E0
RDBBMTkxQTUyMDBBOEVGNUYgLyogTGlzdE1hcmtlckJveC5jcHAgKi8sCiAJCQkJQThFQTdBNDkw
QTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guaCAqLywKLQkJCQlCQ0VBNDg0NDA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyU3R5bGUuY3BwICovLAotCQkJCUJDRUE0ODQ1MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJTdHlsZS5oICovLAogCQkJCUJDRUE0ODFDMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJBcHBsZXQuY3BwICovLAogCQkJCUJDRUE0ODFEMDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJBcHBsZXQuaCAqLywKIAkJCQlCQ0VBNDgxRTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyQXJlbmEuY3BwICovLApAQCAtNTQ0MSwxNCArNTQyMiwyMiBAQAogCQkJCUE4RUE3QTRDMEEx
OTFBNTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0SXRlbS5oICovLAogCQkJCUE4RUE3QTRCMEExOTFB
NTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0TWFya2VyLmNwcCAqLywKIAkJCQlBOEVBN0E0QTBBMTkx
QTUyMDBBOEVGNUYgLyogUmVuZGVyTGlzdE1hcmtlci5oICovLAorCQkJCUFCRERGRTczMEE1QzZF
NkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCisJCQkJQUJEREZFNzQwQTVDNkU3
MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8sCiAJCQkJQkNFQTQ4NDAwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJQkNFQTQ4NDEwOTdEOTMwMjAwOTRD
OUU0IC8qIFJlbmRlck9iamVjdC5oICovLAogCQkJCUE4NzFERUM4MEExNTMwQzcwMEIxMkE2OCAv
KiBSZW5kZXJQYXJ0LmNwcCAqLywKIAkJCQlBODcxREVDRjBBMTUzMEM3MDBCMTJBNjggLyogUmVu
ZGVyUGFydC5oICovLAogCQkJCUE4NzFERUNFMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJQYXJ0
T2JqZWN0LmNwcCAqLywKIAkJCQlBODcxREVDRDBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFy
dE9iamVjdC5oICovLAorCQkJCUFCRERGRTc1MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1
cE1lbnUuY3BwICovLAorCQkJCUFCRERGRTc2MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1
cE1lbnUuaCAqLywKKwkJCQlBQkRERkU3NzBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBN
ZW51TWFjLmggKi8sCisJCQkJQUJEREZFNzgwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVw
TWVudU1hYy5tbSAqLywKIAkJCQlBODcxREZERTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVw
bGFjZWQuY3BwICovLAogCQkJCUE4NzFERkRGMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBs
YWNlZC5oICovLAorCQkJCUJDRUE0ODQ0MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJTdHlsZS5j
cHAgKi8sCisJCQkJQkNFQTQ4NDUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclN0eWxlLmggKi8s
CiAJCQkJQThERjRBRTIwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmNwcCAqLywKIAkJ
CQlBOERGNEFFMTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGUuaCAqLywKIAkJCQlBOERG
NEFFMDA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVDZWxsLmNwcCAqLywKQEAgLTY0MTks
NiArNjQwOCw4IEBACiAJCQkJRTE0ODQzMkYwQTY3NEZDMjAwN0U0RDM5IC8qIFN0cmVhbWluZ1Rl
eHREZWNvZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGMzQ4MTBBNkM0MDUyMDBBQkUw
NkUgLyogV2ViU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGMzQ4MzBBNkM0
MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtNjQ1MiwxMiArNjQ0Myw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQlidWlsZFNldHRpbmdz
ID0gewotCQkJfTsKLQkJCWJ1aWxkU3R5bGVzID0gKAotCQkJCUJDRjRFNTA5MEE3NTY2OTUwMDkw
NTI3QSAvKiBEZXZlbG9wbWVudCAqLywKLQkJCQlCQ0Y0RTUwQTBBNzU2Njk1MDA5MDUyN0EgLyog
RGVwbG95bWVudCAqLywKLQkJCSk7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJ
CWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtNzQyNCw2ICs3NDA5LDcgQEAKIAkJ
CQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZF
X1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxf
REVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpA
QCAtNzQ2MCw2ICs3NDQ2LDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0g
WUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FS
TklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElO
RSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJ
CQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtNzQ5Niw2ICs3NDgzLDcgQEAKIAkJCQlHQ0NfUFJF
Q09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1Mg
PSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RP
UiA9IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCShy
ZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBACiAgKiBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAKICNpbmNsdWRlICJDYW52YXNH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKQEAgLTI4LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNDYW52YXNHcmFkaWVu
dC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgImtqc19odG1sLmgiCkBAIC0z
MjYsNCArMzI2LDQgQEAgSlNWYWx1ZSogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZQog
ICAgIHJldHVybiAwOwogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbW5vZGUuaAkocmV2aXNp
b24gMTU2NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb21ub2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBBdHRyaWJ1dGVzLCBOYW1l
c3BhY2VVUkksIFByZWZpeCwgTG9jYWxOYW1lLCBPd25lckRvY3VtZW50LCBJbnNlcnRCZWZvcmUs
CiAgICAgICAgIFJlcGxhY2VDaGlsZCwgUmVtb3ZlQ2hpbGQsIEFwcGVuZENoaWxkLCBIYXNBdHRy
aWJ1dGVzLCBIYXNDaGlsZE5vZGVzLAogICAgICAgICBDbG9uZU5vZGUsIE5vcm1hbGl6ZSwgSXNT
dXBwb3J0ZWQsIENvbnRhaW5zLCBJc1NhbWVOb2RlLCBJc0VxdWFsTm9kZSwgVGV4dENvbnRlbnQs
Ci0gICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBMb29rdXBQ
cmVmaXgsCisgICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBM
b29rdXBQcmVmaXgKICAgICB9OwogICAgIAogcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9icmlk
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdl
L21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2Jy
aWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcy
LDcgQEAgdHlwZWRlZiBlbnVtIHsKIHR5cGVkZWYgZW51bSB7CiAgICAgV2ViU2VsZWN0aW9uU3Rh
dGVOb25lLAogICAgIFdlYlNlbGVjdGlvblN0YXRlQ2FyZXQsCi0gICAgV2ViU2VsZWN0aW9uU3Rh
dGVSYW5nZSwKKyAgICBXZWJTZWxlY3Rpb25TdGF0ZVJhbmdlCiB9IFdlYlNlbGVjdGlvblN0YXRl
OwogCiB0eXBlZGVmIGVudW0gewpAQCAtMTU3LDcgKzE1Nyw3IEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgT2JqZWN0RWxlbWVudE5vbmUsCiAgICAgT2JqZWN0RWxlbWVudEltYWdlLAogICAgIE9iamVj
dEVsZW1lbnRGcmFtZSwKLSAgICBPYmplY3RFbGVtZW50UGx1Z2luLAorICAgIE9iamVjdEVsZW1l
bnRQbHVnaW4KIH0gT2JqZWN0RWxlbWVudFR5cGU7CiAKIEBwcm90b2NvbCBXZWJDb3JlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPE5TT2JqZWN0PgpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dl
YkNvcmVLZXlib2FyZEFjY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9X
ZWJDb3JlS2V5Ym9hcmRBY2Nlc3MuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2JyaWRn
ZS9tYWMvV2ViQ29yZUtleWJvYXJkQWNjZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUgKzI3
LDUgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXZWJDb3JlS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0ICAg
ICA9IDB4MDAwMDAwMDAsCiAgICAgV2ViQ29yZUtleWJvYXJkQWNjZXNzRnVsbCAgICAgICAgPSAw
eDAwMDAwMDAxLAogICAgIC8vIHRoaXMgZmxhZyBtYXkgYmUgb3InZWQgd2l0aCBlaXRoZXIgb2Yg
dGhlIHR3byBhYm92ZQotICAgIFdlYkNvcmVLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzID0gMHgx
MDAwMDAwMCwgCisgICAgV2ViQ29yZUtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgPSAweDEwMDAw
MDAwCiB9IFdlYkNvcmVLZXlib2FyZFVJTW9kZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0NoaWxkTm9k
ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxNyArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGls
ZE5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0Ci17CitjbGFzcyBDaGlsZE5vZGVMaXN0IDogcHVi
bGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBDaGlsZE5vZGVMaXN0KCBOb2RlICpuKTsKKyAg
ICBDaGlsZE5vZGVMaXN0KE5vZGUqKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlICppdGVtICggdW5zaWduZWQgaW5kZXggKSBjb25zdDsK
KyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKCBOb2RlICp0ZXN0Tm9kZSApIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3Q7CiB9
OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBET01fQ2hpbGROb2RlTGlzdEltcGxfaApJbmRleDogV2ViQ29yZS9kb20vRG9jUHRy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jUHRyLmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9kb20vRG9jUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRG9jUHRy
Ci17Ci0gcHVibGljOgordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERvY1B0ciB7CitwdWJsaWM6
CiAgICAgRG9jUHRyKCkgOiBtX3B0cigwKSB7fQogICAgIERvY1B0cihUICpwdHIpIDogbV9wdHIo
cHRyKSB7IGlmIChwdHIpIHB0ci0+c2VsZk9ubHlSZWYoKTsgfQogICAgIERvY1B0cihjb25zdCBE
b2NQdHIgJm8pIDogbV9wdHIoby5tX3B0cikgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+c2Vs
Zk9ubHlSZWZSZWYoKTsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCShyZXZpc2lvbiAxNTY0OCkK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDI1
ICsyNiwyOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBIHJhbmdlIG9mIGEgbm9kZSB3
aXRoaW4gYSBkb2N1bWVudCB0aGF0IGlzICJtYXJrZWQiLCBzdWNoIGFzIGJlaW5nIG1pc3NwZWxs
ZWQKLXN0cnVjdCBEb2N1bWVudE1hcmtlcgoteworc3RydWN0IERvY3VtZW50TWFya2VyIHsKKwog
ICAgIGVudW0gTWFya2VyVHlwZSB7Ci0gICAgICAgIEFsbE1hcmtlcnMgPSAtMSwKLSAgICAgICAg
U3BlbGxpbmcgPSAwLAotICAgICAgICBUZXh0TWF0Y2gsCisgICAgICAgIEFsbE1hcmtlcnMgID0g
LTEsCisgICAgICAgIFNwZWxsaW5nICAgID0gMCwKKyAgICAgICAgVGV4dE1hdGNoICAgPSAxCiAg
ICAgfTsKLSAgICAKKwogICAgIGVudW0gTWFya2VyVHlwZSB0eXBlOwotICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qg
RG9jdW1lbnRNYXJrZXIgJm8pIGNvbnN0IHsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldDsKKyAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRG9jdW1l
bnRNYXJrZXImIG8pIGNvbnN0CisgICAgewogICAgICAgICByZXR1cm4gdHlwZSA9PSBvLnR5cGUg
JiYgc3RhcnRPZmZzZXQgPT0gby5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gby5lbmRPZmZz
ZXQ7CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IERvY3VtZW50TWFya2VyICZv
KSBjb25zdCB7CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG9jdW1lbnRNYXJrZXImIG8p
IGNvbnN0CisgICAgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiB9Owog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIERPTV9Eb2N1
bWVudE1hcmtlcl9oCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudFRhcmdldE5vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudFRhcmdldE5vZGUuaAkocmV2aXNpb24gMTU2NDgpCisr
KyBXZWJDb3JlL2RvbS9FdmVudFRhcmdldE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYg
KzEyMSw2IEBAIGlubGluZSB2b2lkIGFsbG93RXZlbnREaXNwYXRjaCgpIHsgfQogCiAjZW5kaWYg
Ly8gTkRFQlVHIAogCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRE9NX0V2ZW50VGFyZ2V0Tm9kZUltcGxfaApJbmRleDog
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgRE9NX0tFWV9MT0NBVElPTl9TVEFOREFSRCAgICAgID0gMHgwMCwKICAg
ICAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fTEVGVCAgICAgICAgICA9IDB4MDEsCiAgICAgICAg
ICAgICBET01fS0VZX0xPQ0FUSU9OX1JJR0hUICAgICAgICAgPSAweDAyLAotICAgICAgICAgICAg
RE9NX0tFWV9MT0NBVElPTl9OVU1QQUQgICAgICAgID0gMHgwMywKKyAgICAgICAgICAgIERPTV9L
RVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9IDB4MDMKICAgICAgICAgfTsKICAgICAgICAgCiAg
ICAgICAgIEtleWJvYXJkRXZlbnQoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywy
NSArMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLyoqCiAgKiBOb2RlTGlzdCB3aGljaCBs
aXN0cyBhbGwgTm9kZXMgaW4gYSBFbGVtZW50IHdpdGggYSBnaXZlbiAibmFtZT0iIHRhZwogICov
Ci1jbGFzcyBOYW1lTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QKLXsKK2NsYXNzIE5hbWVOb2Rl
TGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CiBwdWJsaWM6Ci0gICAgTmFtZU5vZGVMaXN0KCBOb2Rl
ICpkb2MsIGNvbnN0IFN0cmluZyAmdCApOworICAgIE5hbWVOb2RlTGlzdChOb2RlKiBkb2MsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBET00gbWV0aG9kcyBvdmVycmlkZGVuIGZyb20g
IHBhcmVudCBjbGFzc2VzCiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTm9kZSAqaXRlbSAoIHVuc2lnbmVkIGluZGV4ICkgY29uc3Q7CisgICAgdmly
dHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIC8vIE90aGVyIG1l
dGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKLSAgICB2aXJ0dWFsIHZvaWQgcm9vdE5vZGVDaGlsZHJl
bkNoYW5nZWQoKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgcm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcm9vdE5vZGVBdHRyaWJ1dGVDaGFuZ2VkKCkgeyBOb2Rl
TGlzdDo6cm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCBib29sIG5vZGVNYXRjaGVzKCBOb2RlICp0ZXN0Tm9kZSApIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3Q7CiAKICAgICBTdHJpbmcg
bm9kZU5hbWU7CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBET01fTmFtZU5vZGVMaXN0SW1wbF9oCkluZGV4OiBXZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmNwcAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN0cmluZyBRdWFsaWZpZWRO
YW1lOjp0b1N0cmluZygpIGNvbnN0CiB9CiAKIC8vIEdsb2JhbCBpbml0IHJvdXRpbmVzCi1ERUZJ
TkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3Rh
ckF0b20pOworREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCBhbnlOYW1lLCBudWxsQXRvbSwg
c3RhckF0b20sIHN0YXJBdG9tKQogCiB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogewpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL1VubGlua0NvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvZWRp
dGluZy9VbmxpbmtDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVubGlua0NvbW1hbmQgOiBwdWJsaWMgQ29t
cG9zaXRlRWRpdENvbW1hbmQKLXsKK2NsYXNzIFVubGlua0NvbW1hbmQgOiBwdWJsaWMgQ29tcG9z
aXRlRWRpdENvbW1hbmQgewogcHVibGljOgogICAgIFVubGlua0NvbW1hbmQoRG9jdW1lbnQqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0
aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRWRpdEFjdGlvblVubGluazsgfQotcHJpdmF0ZToK
IH07CiAKLX0gLy8gbmFtZXNwYWNlIGtodG1sCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBVbmxpbmtDb21tYW5kX2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjZW5k
aWYgLy8gVW5saW5rQ29tbWFuZF9oCkluZGV4OiBXZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTUgKzI3LDE1IEBACiAjaWZuZGVmIEhUTUxfRm9ybURhdGFMaXN0X2gKICNkZWZpbmUgSFRNTF9G
b3JtRGF0YUxpc3RfaAogCisjaW5jbHVkZSAiRGVwcmVjYXRlZFZhbHVlTGlzdC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVk
ZSAiRGVwcmVjYXRlZFZhbHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBGb3JtRGF0YUxpc3RJdGVtIHsKLSAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJlY2F0
ZWRDU3RyaW5nICZkYXRhKSA6IG1fZGF0YShkYXRhKSB7IH0KLSAgICBGb3JtRGF0YUxpc3RJdGVt
KGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnBhdGgpIDogbV9wYXRoKHBhdGgpIHsgfQorICAgIEZv
cm1EYXRhTGlzdEl0ZW0oY29uc3QgRGVwcmVjYXRlZENTdHJpbmcmIGRhdGEpIDogbV9kYXRhKGRh
dGEpIHsgfQorICAgIEZvcm1EYXRhTGlzdEl0ZW0oY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgcGF0
aCkgOiBtX3BhdGgocGF0aCkgeyB9CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIG1fcGF0aDsKICAg
ICBEZXByZWNhdGVkQ1N0cmluZyBtX2RhdGE7CkBAIC00NSwxNSArNDUsMTUgQEAgY2xhc3MgRm9y
bURhdGFMaXN0IHsKIHB1YmxpYzoKICAgICBGb3JtRGF0YUxpc3QoY29uc3QgVGV4dEVuY29kaW5n
Jik7CiAKLSAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IFN0cmlu
ZyAmdmFsdWUpCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXkuZGVwcmVjYXRlZFN0cmlu
ZygpKTsgYXBwZW5kU3RyaW5nKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7IH0KLSAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnZh
bHVlKQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgRGVwcmVj
YXRlZFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVk
U3RyaW5nKCkpOyBhcHBlbmRTdHJpbmcodmFsdWUpOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNv
bnN0IFN0cmluZyAma2V5LCBjb25zdCBEZXByZWNhdGVkQ1N0cmluZyAmdmFsdWUpCisgICAgdm9p
ZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBEZXByZWNhdGVkQ1N0cmluZyYg
dmFsdWUpCiAgICAgICAgIHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVkU3RyaW5nKCkpOyBh
cHBlbmRTdHJpbmcodmFsdWUpOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAm
a2V5LCBpbnQgdmFsdWUpCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYga2V5LCBp
bnQgdmFsdWUpCiAgICAgICAgIHsgYXBwZW5kU3RyaW5nKGtleS5kZXByZWNhdGVkU3RyaW5nKCkp
OyBhcHBlbmRTdHJpbmcoRGVwcmVjYXRlZFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7IH0KLSAgICB2
b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IFN0cmluZyAmZmlsZW5hbWUp
OworICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSk7CiAKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxGb3JtRGF0
YUxpc3RJdGVtPiBiZWdpbigpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fbGlzdC5iZWdpbigp
OyB9CkBAIC02MSwxMyArNjEsMTMgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBtX2xpc3Qu
ZW5kKCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBEZXByZWNh
dGVkQ1N0cmluZyAmcyk7Ci0gICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZFN0
cmluZyAmcyk7CisgICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZENTdHJpbmcm
KTsKKyAgICB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBEZXByZWNhdGVkU3RyaW5nJik7CiAKICAg
ICBUZXh0RW5jb2RpbmcgbV9lbmNvZGluZzsKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEZvcm1E
YXRhTGlzdEl0ZW0+IG1fbGlzdDsKIH07CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZgorI2VuZGlmIC8vIEhUTUxfRm9ybURhdGFMaXN0X2gKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEJsb2NrcXVvdGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9odG1sL0hU
TUxCbG9ja3F1b3RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTEJsb2NrcXVvdGVFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MQmxvY2txdW90ZUVsZW1lbnQgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxCbG9ja3F1b3RlRWxlbWVudChEb2N1bWVu
dCopOwogICAgIH5IVE1MQmxvY2txdW90ZUVsZW1lbnQoKTsKQEAgLTQxLDUgKzQwLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2l0ZShjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNw
YWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxCbG9j
a3F1b3RlRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MTUgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTERpdkVsZW1l
bnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxEaXZFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1MRGl2RWxlbWVudChEb2N1bWVudCopOwog
ICAgIH5IVE1MRGl2RWxlbWVudCgpOwotICAgIAorCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVz
IGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0K
ICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDU7IH0KLSAgICAK
KwogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIApAQCAtNDQsNSArNDMsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRBbGlnbihjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0j
ZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxEaXZFbGVtZW50
X0gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMSArMjYsMTcg
QEAKICNpZm5kZWYgSFRNTF9IVE1MRm9ybUVsZW1lbnRJbXBsX0gKICNkZWZpbmUgSFRNTF9IVE1M
Rm9ybUVsZW1lbnRJbXBsX0gKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIgCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGb3Jt
RGF0YTsKLX07CisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQ7CiBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogCi1jbGFzcyBI
VE1MRm9ybUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxGb3JtRWxl
bWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEZvcm1FbGVtZW50
KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1FbGVtZW50KCk7CkBAIC02NCw3ICs2
MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4g
bV9hdXRvY29tcGxldGU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVu
dChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVGb3JtRWxlbWVudChI
VE1MR2VuZXJpY0Zvcm1FbGVtZW50Kik7CkBAIC04MSwxMCArNzcsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UHJlc2VydmVBY3Jvc3NSZW1vdmUoYm9vbCBiKSB7IG1fcHJlc2VydmVBY3Jvc3NS
ZW1vdmUgPSBiOyB9CiAgICAgYm9vbCBwcmVzZXJ2ZUFjcm9zc1JlbW92ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc2VydmVBY3Jvc3NSZW1vdmU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0
dHJpYnV0ZShBdHRyaWJ1dGUgKmF0dHIpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICAKICAgICB2b2lkIHN1Ym1pdENsaWNrKCk7
Ci0gICAgYm9vbCBmb3JtV291bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcgJnVy
bCk7CisgICAgYm9vbCBmb3JtV291bGRIYXZlU2VjdXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcm
IHVybCk7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmKTsKQEAgLTEzMCw2ICsxMjYsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBvbGRO
YW1lQXR0cjsKIH07CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmCisjZW5kaWYgLy8gSFRNTF9IVE1MRm9ybUVsZW1lbnRJbXBsX0gKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxI
UkVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTEhSRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3Mg
SFRNTEhSRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEhS
RWxlbWVudChEb2N1bWVudCopOwogICAgIH5IVE1MSFJFbGVtZW50KCk7CkBAIC01Myw1ICs1Miw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpZHRoKGNvbnN0IFN0cmluZyYpOwogfTsKIAotfTsg
Ly9uYW1lc3BhY2UKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SFRNTEhSRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCShyZXZpc2lv
biAxNTY0OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNyArMjEsNiBAQAogICoKICAqLwogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAj
aWZuZGVmIEhUTUxIZWFkaW5nRWxlbWVudF9ICiAjZGVmaW5lIEhUTUxIZWFkaW5nRWxlbWVudF9I
CiAKQEAgLTI5LDggKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1M
SGVhZGluZ0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxIZWFkaW5n
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEhlYWRpbmdF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00Miw1ICs0MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsaWduKGNvbnN0IFN0cmluZyYpOwogfTsKIAotfTsg
Ly9uYW1lc3BhY2UKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SFRNTEhlYWRpbmdFbGVtZW50X0gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSFRNTE1hcnF1ZWVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1M
TWFycXVlZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxN
YXJxdWVlRWxlbWVudChEb2N1bWVudCopOwogICAgIApAQCAtNDUsNSArNDQsNiBAQCBwcml2YXRl
OgogICAgIGludCBtX21pbmltdW1EZWxheTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxNYXJxdWVlRWxlbWVudF9I
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsOCArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQYXJhZ3Jh
cGhFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MUGFyYWdyYXBoRWxl
bWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFBhcmFncmFwaEVs
ZW1lbnQoRG9jdW1lbnQqKTsKIApAQCAtNDQsNSArNDMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRBbGlnbihjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxQYXJhZ3JhcGhFbGVtZW50X0gK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MUHJlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFByZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQKLXsKK2NsYXNzIEhUTUxQcmVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1
YmxpYzoKICAgICBIVE1MUHJlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKIApAQCAtNDEsMTAgKzQwLDExIEBAIHB1YmxpYzoKIAogICAgIGludCB3aWR0aCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpOwotICAgIAorCiAgICAgYm9vbCB3cmFwKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRXcmFwKGJvb2wgYik7CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2Vu
ZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIVE1MUHJlRWxlbWVudF9I
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MVG9rZW5pemVyLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBEaXNjYXJkTEYgPSAxIDw8IDIwLCAvLyBGSVhNRTogc2hvdWxkIGNs
YXJpZnkgZGlmZmVyZW5jZSBiZXR3ZWVuIHNraXAgYW5kIGRpc2NhcmQKICAgICAgICAgICAgIEFs
bG93WWllbGQgPSAxIDw8IDIxLAogICAgICAgICAgICAgTG9hZGluZ0V4dFNjcmlwdCA9IDEgPDwg
MjIsCi0gICAgICAgICAgICBGb3JjZVN5bmNocm9ub3VzID0gMSA8PCAyMywKKyAgICAgICAgICAg
IEZvcmNlU3luY2hyb25vdXMgPSAxIDw8IDIzCiAgICAgICAgIH07CiAgICAgCiAgICAgICAgIHZv
aWQgc2V0Qml0KFN0YXRlQml0cyBiaXQsIGJvb2wgdmFsdWUpIApJbmRleDogV2ViQ29yZS9pY29u
L0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pY29uL0ljb25EYXRhYmFz
ZS5jcHAJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9pY29uL0ljb25EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDE1ICsyMiwxNiBAQAogICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSWNvbkRh
dGFiYXNlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCiAjaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogCkBAIC03NzEsNCArNzcyLDQgQEAgSWNvbkRhdGFi
YXNlOjp+SWNvbkRhdGFiYXNlKCkKICAgICBtX2RiLmNsb3NlKCk7CiB9CiAKLX0gLy9uYW1lc3Bh
Y2UgV2ViQ29yZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30gLy9uYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxNTY0OCkK
KysrIFdlYkNvcmUva3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDEwICs1Nyw5IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90OwogICAg
IGlmKCEoR3JvdXAtPlZhcmlhYmxlID09IFZhbHVlKSkgXAogICAgICAgICBHcm91cC5hY2Nlc3Mo
KS0+VmFyaWFibGUgPSBWYWx1ZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBT
VkdSZW5kZXJTdHlsZSA6IHB1YmxpYyBTaGFyZWQ8U1ZHUmVuZGVyU3R5bGU+Ci0gICAgeyAgICAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR1JlbmRlclN0eWxlIDogcHVibGlj
IFNoYXJlZDxTVkdSZW5kZXJTdHlsZT4geyAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1Jl
bmRlclN0eWxlKCk7CiAgICAgICAgIFNWR1JlbmRlclN0eWxlKGJvb2wpOyAvLyBVc2VkIHRvIGNy
ZWF0ZSB0aGUgZGVmYXVsdCBzdHlsZS4KQEAgLTExOSwxNiArMTE4LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIGluaGVyaXQKLSAgICAgICAgc3Ry
dWN0IEluaGVyaXRlZEZsYWdzCi0gICAgICAgIHsKKyAgICAgICAgc3RydWN0IEluaGVyaXRlZEZs
YWdzIHsKICAgICAgICAgICAgIC8vIDY0IGJpdCBpbmhlcml0ZWQsIGRvbid0IGFkZCB0byB0aGUg
c3RydWN0LCBvciB0aGUgb3BlcmF0b3Igd2lsbCBicmVhay4KICAgICAgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIF9pZmxh
Z3MgPT0gb3RoZXIuX2lmbGFnczsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEluaGVyaXRlZEZsYWdzICZvdGhlcikgY29uc3QgeyByZXR1cm4gX2lmbGFncyAhPSBvdGhlci5f
aWZsYWdzOyB9CiAKLSAgICAgICAgICAgIHVuaW9uCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc3RydWN0Ci0gICAgICAgICAgICAgICAgeworICAgICAgICAgICAgdW5pb24geworICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9jb2xv
clJlbmRlcmluZyA6IDI7IC8vIEVDb2xvclJlbmRlcmluZwogICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBfaW1hZ2VSZW5kZXJpbmcgOiAyOyAvLyBFSW1hZ2VSZW5kZXJpbmcgCiAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIF9zaGFwZVJlbmRlcmluZyA6IDI7IC8vIEVTaGFwZVJlbmRl
cmluZyAKQEAgLTE0OSwxNiArMTQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIH0g
c3ZnX2luaGVyaXRlZF9mbGFnczsKIAogICAgICAgICAvLyBkb24ndCBpbmhlcml0Ci0gICAgICAg
IHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncwotICAgICAgICB7CisgICAgICAgIHN0cnVjdCBOb25J
bmhlcml0ZWRGbGFncyB7CiAgICAgICAgICAgICAvLyA2NCBiaXQgbm9uLWluaGVyaXRlZCwgZG9u
J3QgYWRkIHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRvciB3aWxsIGJyZWFrLgogICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzICZvdGhlcikgY29u
c3QgeyByZXR1cm4gX25pZmxhZ3MgPT0gb3RoZXIuX25pZmxhZ3M7IH0KICAgICAgICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIF9uaWZsYWdzICE9IG90aGVyLl9uaWZsYWdzOyB9CiAKLSAgICAgICAgICAgIHVuaW9uCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RydWN0Ci0gICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgdW5pb24geworICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIF9hbGlnbm1lbnRCYXNlbGluZSA6IDQ7IC8vIEVBbGlnbm1lbnRC
YXNlbGluZSAKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2RvbWluYW50QmFzZWxpbmUg
OiA0OyAvLyBFRG9taW5hbnRCYXNlbGluZQogICAgICAgICAgICAgICAgICAgICAvLyAyNCBiaXRz
IHVudXNlZApAQCAtMjA0LDkgKzE5NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAg
ICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERv
bWluYW50QmFzZWxpbmUoKTsKICAgICAgICAgfQogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NW
R19TVkdSZW5kZXJTdHlsZV9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
Y3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2
ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3NCArNDMs
NjEgQEAKICAgICBEYXRhIE5hbWUoKSBjb25zdCB7IHJldHVybiAoRGF0YSkgc3ZnX2luaGVyaXRl
ZF9mbGFncy5mLl8jI05hbWU7IH0gXAogICAgIHN0YXRpYyBEYXRhIGluaXRpYWwjI1R5cGUoKSB7
IHJldHVybiBJbml0aWFsOyB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgZW51bSBFV2lu
ZFJ1bGUKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBlbnVtIEVXaW5kUnVsZSB7
CiAgICAgICAgIFdSX05PTlpFUk8gPSAwLCBXUl9FVkVOT0REID0gMQogICAgIH07CiAKLSAgICBl
bnVtIEVDYXBTdHlsZQotICAgIHsKKyAgICBlbnVtIEVDYXBTdHlsZSB7CiAgICAgICAgIENTX0JV
VFQgPSAxLCBDU19ST1VORCA9IDIsIENTX1NRVUFSRSA9IDMKICAgICB9OwogCi0gICAgZW51bSBF
Sm9pblN0eWxlCi0gICAgeworICAgIGVudW0gRUpvaW5TdHlsZSB7CiAgICAgICAgIEpTX01JVEVS
ID0gMSwgSlNfUk9VTkQgPSAyLCBKU19CRVZFTCA9IDMKICAgICB9OwogCi0gICAgZW51bSBFVGV4
dEFuY2hvcgotICAgIHsKKyAgICBlbnVtIEVUZXh0QW5jaG9yIHsKICAgICAgICAgVEFfU1RBUlQs
IFRBX01JRERMRSwgVEFfRU5ECiAgICAgfTsKIAotICAgIGVudW0gRUNvbG9ySW50ZXJwb2xhdGlv
bgotICAgIHsKKyAgICBlbnVtIEVDb2xvckludGVycG9sYXRpb24gewogICAgICAgICBDSV9BVVRP
LCBDSV9TUkdCLCBDSV9MSU5FQVJSR0IKICAgICB9OwogCi0gICAgZW51bSBFQ29sb3JSZW5kZXJp
bmcKLSAgICB7CisgICAgZW51bSBFQ29sb3JSZW5kZXJpbmcgewogICAgICAgICBDUl9BVVRPLCBD
Ul9PUFRJTUlaRVNQRUVELCBDUl9PUFRJTUlaRVFVQUxJVFkKICAgICB9OwogICAgIAotICAgIGVu
dW0gRUltYWdlUmVuZGVyaW5nCi0gICAgeworICAgIGVudW0gRUltYWdlUmVuZGVyaW5nIHsKICAg
ICAgICAgSVJfQVVUTywgSVJfT1BUSU1JWkVTUEVFRCwgSVJfT1BUSU1JWkVRVUFMSVRZCiAgICAg
fTsKIAotICAgIGVudW0gRVNoYXBlUmVuZGVyaW5nCi0gICAgeworICAgIGVudW0gRVNoYXBlUmVu
ZGVyaW5nIHsKICAgICAgICAgU1JfQVVUTywgU1JfT1BUSU1JWkVTUEVFRCwgU1JfQ1JJU1BFREdF
UywgU1JfR0VPTUVUUklDUFJFQ0lTSU9OCiAgICAgfTsKIAotICAgIGVudW0gRVRleHRSZW5kZXJp
bmcKLSAgICB7CisgICAgZW51bSBFVGV4dFJlbmRlcmluZyB7CiAgICAgICAgIFRSX0FVVE8sIFRS
X09QVElNSVpFU1BFRUQsIFRSX09QVElNSVpFTEVHSUJJTElUWSwgVFJfR0VPTUVUUklDUFJFQ0lT
SU9OCiAgICAgfTsKIAotICAgIGVudW0gRVdyaXRpbmdNb2RlCi0gICAgeworICAgIGVudW0gRVdy
aXRpbmdNb2RlIHsKICAgICAgICAgV01fTFJUQiwgV01fTFIsIFdNX1JMVEIsIFdNX1JMLCBXTV9U
QlJMLCBXTV9UQgogICAgIH07CiAgICAgCi0gICAgZW51bSBFQWxpZ25tZW50QmFzZWxpbmUKLSAg
ICB7CisgICAgZW51bSBFQWxpZ25tZW50QmFzZWxpbmUgewogICAgICAgICBBQl9BVVRPLCBBQl9C
QVNFTElORSwgQUJfQkVGT1JFX0VER0UsIEFCX1RFWFRfQkVGT1JFX0VER0UsCiAgICAgICAgIEFC
X01JRERMRSwgQUJfQ0VOVFJBTCwgQUJfQUZURVJfRURHRSwgQUJfVEVYVF9BRlRFUl9FREdFLAog
ICAgICAgICBBQl9JREVPR1JBUEhJQywgQUJfQUxQSEFCRVRJQywgQUJfSEFOR0lORywgQUJfTUFU
SEVNQVRJQ0FMCiAgICAgfTsKIAotICAgIGVudW0gRURvbWluYW50QmFzZWxpbmUKLSAgICB7Cisg
ICAgZW51bSBFRG9taW5hbnRCYXNlbGluZSB7CiAgICAgICAgIERCX0FVVE8sIERCX1VTRV9TQ1JJ
UFQsIERCX05PX0NIQU5HRSwgREJfUkVTRVRfU0laRSwKICAgICAgICAgREJfSURFT0dSQVBISUMs
IERCX0FMUEhBQkVUSUMsIERCX0hBTkdJTkcsIERCX01BVEhFTUFUSUNBTCwKICAgICAgICAgREJf
Q0VOVFJBTCwgREJfTUlERExFLCBEQl9URVhUX0FGVEVSX0VER0UsIERCX1RFWFRfQkVGT1JFX0VE
R0UKICAgICB9OwogCi0gICAgZW51bSBFUG9pbnRlckV2ZW50cwotICAgIHsKKyAgICBlbnVtIEVQ
b2ludGVyRXZlbnRzIHsKICAgICAgICAgUEVfTk9ORSwgUEVfU1RST0tFLCBQRV9GSUxMLCBQRV9Q
QUlOVEVELCBQRV9WSVNJQkxFLAogICAgICAgICBQRV9WSVNJQkxFX1NUUk9LRSwgUEVfVklTSUJM
RV9GSUxMLCBQRV9WSVNJQkxFX1BBSU5URUQsIFBFX0FMTAogICAgIH07CkBAIC0xMTgsOCArMTA1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiAKICAgICAv
LyBJbmhlcml0ZWQvTm9uLUluaGVyaXRlZCBTdHlsZSBEYXRhc3RydWN0dXJlcwotICAgIGNsYXNz
IFN0eWxlRmlsbERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlRmlsbERhdGE+Ci0gICAgeworICAg
IGNsYXNzIFN0eWxlRmlsbERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlRmlsbERhdGE+IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFN0eWxlRmlsbERhdGEoKTsKICAgICAgICAgU3R5bGVGaWxsRGF0
YShjb25zdCBTdHlsZUZpbGxEYXRhICZvdGhlcik7CkBAIC0xMzcsOCArMTIzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgU3R5bGVGaWxsRGF0YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxl
RmlsbERhdGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1Ymxp
YyBTaGFyZWQ8U3R5bGVTdHJva2VEYXRhPgotICAgIHsKKyAgICBjbGFzcyBTdHlsZVN0cm9rZURh
dGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlU3Ryb2tlRGF0YT4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgU3R5bGVTdHJva2VEYXRhKCk7CiAgICAgICAgIFN0eWxlU3Ryb2tlRGF0YShjb25zdCBTdHls
ZVN0cm9rZURhdGEgJm90aGVyKTsKQEAgLTE2Miw4ICsxNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBTdHlsZVN0cm9rZURhdGEgJm9wZXJhdG9yPShjb25zdCBTdHlsZVN0cm9rZURh
dGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0eWxlU3RvcERhdGEgOiBwdWJsaWMgU2hhcmVk
PFN0eWxlU3RvcERhdGE+Ci0gICAgeworICAgIGNsYXNzIFN0eWxlU3RvcERhdGEgOiBwdWJsaWMg
U2hhcmVkPFN0eWxlU3RvcERhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0eWxlU3RvcERh
dGEoKTsKICAgICAgICAgU3R5bGVTdG9wRGF0YShjb25zdCBTdHlsZVN0b3BEYXRhICZvdGhlcik7
CkBAIC0xODEsOCArMTY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU3R5bGVTdG9w
RGF0YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxlU3RvcERhdGEgJik7CiAgICAgfTsKIAotICAgIGNs
YXNzIFN0eWxlQ2xpcERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlQ2xpcERhdGE+Ci0gICAgewor
ICAgIGNsYXNzIFN0eWxlQ2xpcERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlQ2xpcERhdGE+IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFN0eWxlQ2xpcERhdGEoKTsKICAgICAgICAgU3R5bGVDbGlw
RGF0YShjb25zdCBTdHlsZUNsaXBEYXRhICZvdGhlcik7CkBAIC0xOTksOCArMTgyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU3R5bGVDbGlwRGF0YSAmb3BlcmF0b3I9KGNvbnN0IFN0
eWxlQ2xpcERhdGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0eWxlTWFza0RhdGEgOiBwdWJs
aWMgU2hhcmVkPFN0eWxlTWFza0RhdGE+Ci0gICAgeworICAgIGNsYXNzIFN0eWxlTWFza0RhdGEg
OiBwdWJsaWMgU2hhcmVkPFN0eWxlTWFza0RhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0
eWxlTWFza0RhdGEoKTsKICAgICAgICAgU3R5bGVNYXNrRGF0YShjb25zdCBTdHlsZU1hc2tEYXRh
ICZvdGhlcik7CkBAIC0yMTQsOCArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
U3R5bGVNYXNrRGF0YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxlTWFza0RhdGEgJik7CiAgICAgfTsK
IAotICAgIGNsYXNzIFN0eWxlTWFya2VyRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNYXJrZXJE
YXRhPgotICAgIHsKKyAgICBjbGFzcyBTdHlsZU1hcmtlckRhdGEgOiBwdWJsaWMgU2hhcmVkPFN0
eWxlTWFya2VyRGF0YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVNYXJrZXJEYXRhKCk7
CiAgICAgICAgIFN0eWxlTWFya2VyRGF0YShjb25zdCBTdHlsZU1hcmtlckRhdGEgJm90aGVyKTsK
QEAgLTIzNSw4ICsyMTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIH07CiAKICAgICAvLyBO
b3RlIDogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMsICpubyBpbmhlcml0YW5jZSogb2YgdGhl
c2UgcHJvcHMKLSAgICBjbGFzcyBTdHlsZU1pc2NEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZU1p
c2NEYXRhPgotICAgIHsKKyAgICBjbGFzcyBTdHlsZU1pc2NEYXRhIDogcHVibGljIFNoYXJlZDxT
dHlsZU1pc2NEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZU1pc2NEYXRhKCk7CiAg
ICAgICAgIFN0eWxlTWlzY0RhdGEoY29uc3QgU3R5bGVNaXNjRGF0YSAmb3RoZXIpOwpAQCAtMjU0
LDkgKzIzNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
eWxlTWlzY0RhdGEgJm9wZXJhdG9yPShjb25zdCBTdHlsZU1pc2NEYXRhICYpOwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2Vu
ZGlmCisjZW5kaWYgLy8gS1NWR19TVkdSZW5kZXJTdHlsZURlZnNfSAogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbAkocmV2aXNpb24gMTU2NDgp
CisrKyBXZWJDb3JlL2tzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpA
QCAtMzAxLDcgKzMwMSw3IEBAIHByaW50ICJ2b2lkIGluaXQoKQogCQlwcmludERlZmluaXRpb25z
KFxAYXR0cnMsICJhdHRyaWJ1dGVzIiwgJGF0dHJzTmFtZXNwYWNlKTsKIAl9CiAKLQlwcmludCAi
fVxuXG59IH0iOworCXByaW50ICJ9XG5cbn0gfVxuXG4iOwogCXJlc3RvcmVTVERPVVQoKTsKIH0K
IApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDb2xvci5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMSBAQAogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAotbmFtZXNwYWNl
IFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSR0JDb2xvcjsKICAg
ICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogICAgIAotICAgIGNsYXNzIFNWR0NvbG9yIDog
cHVibGljIENTU1ZhbHVlCi0gICAgeworICAgIGNsYXNzIFNWR0NvbG9yIDogcHVibGljIENTU1Zh
bHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0NvbG9yKCk7CiAgICAgICAgIFNWR0NvbG9y
KGNvbnN0IFN0cmluZyYgcmdiQ29sb3IpOwpAQCAtNjgsOSArNjYsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9jb2xvclR5cGU7CiAgICAgICAgIFN0cmlu
ZyBtX3JnYkNvbG9yOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdDb2xvckltcGxf
SAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYWludC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhaW50LmgJKHJldmlzaW9uIDE1
NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGFpbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgPFNWR0NvbG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlCi17Ci0gICAgY2xhc3MgU1ZHUGFpbnQgOiBwdWJsaWMgU1ZHQ29sb3IKLSAgICB7CituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdQYWludCA6IHB1YmxpYyBTVkdDb2xvciB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdQYWludCgpOwogICAgICAgICBTVkdQYWludChTdHJp
bmdJbXBsICp1cmkpOwpAQCAtNTAsOSArNDksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbV9wYWludFR5cGU7CiAgICAgICAgIFN0cmluZyBtX3VyaTsKICAg
ICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBP
UlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHUGFpbnRJbXBsX0gKIAogLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0ZyYW1lLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJp
bmdMaXN0LmgiCiAjaW5jbHVkZSAiRWRpdEFjdGlvbi5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgotI2luY2x1ZGUgIlNjcm9sbEJhci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JvbGxCYXIuaCIKICNpbmNsdWRlICJUZXh0QWZm
aW5pdHkuaCIKICNpbmNsdWRlICJUZXh0R3JhbnVsYXJpdHkuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBLSlMgewogICAg
IGNsYXNzIEpTVmFsdWU7CkBAIC04NywxMSArODcsMTAgQEAgZW51bSBPYmplY3RDb250ZW50VHlw
ZSB7CiAgICAgT2JqZWN0Q29udGVudE5vbmUsCiAgICAgT2JqZWN0Q29udGVudEltYWdlLAogICAg
IE9iamVjdENvbnRlbnRGcmFtZSwKLSAgICBPYmplY3RDb250ZW50UGx1Z2luLAorICAgIE9iamVj
dENvbnRlbnRQbHVnaW4KIH07CiAKIGNsYXNzIEZyYW1lIDogcHVibGljIFNoYXJlZDxGcmFtZT4s
IE5vbmNvcHlhYmxlIHsKLQogcHVibGljOgogICBlbnVtIHsgTm9YUG9zRm9yVmVydGljYWxBcnJv
d05hdmlnYXRpb24gPSBJTlRfTUlOIH07CiAKQEAgLTgxOCw2ICs4MTcsNiBAQCBwdWJsaWM6CiAg
IEZyYW1lUHJpdmF0ZSogZDsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gRnJhbWVfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250Q2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRm9udENhY2hlLmNwcAkocmV2aXNp
b24gMTU2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDIwICsyOCwyMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorCiAjaW5jbHVkZSAi
Rm9udC5oIgogI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xpc3QuaCIKKyNpbmNsdWRlICJGb250UGxh
dGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkKLXsKK3N0cnVjdCBGb250UGxhdGZvcm1EYXRh
Q2FjaGVLZXkgewogICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWlseSA9IEF0b21pY1N0cmluZygpLCB1bnNpZ25lZCBzaXplID0gMCwgYm9vbCBib2xk
ID0gZmFsc2UsIGJvb2wgaXRhbGljID0gZmFsc2UpCi0gICAgOm1fZmFtaWx5KGZhbWlseSksIG1f
c2l6ZShzaXplKSwgbV9ib2xkKGJvbGQpLCBtX2l0YWxpYyhpdGFsaWMpCi0gICAge30KKyAgICAg
ICAgOiBtX2ZhbWlseShmYW1pbHkpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICwg
bV9ib2xkKGJvbGQpCisgICAgICAgICwgbV9pdGFsaWMoaXRhbGljKQorICAgIHsKKyAgICB9CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBvdGhl
cikgY29uc3QKICAgICB7CkBAIC0yMzgsNCArMjQxLDQgQEAgY29uc3QgRm9udERhdGEqIEZvbnRD
YWNoZTo6Z2V0Rm9udERhdGEoYwogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShyZXN1bHQp
OwogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5jcHAJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9Gb250RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE4ICsyOCwxNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGb250LmgiCisjaW5jbHVk
ZSAiRm9udERhdGEuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnREYXRhOjpGb250RGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBmKQotOm1fZm9udChmKSwgbV90cmVhdEFzRml4ZWRQaXRj
aChmYWxzZSksCi0gbV9zbWFsbENhcHNGb250RGF0YSgwKQotIHsgICAgCi0gICAgbV9mb250ID0g
ZjsKKyAgICA6IG1fZm9udChmKQorICAgICwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKKyAg
ICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKK3sgICAgCiAgICAgcGxhdGZvcm1Jbml0KCk7CiAg
ICAgCiAgICAgLy8gTmFzdHkgaGFjayB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHJvdW5kIG9y
IGNlaWwgc3BhY2Ugd2lkdGhzLgpAQCAtNzIsNCArNzEsNCBAQCBmbG9hdCBGb250RGF0YTo6d2lk
dGhGb3JHbHlwaChHbHlwaCBnbHlwCiAgICAgcmV0dXJuIHdpZHRoOwogfQogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ZvbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5oCShyZXZpc2lvbiAxNTY0OCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vRm9udERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQw
LDkgQEAgY2xhc3MgV2lkdGhNYXA7CiAKIGVudW0gUGl0Y2ggeyBVbmtub3duUGl0Y2gsIEZpeGVk
UGl0Y2gsIFZhcmlhYmxlUGl0Y2ggfTsKIAotY2xhc3MgRm9udERhdGEgOiBOb25jb3B5YWJsZQot
eworY2xhc3MgRm9udERhdGEgOiBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgRm9udERhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZik7CisgICAgRm9udERhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpOwogICAgIH5Gb250RGF0YSgpOwogCiBwdWJsaWM6CkBAIC0xMTcsNiArMTE2LDYg
QEAgcHVibGljOgogI2VuZGlmCiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZgorI2VuZGlmIC8vIEZPTlREQVRBX0gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Zv
bnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250Q2Fj
aGVNYWMubW0JKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udENh
Y2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsMTUgQEAKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJGb250Q2FjaGUuaCIKLSNpbXBvcnQgIkZvbnRQbGF0Zm9ybURh
dGEuaCIKKwogI2ltcG9ydCAiRm9udC5oIgotI2ltcG9ydCAiV2ViRm9udENhY2hlLmgiCi0jaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJGb250UGxhdGZvcm1EYXRh
LmgiCiAjaW1wb3J0ICJMaXN0Qm94LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3RyaW5nVHJ1bmNhdG9y
LmgiCisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJGb250
Q2FjaGUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGJvb2wgZ2V0QXBwRGVmYXVsdFZhbHVlKENGU3RyaW5nUmVmIGtleSwgaW50ICp2KQog
ewpAQCAtMjIyLDQgKzIyMiw0IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
R2x5cGhNYXBNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0dseXBo
TWFwTWFjLmNwcAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9HbHlw
aE1hcE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2x5cGhNYXAuaCIKKwogI2luY2x1ZGUgIkZvbnREYXRh
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCi1uYW1lc3BhY2UgV2Vi
Q29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEdseXBoTWFwOjpmaWxsUGFnZShH
bHlwaFBhZ2UqIHBhZ2UsIFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29u
c3QgRm9udERhdGEqIGZvbnREYXRhKQogewpAQCAtNjUsNCArNjUsNCBAQCBib29sIEdseXBoTWFw
OjpmaWxsUGFnZShHbHlwaFBhZ2UqIHBhZ2UsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLX0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcAkocmV2aXNpb24g
MTU2NDgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNyBAQCBEZXByZWNhdGVkUmVuZGVyU2VsZWN0OjpE
ZXByZWNhdGVkUmVuZGVyCiAKIHZvaWQgRGVwcmVjYXRlZFJlbmRlclNlbGVjdDo6c2V0V2lkZ2V0
V3JpdGluZ0RpcmVjdGlvbigpCiB7Ci0gICAgVGV4dERpcmVjdGlvbiBkID0gc3R5bGUoKS0+ZGly
ZWN0aW9uKCkgPT0gUlRMID8gUlRMIDogTFRSOwotICAgIHN0YXRpY19jYXN0PExpc3RCb3gqPiht
X3dpZGdldCktPnNldFdyaXRpbmdEaXJlY3Rpb24oZCk7CisgICAgc3RhdGljX2Nhc3Q8TGlzdEJv
eCo+KG1fd2lkZ2V0KS0+c2V0V3JpdGluZ0RpcmVjdGlvbihzdHlsZSgpLT5kaXJlY3Rpb24oKSk7
CiB9CiAKIHZvaWQgRGVwcmVjYXRlZFJlbmRlclNlbGVjdDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUq
IHMpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5
LDE0IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCisjaWZuZGVmIEVs
bGlwc2lzQm94X0gKKyNkZWZpbmUgRWxsaXBzaXNCb3hfSAorCiAjaW5jbHVkZSAiSW5saW5lQm94
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRWxsaXBzaXNCb3ggOiBwdWJsaWMg
SW5saW5lQm94Ci17CitjbGFzcyBFbGxpcHNpc0JveCA6IHB1YmxpYyBJbmxpbmVCb3ggewogcHVi
bGljOgogICAgIEVsbGlwc2lzQm94KFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBBdG9taWNTdHJp
bmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwLAogICAgICAgICAgICAgICAgIGludCB3
LCBpbnQgeSwgaW50IGgsIGludCBiLCBib29sIGZpcnN0TGluZSwgSW5saW5lQm94KiBtYXJrdXBC
b3gpCkBAIC00OSw0ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgSW5saW5lQm94KiBtX21hcmt1cEJv
eDsKIH07CiAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFbGxpcHNpc0JveF9ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94Owog
CiBlbnVtIENhcmV0VHlwZSB7CiAgICAgQ3Vyc29yQ2FyZXQsCi0gICAgRHJhZ0NhcmV0LAorICAg
IERyYWdDYXJldAogfTsKIAogY2xhc3MgUmVuZGVyQmxvY2sgOiBwdWJsaWMgUmVuZGVyRmxvdyB7
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9jayhOb2RlKik7CiAgICAg
dmlydHVhbCB+UmVuZGVyQmxvY2soKTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqcmVuZGVy
TmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
OwogCiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5l
LWJsb2NrLgogICAgIHZpcnR1YWwgc2hvcnQgbGluZUhlaWdodChib29sIGIsIGJvb2wgaXNSb290
TGluZUJveD1mYWxzZSkgY29uc3Q7CkBAIC0xMTcsOSArMTE3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgbGF5b3V0QmxvY2tDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogICAgIEludFJl
Y3QgbGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKTsKIAotICAgIHZv
aWQgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMoIGJvb2wgcmVsYXlvdXRDaGlsZHJlbiApOwotICAg
IHZvaWQgaW5zZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QgKm8pOwotICAgIHZvaWQg
cmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QgKm8pOworICAgIHZvaWQgbGF5b3V0
UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxheW91dENoaWxkcmVuKTsKKyAgICB2b2lkIGluc2Vy
dFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVQb3NpdGlv
bmVkT2JqZWN0KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQb3NpdGlv
bmVkT2JqZWN0cyhSZW5kZXJCbG9jayopOwogCiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uTGlz
dE1hcmtlcigpIHsgfQpAQCAtMTI4LDggKzEyOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogbGF5b3V0TGVnZW5kKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgeyByZXR1cm4g
MDsgfTsKICAgICAKICAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZvbGxvd2luZyBm
dW5jdGlvbnMgaXMgaW4gYmlkaS5jcHAKLSAgICB2b2lkIGJpZGlSZW9yZGVyTGluZShjb25zdCBC
aWRpSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBCaWRpSXRlcmF0b3ImIGVuZCwgQmlkaVN0YXRlICZi
aWRpICk7Ci0gICAgUm9vdElubGluZUJveCogZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihib29sIGZ1
bGxMYXlvdXQsIEJpZGlJdGVyYXRvciYgc3RhcnQsIEJpZGlTdGF0ZSAmYmlkaSk7CisgICAgdm9p
ZCBiaWRpUmVvcmRlckxpbmUoY29uc3QgQmlkaUl0ZXJhdG9yJiBzdGFydCwgY29uc3QgQmlkaUl0
ZXJhdG9yJiBlbmQsIEJpZGlTdGF0ZSYgYmlkaSk7CisgICAgUm9vdElubGluZUJveCogZGV0ZXJt
aW5lU3RhcnRQb3NpdGlvbihib29sIGZ1bGxMYXlvdXQsIEJpZGlJdGVyYXRvciYgc3RhcnQsIEJp
ZGlTdGF0ZSYgYmlkaSk7CiAgICAgUm9vdElubGluZUJveCogZGV0ZXJtaW5lRW5kUG9zaXRpb24o
Um9vdElubGluZUJveCogc3RhcnRCb3gsIEJpZGlJdGVyYXRvciYgY2xlYW5MaW5lU3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaVN0YXR1cyYgY2xlYW5M
aW5lQmlkaVN0YXR1cywgQmlkaUNvbnRleHQqJiBjbGVhbkxpbmVCaWRpQ29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIHlQb3MpOwpAQCAtMTM5LDkg
KzEzOSw5IEBAIHB1YmxpYzoKICAgICBpbnQgc2tpcFdoaXRlc3BhY2UoQmlkaUl0ZXJhdG9yJiAs
IEJpZGlTdGF0ZSAmKTsKICAgICBCaWRpSXRlcmF0b3IgZmluZE5leHRMaW5lQnJlYWsoQmlkaUl0
ZXJhdG9yJiBzdGFydCwgQmlkaVN0YXRlICZpbmZvICk7CiAgICAgUm9vdElubGluZUJveCogY29u
c3RydWN0TGluZShjb25zdCBCaWRpSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBCaWRpSXRlcmF0b3Im
IGVuZCk7Ci0gICAgSW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCog
b2JqKTsKKyAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0Kik7
CiAgICAgaW50IHRhYldpZHRoKGJvb2wgaXNXaGl0ZXNwYWNlUHJlKTsKLSAgICB2b2lkIGNvbXB1
dGVIb3Jpem9udGFsUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRp
U3RhdGUgJmJpZGkpOworICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxQb3NpdGlvbnNGb3JMaW5l
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlTdGF0ZSYgYmlkaSk7CiAgICAgdm9pZCBjb21w
dXRlVmVydGljYWxQb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gpOwogICAg
IHZvaWQgY2hlY2tMaW5lc0Zvck92ZXJmbG93KCk7CiAgICAgdm9pZCBkZWxldGVFbGxpcHNpc0xp
bmVCb3hlcygpOwpAQCAtNDQ2LDYgKzQ0Niw2IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV90YWJX
aWR0aDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBSRU5ERVJfQkxPQ0tfSAorI2VuZGlmIC8vIFJlbmRlckJsb2NrX0gKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwx
NSArMjAsMTQgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBSRU5ERVJfRkxFWElCTEVfQk9YX0gKLSNk
ZWZpbmUgUkVOREVSX0ZMRVhJQkxFX0JPWF9ICisjaWZuZGVmIFJlbmRlckZsZXhpYmxlQm94X0gK
KyNkZWZpbmUgUmVuZGVyRmxleGlibGVCb3hfSAogCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZW5kZXJGbGV4aWJsZUJveCA6IHB1Ymxp
YyBSZW5kZXJCbG9jawoteworY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgogICAgIFJlbmRlckZsZXhpYmxlQm94KE5vZGUqKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJGbGV4aWJsZUJveCgpOwpAQCAtNDQsMTMgKzQzLDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNGbGV4aW5nQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2ZsZXhp
bmdDaGlsZHJlbjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1N0cmV0Y2hpbmdDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyZXRjaGluZ0NoaWxkcmVuOyB9Ci0gICAgCi0gICAgdmlydHVhbCBj
b25zdCBjaGFyICpyZW5kZXJOYW1lKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdDsKIAogICAgIHZvaWQgcGxhY2VDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBpbnQgeCwgaW50IHkpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgaW50IGFsbG93ZWRDaGls
ZEZsZXgoUmVuZGVyT2JqZWN0KiBjaGlsZCwgYm9vbCBleHBhbmRpbmcsIHVuc2lnbmVkIGludCBn
cm91cCk7CisgICAgaW50IGFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyT2JqZWN0KiBjaGlsZCwgYm9v
bCBleHBhbmRpbmcsIHVuc2lnbmVkIGdyb3VwKTsKIAogICAgIGJvb2wgaGFzTXVsdGlwbGVMaW5l
cygpIHsgcmV0dXJuIHN0eWxlKCktPmJveExpbmVzKCkgPT0gTVVMVElQTEU7IH0KICAgICBib29s
IGlzVmVydGljYWwoKSB7IHJldHVybiBzdHlsZSgpLT5ib3hPcmllbnQoKSA9PSBWRVJUSUNBTDsg
fQpAQCAtNjAsOSArNTksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3N0cmV0Y2hpbmdDaGls
ZHJlbiA6IDE7CiB9OwogCi19OyAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIFJFTkRFUl9GTEVY
SUJMRV9CT1hfSAotCi0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIFJlbmRl
ckZsZXhpYmxlQm94X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93LmgJKHJldmlzaW9uIDE1NjQ4
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw4ICsyMiw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgUkVOREVSX0ZMT1dfSAotI2RlZmluZSBS
RU5ERVJfRkxPV19ICisjaWZuZGVmIFJlbmRlckZsb3dfSAorI2RlZmluZSBSZW5kZXJGbG93X0gK
IAogI2luY2x1ZGUgIlJlbmRlckNvbnRhaW5lci5oIgogCkBAIC0zOCwxMiArMzgsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICogYmVoYXZpb3VyIG9mIHRleHQsIHNvIHB1dHRpbmcgdGhlIGxh
eW91dGluZyByb3V0aW5lcyBpbiB0aGUgaW5saW5lCiAgKiBlbGVtZW50cyBpcyBpbXBvc3NpYmxl
LgogICovCi1jbGFzcyBSZW5kZXJGbG93IDogcHVibGljIFJlbmRlckNvbnRhaW5lcgoteworY2xh
c3MgUmVuZGVyRmxvdyA6IHB1YmxpYyBSZW5kZXJDb250YWluZXIgewogcHVibGljOgogICAgIFJl
bmRlckZsb3coTm9kZSogbm9kZSkKLSAgICAgIDogUmVuZGVyQ29udGFpbmVyKG5vZGUpLCBtX2xp
bmVIZWlnaHQoLTEpCi0gICAgeyBtX2NvbnRpbnVhdGlvbiA9IDA7IG1fZmlyc3RMaW5lQm94ID0g
MDsgbV9sYXN0TGluZUJveCA9IDA7fQorICAgICAgICA6IFJlbmRlckNvbnRhaW5lcihub2RlKQor
ICAgICAgICAsIG1fY29udGludWF0aW9uKDApCisgICAgICAgICwgbV9maXJzdExpbmVCb3goMCkK
KyAgICAgICAgLCBtX2xhc3RMaW5lQm94KDApCisgICAgICAgICwgbV9saW5lSGVpZ2h0KC0xKQor
ICAgIHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIFJlbmRlckZsb3cqIGNvbnRpbnVhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGludWF0aW9uOyB9CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24o
UmVuZGVyRmxvdyogYykgeyBtX2NvbnRpbnVhdGlvbiA9IGM7IH0KQEAgLTEwMyw3ICsxMDcsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBzaG9ydCBtX2xpbmVIZWlnaHQ7CiB9OwogCi0gICAg
Ci19OyAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBSZW5kZXJGbG93X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw0ICs1Niw0IEBAIHZvaWQgUmVuZGVyRnJhbWU6OnZpZXdDbGVhcmVkKCkK
ICAgICB9CiB9CiAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3
Miw2ICsxMDcyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNl
X2JhY2tncm91bmRzX3RvX3doaXRlID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXkgPSBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdp
bmFsRGlzcGxheSA9IGluaXRpYWxEaXNwbGF5KCk7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFn
cy5fYmdfcmVwZWF0ID0gaW5pdGlhbEJhY2tncm91bmRSZXBlYXQoKTsKICAgICAgICAgbm9uaW5o
ZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1ggPSBpbml0aWFsT3ZlcmZsb3dYKCk7CiAgICAgICAgIG5v
bmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dZID0gaW5pdGlhbE92ZXJmbG93WSgpOwogICAgICAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2FsaWduID0gaW5pdGlhbFZlcnRpY2FsQWxp
Z24oKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9iaWRpLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxl
dGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
LCBzaXplX3QpOwogCi1wcml2YXRlOgorICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFRoZSBub3Jt
YWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQuCiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QpIHRocm93KCk7CiAKLXB1YmxpYzoKKyAgICBwdWJsaWM6CiAgICAgICAgIGludCBz
dGFydDsKICAgICAgICAgaW50IHN0b3A7CiAKQEAgLTExNCw2ICsxMTQsNiBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IEJpZGlJdGVyYXRvcjsKICAgICBzdHJ1Y3QgQmlkaVN0YXRlOwogCi19OworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBCSURJX0gKSW5kZXg6IFdl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MTU2NDgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMDYtMDctMjcgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAg
ICAgICAgQWRvcHQgcGVkYW50aWMgY2hhbmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGlt
cHJvdmUgCisgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgY29tcGF0YWJpbGl0eQorCisgICAgICAg
ICAgQ2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAgICogQWRkaW5nIG1pc3NpbmcgbmV3bGluZSB0
byB0aGUgZW5kIG9mIHRoZSBmaWxlLgorICAgICAgICAgICogVHVybmluZyBvbiBnY2Mgd2Fybmlu
ZyBmb3IgbWlzc2luZyBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBzb3VyY2UgZmlsZQorICAgICAg
ICAgICAgKEdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSBpbiBYY29kZSwgLVduZXdsaW5l
IGluIGdjYykuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlUHJpdmF0ZS5oOgorCiAyMDA2LTA3LTI1ICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TWFjaWVqLCBpbnNwaXJlZCBieSBKb2huLgpJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzEsNiArMTg3MSw3IEBACiAJ
CQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FG
RV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5f
QUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFM
X0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNDsK
QEAgLTE5MTAsNiArMTkxMSw3IEBACiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9
IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dB
Uk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJ
TkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwog
CQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNDsKQEAgLTE5NDksNiArMTk1MSw3IEBACiAJCQkJR0NDX1BS
RUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNT
ID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNU
T1IgPSBZRVM7CiAJCQkJV0FSTklOR19DRkxBR1MgPSAoCkluZGV4OiBXZWJLaXQvV2ViVmlldy9X
ZWJSZXNvdXJjZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJSZXNv
dXJjZVByaXZhdGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJSZXNv
dXJjZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNCArNTAsNCBAQAogLSAoTlNVUkxS
ZXNwb25zZSAqKV9yZXNwb25zZTsKIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlOwogCi1AZW5k
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9750</attachid>
            <date>2006-07-28 14:59:41 -0700</date>
            <delta_ts>2006-07-29 14:28:10 -0700</delta_ts>
            <desc>patch 3</desc>
            <filename>pedantic3.diff</filename>
            <type>text/plain</type>
            <size>210469</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMDYtMDctMjggIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAgQWRvcHQgcGVkYW50aWMgY2hh
bmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCisgICAgICAgICAgY3Jvc3Mt
Y29tcGlsZXIgY29tcGF0YWJpbGl0eQorCisgICAgICAgICAgQ2hhbmdlcyBpbmNsdWRlOgorICAg
ICAgICAgICogUmVtb3ZpbmcgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gbmFtZXNwYWNlIGJyYWNl
cy4KKyAgICAgICAgICAqIFJlbW92aW5nIHRyYWlsaW5nIGNvbW1hIGZyb20gbGFzdCBlbnVtIGRl
Y2xhcmF0aW9uLgorICAgICAgICAgICogVXBkYXRpbmcgdG8gbWF0Y2ggc3R5bGUgZ3VpZGVsaW5l
cy4KKyAgICAgICAgICAqIEFkZGluZyBtaXNzaW5nIG5ld2xpbmUgdG8gdGhlIGVuZCBvZiB0aGUg
ZmlsZS4KKyAgICAgICAgICAqIFR1cm5pbmcgb24gZ2NjIHdhcm5pbmcgZm9yIG1pc3NpbmcgbmV3
bGluZSBhdCB0aGUgZW5kIG9mIGEgc291cmNlIGZpbGUKKyAgICAgICAgICAgIChHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX05FV0xJTkUgaW4gWGNvZGUsIC1XbmV3bGluZSBpbiBnY2MpLgorICAgICAg
ICAgICogQWxwaGFiZXRpY2FsIHNvcnRpbmcgb2YgWGNvZGUgc291cmNlIGxpc3QgZmlsZXMuIAor
ICAgICAgICAgICogUmVwbGFjZSB1c2Ugb2Ygbm9uLXBvcnRhYmxlIHZhcmlhYmxlLXNpemUgYXJy
YXkgd2l0aCBWZWN0b3IuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEtKUzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAg
ICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjpKU0NhbGxi
YWNrRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdC5jcHA6CisgICAgICAgIChLSlM6OkpTQ2FsbGJhY2tPYmplY3Q6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChLSlM6OkpTQ2FsbGJhY2tPYmplY3Q6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlUHJlZml4Lmg6CisgICAgICAgICogYmluZGluZ3Mvam5pL2puaV9jbGFzcy5j
cHA6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2puaS9qbmlfY2xhc3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX2luc3RhbmNlLmNw
cDoKKyAgICAgICAgKEphdmFJbnN0YW5jZTo6SmF2YUluc3RhbmNlKToKKyAgICAgICAgKEphdmFJ
bnN0YW5jZTo6dmFsdWVPZik6CisgICAgICAgICogYmluZGluZ3Mvam5pL2puaV9vYmpjLm1tOgor
ICAgICAgICAoS0pTOjpCaW5kaW5nczo6ZGlzcGF0Y2hKTklDYWxsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qbmkvam5pX3J1bnRpbWUuY3BwOgorICAgICAgICAoSmF2YVBhcmFtZXRlcjo6SmF2YVBh
cmFtZXRlcik6CisgICAgICAgIChKYXZhQXJyYXk6OkphdmFBcnJheSk6CisgICAgICAgICogYmlu
ZGluZ3Mvam5pL2puaV9ydW50aW1lLmg6CisgICAgICAgICogYmluZGluZ3Mvam5pL2puaV91dGls
aXR5Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAg
ICogYmluZGluZ3MvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGtqcy9jb2xsZWN0b3IuaDoK
KyAgICAgICAgKiBranMvY29uZmlnLmg6CisgICAgICAgICoga2pzL3VzdHJpbmcuY3BwOgorICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA2LTA3LTI0ICBEYW4gV2F5bG9uaXMgIDx3YXls
b25pc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGFuZCB0d2Vha2VkIGEgYml0IGJ5
IERhcmluLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVQcmVmaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVByZWZpeC5oCShyZXZpc2lv
biAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlUHJlZml4LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLS8vIFdv
cmsgYXJvdW5kIGJ1ZyAzNTUzMzA5IGJ5IHJlLWluY2x1ZGluZyA8Y3R5cGUuaD4uCisvKiBXb3Jr
IGFyb3VuZCBidWcgMzU1MzMwOSBieSByZS1pbmNsdWRpbmcgPGN0eXBlLmg+LiAqLwogI2luY2x1
ZGUgPGNjdHlwZT4KICNkZWZpbmUgaXNhbG51bShjKSAgICAgIF9faXN0eXBlKChjKSwgKF9DVFlQ
RV9BfF9DVFlQRV9EKSkKICNkZWZpbmUgaXNhbHBoYShjKSAgICAgIF9faXN0eXBlKChjKSwgX0NU
WVBFX0EpCkBAIC00OSw2ICs0OSw2IEBACiAKICNlbmRpZgogCi0vLyBXb3JrIGFyb3VuZCBidWcg
d2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUtQysrIHdoZW4gZXhjZXB0
aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuCisvKiBXb3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGli
cmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUtQysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQg
aXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAjdW5kZWYgY2F0Y2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTY0OCkK
KysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw5IEBACiAgKi8KIAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5oIgorCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTYzLDcgKzY1LDcgQEAgSlNPYmplY3QqIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvcjo6Y29uc3RydQogCiAgICAgaWYgKG1fY2FsbGJhY2spIHsKICAgICAg
ICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBhcmdzLnNpemUoKTsKLSAgICAgICAgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbYXJndW1lbnRDb3VudF07CisgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmPiBh
cmd1bWVudHMoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJndW1lbnRDb3VudDsgaSsrKQogICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdG9SZWYoYXJn
c1tpXSk7CiAgICAgICAgIHJldHVybiB0b0pTKG1fY2FsbGJhY2soY3R4LCB0aGlzUmVmLCBhcmd1
bWVudENvdW50LCBhcmd1bWVudHMsIHRvUmVmKGV4ZWMtPmV4Y2VwdGlvblNsb3QoKSkpKTsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAx
NTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwxMSBAQAogICovCiAKICNpbmNsdWRlICJKU0NhbGxiYWNr
RnVuY3Rpb24uaCIKKwogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJmdW5jdGlvbi5o
IgogI2luY2x1ZGUgImZ1bmN0aW9uX29iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTUyLDcgKzU0LDcgQEAgSlNWYWx1ZSogSlNDYWxsYmFj
a0Z1bmN0aW9uOjpjYWxsQXNGdW5jdAogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1Jl
Zih0aGlzT2JqKTsKIAogICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gYXJncy5zaXplKCk7Ci0g
ICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbYXJndW1lbnRDb3VudF07CisgICAgVmVjdG9yPEpTVmFs
dWVSZWY+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKICAgICAgICAgYXJndW1lbnRzW2ldID0gdG9SZWYoYXJn
c1tpXSk7CiAgICAgcmV0dXJuIHRvSlMobV9jYWxsYmFjayhleGVjUmVmLCB0aGlzUmVmLCB0aGlz
T2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIHRvUmVmKGV4ZWMtPmV4Y2VwdGlvblNs
b3QoKSkpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJl
dmlzaW9uIDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNCArMjQsMTYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKKyNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisKICNpbmNsdWRlICJBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09i
amVjdC5oIgotI2luY2x1ZGUgIkpTU3RyaW5nUmVmLmgiCiAjaW5jbHVkZSAiSlNDbGFzc1JlZi5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5j
bHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBL
SlMgewogCkBAIC0yMjMsNyArMjI1LDcgQEAgSlNPYmplY3QqIEpTQ2FsbGJhY2tPYmplY3Q6OmNv
bnN0cnVjdChFeAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gbV9jbGFzczsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVj
dENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IgPSBqc0NsYXNzLT5j
YWxsQXNDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBh
cmdzLnNpemUoKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW2FyZ3VtZW50Q291
bnRdOworICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWY+IGFyZ3VtZW50cyhhcmd1bWVudENv
dW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsg
aSsrKQogICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHRvUmVmKGFyZ3NbaV0pOwogICAg
ICAgICAgICAgcmV0dXJuIHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgdGhpc1JlZiwg
YXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCB0b1JlZihleGVjLT5leGNlcHRpb25TbG90KCkpKSk7
CkBAIC0yNzUsNyArMjc3LDcgQEAgSlNWYWx1ZSogSlNDYWxsYmFja09iamVjdDo6Y2FsbEFzRnVu
Y3RpbwogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gbV9jbGFzczsganNDbGFzczsganND
bGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxB
c0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlv
bikgewogICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBhcmdzLnNpemUoKTsKLSAg
ICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW2FyZ3VtZW50Q291bnRdOworICAgICAgICAg
ICAgVmVjdG9yPEpTVmFsdWVSZWY+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQogICAgICAgICAg
ICAgICAgIGFyZ3VtZW50c1tpXSA9IHRvUmVmKGFyZ3NbaV0pOwogICAgICAgICAgICAgcmV0dXJu
IHRvSlMoY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgdGhpc1JlZiwgdGhpc09ialJlZiwgYXJndW1l
bnRDb3VudCwgYXJndW1lbnRzLCB0b1JlZihleGVjLT5leGNlcHRpb25TbG90KCkpKSk7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg4
LDcgKzc4OCw2IEBACiAJCTY1MTYyRUYxMDhFNkEyMUMwMDc1NTZDRCAvKiB3dGYgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDRjY1NTNCMEEyMDQ4REUw
MDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi8sCiAJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEz
IC8qIHVuaWNvZGUgKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lu
bGluZS5oICovLAogCQkJCTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNw
cCAqLywKQEAgLTgwNSw2ICs4MDQsNyBAQAogCQkJCTY1REZDOTJFMDhFQTE3M0EwMEY3MzAwQiAv
KiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzkyRjA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRy
YWl0cy5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBMaXN0UmVmUHRyLmgg
Ki8sCisJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRyYXMuaCAqLywKIAkJ
CQk5MzAzRjU2OTA5OTExOTAwMDBBRDcxQjggLyogTm9uY29weWFibGUuaCAqLywKIAkJCQk5MzAz
RjVBNDA5OTExQTU4MDBBRDcxQjggLyogT3duQXJyYXlQdHIuaCAqLywKIAkJCQk5MzAzRjU2NzA5
OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8sCkBAIC0xMjE1LDEzICsxMjE1LDEwIEBACiAJ
CTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlz
YSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NzEwODkw
MkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAi
SmF2YVNjcmlwdENvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40
IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJbWFpbkdyb3VwID0gMDg2N0Q2
OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRDb3JlICovOwogCQkJcHJvZHVjdFJlZkdy
b3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwogCQkJcHJvamVj
dERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7Ci0JCQlzaG91bGRDaGVja0NvbXBh
dGliaWxpdHkgPSAxOwogCQkJdGFyZ2V0cyA9ICgKIAkJCQk5MzJGNUIzRTA4MjJBMUM3MDA3MzY5
NzUgLyogSmF2YVNjcmlwdENvcmUgKi8sCiAJCQkJOTM1RjY5RjUwODI0NEZFQTAwM0QxQTQ1IC8q
IGRmdGFibGVzICovLApAQCAtMTc0OCw2ICsxNzQ1LDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFT
SU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJF
QVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdf
TkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNP
U1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtMTc4NSw2ICsxNzgzLDcgQEAKIAkJCQlH
Q0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBO
TzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9
IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtMTgyMiw2ICsx
ODIxLDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURT
QUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVT
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRV
QUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgQmluZGluZ3M6OkFycmF5ICpfYXJyYXk7CiB9Owog
ICAgIAotfTsgLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgor
I2VuZGlmIC8vIFJVTlRJTUVfQVJSQVlfSF8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2puaS9qbmlfY2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2puaS9qbmlfY2xhc3MuY3BwCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL2puaS9qbmlfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgRmllbGQgKkphdmFDbGFzczo6ZmllbGROYW1lZChjb25zdCBjaGFyIAogICAgIEZpZWxkICph
RmllbGQgPSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShfZmllbGRzLCBmaWVsZE5hbWUp
OwogICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKICAgICByZXR1cm4gYUZpZWxkOwotfTsKK30K
IAogYm9vbCBKYXZhQ2xhc3M6OmlzTnVtYmVyQ2xhc3MoKSBjb25zdAogewpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfY2xhc3MuaAkocmV2aXNpb24gMTU2NDgpCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2NsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDggKzMyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWNs
YXNzIEphdmFDbGFzcyA6IHB1YmxpYyBDbGFzcwoteworY2xhc3MgSmF2YUNsYXNzIDogcHVibGlj
IENsYXNzIHsKIHB1YmxpYzoKICAgICBKYXZhQ2xhc3MgKGpvYmplY3QgYW5JbnN0YW5jZSk7CiAg
ICAgfkphdmFDbGFzcyAoKTsKQEAgLTcwLDQgKzY5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgS0pTCiAKLSNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZiAv
LyBKTklfQ0xBU1NfSF8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfaW5z
dGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlf
aW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2puaS9qbmlfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIEph
dmFJbnN0YW5jZTo6SmF2YUluc3RhbmNlIChqb2JqZWN0IGluc3QKICAgICBfaW5zdGFuY2UgPSBu
ZXcgSk9iamVjdFdyYXBwZXIgKGluc3RhbmNlKTsKICAgICBfY2xhc3MgPSAwOwogICAgIHNldEV4
ZWN1dGlvbkNvbnRleHQgKHIpOwotfTsKK30KIAogSmF2YUluc3RhbmNlOjp+SmF2YUluc3RhbmNl
ICgpIAogewpAQCAtMzI0LDcgKzMyNCw3IEBAIEpTVmFsdWUgKkphdmFJbnN0YW5jZTo6ZGVmYXVs
dFZhbHVlIChKU1QKIEpTVmFsdWUgKkphdmFJbnN0YW5jZTo6dmFsdWVPZigpIGNvbnN0IAogewog
ICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwotfTsKK30KIAogSk9iamVjdFdyYXBwZXI6OkpPYmpl
Y3RXcmFwcGVyKGpvYmplY3QgaW5zdGFuY2UpCiA6IF9yZWZDb3VudCgwKQpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9vYmpjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfb2JqYy5tbQkocmV2aXNpb24gMTU2NDgpCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX29iamMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0
LDQgKzY0LDQgQEAgYm9vbCBLSlM6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwgKGNvbgogCiAg
ICAgYnplcm8gKCZyZXN1bHQsIHNpemVvZihqdmFsdWUpKTsKICAgICByZXR1cm4gZmFsc2U7Ci19
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3Mvam5pL2puaV9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9qbmkvam5pX3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgSmF2YVBhcmFtZXRlcjo6SmF2YVBhcmFtZXRlciAoSk5JRW52ICplbgogewog
ICAgIF90eXBlID0gSmF2YVN0cmluZyAoZW52LCB0eXBlKTsKICAgICBfSk5JVHlwZSA9IEpOSVR5
cGVGcm9tQ2xhc3NOYW1lIChfdHlwZS5VVEY4U3RyaW5nKCkpOwotfTsKK30KIAogSmF2YUZpZWxk
OjpKYXZhRmllbGQgKEpOSUVudiAqZW52LCBqb2JqZWN0IGFGaWVsZCkKIHsKQEAgLTM3Miw3ICsz
NzIsNyBAQCBKYXZhQXJyYXk6OkphdmFBcnJheSAoam9iamVjdCBhLCBjb25zdCBjCiAgICAgX2xl
bmd0aCA9IGVudi0+R2V0QXJyYXlMZW5ndGgoKGphcnJheSlfYXJyYXktPl9pbnN0YW5jZSk7CiAg
ICAgX3R5cGUgPSBzdHJkdXAodCk7CiAgICAgX3Jvb3QgPSByOwotfTsKK30KIAogSmF2YUFycmF5
Ojp+SmF2YUFycmF5ICgpIAogewpAQCAtMzg0LDcgKzM4NCw3IEBAIEphdmFBcnJheTo6SmF2YUFy
cmF5IChjb25zdCBKYXZhQXJyYXkgJm8KIHsKICAgICBfYXJyYXkgPSBvdGhlci5fYXJyYXk7CiAg
ICAgX3R5cGUgPSBzdHJkdXAob3RoZXIuX3R5cGUpOwotfTsKK30KIAogdm9pZCBKYXZhQXJyYXk6
OnNldFZhbHVlQXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUg
KmFWYWx1ZSkgY29uc3QKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlf
cnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlf
cnVudGltZS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2pu
aS9qbmlfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2LDggQEAgcHVibGlj
OgogICAgIEpOSVR5cGUgZ2V0Sk5JVHlwZSgpIGNvbnN0IHsgcmV0dXJuIF9KTklUeXBlOyB9CiAg
ICAgCiBwcml2YXRlOgotICAgIHZvaWQgSmF2YUZpZWxkOjpkaXNwYXRjaFNldFZhbHVlVG9JbnN0
YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5zdGFuY2UsIGp2YWx1
ZSBqYXZhVmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNpZykgY29uc3Q7Ci0g
ICAganZhbHVlIEphdmFGaWVsZDo6ZGlzcGF0Y2hWYWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGNv
bnN0IGNoYXIgKnNpZywgSk5JVHlwZSByZXR1cm5UeXBlKSBjb25zdDsKKyAgICB2b2lkIGRpc3Bh
dGNoU2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSmF2YUluc3RhbmNl
ICppbnN0YW5jZSwganZhbHVlIGphdmFWYWx1ZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh
ciAqc2lnKSBjb25zdDsKKyAgICBqdmFsdWUgZGlzcGF0Y2hWYWx1ZUZyb21JbnN0YW5jZShFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IGNoYXIgKm5h
bWUsIGNvbnN0IGNoYXIgKnNpZywgSk5JVHlwZSByZXR1cm5UeXBlKSBjb25zdDsKIAogICAgIEph
dmFTdHJpbmcgX25hbWU7CiAgICAgSmF2YVN0cmluZyBfdHlwZTsKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxMSArNDMsMTAgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBkb3VibGVfdHlwZQogfSBKTklUeXBl
OwogCi1uYW1lc3BhY2UgS0pTCi17CituYW1lc3BhY2UgS0pTIHsKKworbmFtZXNwYWNlIEJpbmRp
bmdzIHsKIAotbmFtZXNwYWNlIEJpbmRpbmdzIAotewogY2xhc3MgSmF2YVBhcmFtZXRlcjsKIAog
Y29uc3QgY2hhciAqZ2V0Q2hhcmFjdGVyc0Zyb21KU3RyaW5nKGpzdHJpbmcgYUpTdHJpbmcpOwpA
QCAtMTExLDQgKzExMCw0IEBAIGJvb2wgZGlzcGF0Y2hKTklDYWxsKGNvbnN0IHZvaWQgKnRhcmdl
dEEKIAogfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKKyNlbmRpZiAvLyBfSk5JX1VUSUxJVFlfSF8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw4ICszNSw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIE9iamNDbGFzczsK
IAotY2xhc3MgT2JqY0luc3RhbmNlIDogcHVibGljIEluc3RhbmNlCi17CitjbGFzcyBPYmpjSW5z
dGFuY2UgOiBwdWJsaWMgSW5zdGFuY2UgewogcHVibGljOgogICAgIE9iamNJbnN0YW5jZShPYmpl
Y3RTdHJ1Y3RQdHIgaW5zdGFuY2UpOwogICAgICAgICAKQEAgLTYzLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eSwgSlNWYWx1ZSAqYVZhbHVlKTsKICAgICAKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUgKk9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZkZpZWxkKEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgRmllbGQgKmFGaWVsZCkgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVl
ICpnZXRWYWx1ZU9mRmllbGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBGaWVsZCAqYUZpZWxkKSBj
b25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgKmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5LCBKU1R5cGUgaGludCkgY29u
c3Q7CiAKICAgICBPYmplY3RTdHJ1Y3RQdHIgZ2V0T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gX2lu
c3RhbmNlOyB9CkBAIC04Myw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIEtK
UwogCi0jZW5kaWYKKyNlbmRpZiAvLyBCSU5ESU5HU19PQkpDX0lOU1RBTkNFX0hfCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICBzdGF0aWMgdm9pZCBmaW5hbENoZWNrKCk7CiAjZW5kaWYKIAotICAgIHN0YXRp
YyB2b2lkIHByb3RlY3QoSlNWYWx1ZSAqKTsKLSAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3QoSlNW
YWx1ZSAqKTsKKyAgICBzdGF0aWMgdm9pZCBwcm90ZWN0KEpTVmFsdWUqKTsKKyAgICBzdGF0aWMg
dm9pZCB1bnByb3RlY3QoSlNWYWx1ZSopOwogCiAgICAgc3RhdGljIHNpemVfdCBudW1JbnRlcnBy
ZXRlcnMoKTsKICAgICBzdGF0aWMgc2l6ZV90IG51bVByb3RlY3RlZE9iamVjdHMoKTsKQEAgLTY1
LDEzICs2NSwxMyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIHN0YXRpYyB2b2lkIG1hcmtQcm90
ZWN0ZWRPYmplY3RzKCk7CiAgICAgc3RhdGljIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2
YXRpdmVseSgpOwotICAgIHN0YXRpYyB2b2lkIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5
KFRocmVhZCAqdGhyZWFkKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2
YXRpdmVseShUaHJlYWQqIHRocmVhZCk7CiAgICAgc3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0
c0NvbnNlcnZhdGl2ZWx5KCk7Ci0gICAgc3RhdGljIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNl
cnZhdGl2ZWx5KHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOworICAgIHN0YXRpYyB2b2lkIG1hcmtT
dGFja09iamVjdHNDb25zZXJ2YXRpdmVseSh2b2lkKiBzdGFydCwgdm9pZCogZW5kKTsKIAogICAg
IHN0YXRpYyBib29sIG1lbW9yeUZ1bGw7CiAgIH07CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBLSlMK
IAotI2VuZGlmIC8qIF9LSlNDT0xMRUNUT1JfSF8gKi8KKyNlbmRpZiAvKiBLSlNDT0xMRUNUT1Jf
SF8gKi8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAKICNl
bHNlCiAKLS8vIEZJWE1FOiBpcyB0aGlzIGFjdHVhbGx5IHVzZWQgb3IgZG8gb3RoZXIgcGxhdGZv
cm1zIGdlbmVyYXRlIHRoZWlyCi0vLyBvd24gY29uZmlnLmg/CisvKiBGSVhNRTogaXMgdGhpcyBh
Y3R1YWxseSB1c2VkIG9yIGRvIG90aGVyIHBsYXRmb3JtcyBnZW5lcmF0ZSB0aGVpciBvd24gY29u
ZmlnLmg/ICovCiAKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKICNkZWZpbmUgSEFWRV9GVU5DX0lT
SU5GIDEKQEAgLTM5LDcgKzM4LDcgQEAKIAogI2RlZmluZSBIQVZFX1BDUkVQT1NJWCAxCiAKLS8v
IEZJWE1FOiBpZiBhbGwgcGxhdGZvcm1zIGhhdmUgdGhlc2UsIGRvIHRoZXkgcmVhbGx5IG5lZWQg
I2RlZmluZXM/CisvKiBGSVhNRTogaWYgYWxsIHBsYXRmb3JtcyBoYXZlIHRoZXNlLCBkbyB0aGV5
IHJlYWxseSBuZWVkICNkZWZpbmVzPyAqLwogI2RlZmluZSBIQVZFX1NURElOVF9IIDEKICNkZWZp
bmUgSEFWRV9TVFJJTkdfSCAxCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAJKHJldmlzaW9u
IDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2lu
Y2x1ZGUgIm9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJkdG9hLmgiCiAjaW5jbHVkZSAiaWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgogI2lu
Y2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlICJkdG9hLmgiCi0KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIHVzaW5nIHN0ZDo6bWF4OwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDE1NjQ4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0K
Ky8qIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLSAqLwogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC0yNywzMiArMjcsMzIgQEAKICNpZm5kZWYgS1hNTENPUkVfUExBVEZPUk1fSAogI2Rl
ZmluZSBLWE1MQ09SRV9QTEFURk9STV9ICiAKLS8vIFBMQVRGT1JNIGhhbmRsZXMgT1MsIG9wZXJh
dGluZyBlbnZpcm9ubWVudCwgZ3JhcGhpY3MgQVBJLCBhbmQgQ1BVCisvKiBQTEFURk9STSBoYW5k
bGVzIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIGdyYXBoaWNzIEFQSSwgYW5kIENQVSAqLwog
I2RlZmluZSBQTEFURk9STShLWF9GRUFUVVJFKSAoZGVmaW5lZCggS1hNTENPUkVfUExBVEZPUk1f
IyNLWF9GRUFUVVJFICkgJiYgS1hNTENPUkVfUExBVEZPUk1fIyNLWF9GRUFUVVJFKQogI2RlZmlu
ZSBDT01QSUxFUihLWF9GRUFUVVJFKSAoZGVmaW5lZCggS1hNTENPUkVfQ09NUElMRVJfIyNLWF9G
RUFUVVJFICkgJiYgS1hNTENPUkVfQ09NUElMRVJfIyNLWF9GRUFUVVJFKQogI2RlZmluZSBIQVZF
KEtYX0ZFQVRVUkUpIChkZWZpbmVkKCBIQVZFXyMjS1hfRkVBVFVSRSApICYmIEhBVkVfIyNLWF9G
RUFUVVJFKQogI2RlZmluZSBVU0UoS1hfRkVBVFVSRSkgKGRlZmluZWQoIEtYTUxDT1JFX1VTRV8j
I0tYX0ZFQVRVUkUgKSAmJiBLWE1MQ09SRV9VU0VfIyNLWF9GRUFUVVJFKQogCi0vLyBPcGVyYXRp
bmcgc3lzdGVtcyAtIGxvdy1sZXZlbCBkZXBlbmRlbmNpZXMKKy8qIE9wZXJhdGluZyBzeXN0ZW1z
IC0gbG93LWxldmVsIGRlcGVuZGVuY2llcyAqLwogCi0vLyBQTEFURk9STShEQVJXSU4pCi0vLyBP
cGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgTWFjIE9TIFggLyBEYXJ3aW4g
dGhhdCBzaG91bGQKLS8vIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1l
bnQKKy8qIFBMQVRGT1JNKERBUldJTikgKi8KKy8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVw
ZW5kZW5jaWVzIGZvciBNYWMgT1MgWCAvIERhcndpbiB0aGF0IHNob3VsZCAqLworLyogYmUgdXNl
ZCByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLwogI2lmZGVmIF9fQVBQTEVf
XwogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9EQVJXSU4gMQogI2VuZGlmCiAKLS8vIFBMQVRG
T1JNKFdJTl9PUykKLS8vIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVwZW5kZW5jaWVzIGZvciBX
aW5kb3dzIHRoYXQgc2hvdWxkIGJlIHVzZWQKLS8vIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVu
dmlyb25tZW50CisvKiBQTEFURk9STShXSU5fT1MpICovCisvKiBPcGVyYXRpbmcgc3lzdGVtIGxl
dmVsIGRlcGVuZGVuY2llcyBmb3IgV2luZG93cyB0aGF0IHNob3VsZCBiZSB1c2VkICovCisvKiBy
ZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLwogI2lmIGRlZmluZWQoV0lOMzIp
IHx8IGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9XSU5fT1MgMQog
I2VuZGlmCiAKLS8vIFBMQVRGT1JNKFVOSVgpCi0vLyBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRl
cGVuZGVuY2llcyBmb3IgVW5peC1saWtlIHN5c3RlbXMgdGhhdAotLy8gc2hvdWxkIGJlIHVzZWQg
cmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQKLS8vIChpbmNsdWRlcyBQTEFURk9S
TShEQVJXSU4pKQorLyogUExBVEZPUk0oVU5JWCkgKi8KKy8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2
ZWwgZGVwZW5kZW5jaWVzIGZvciBVbml4LWxpa2Ugc3lzdGVtcyB0aGF0ICovCisvKiBzaG91bGQg
YmUgdXNlZCByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLworLyogKGluY2x1
ZGVzIFBMQVRGT1JNKERBUldJTikpICovCiAjaWYgICBkZWZpbmVkKF9fQVBQTEVfXykgICBcCiAg
ICB8fCBkZWZpbmVkKHVuaXgpICAgICAgICBcCiAgICB8fCBkZWZpbmVkKF9fdW5peCkgICAgICBc
CkBAIC02MiwxMyArNjIsMTMgQEAKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fVU5JWCAxCiAj
ZW5kaWYKIAotLy8gT3BlcmF0aW5nIGVudmlyb25tZW50cworLyogT3BlcmF0aW5nIGVudmlyb25t
ZW50cyAqLwogCi0vLyBJIG1hZGUgdGhlIEJVSUxESU5HX0tERV9fIG1hY3JvIHVwIGZvciB0aGUg
S0RFIGJ1aWxkIHN5c3RlbSB0byBkZWZpbmUKKy8qIEkgbWFkZSB0aGUgQlVJTERJTkdfS0RFX18g
bWFjcm8gdXAgZm9yIHRoZSBLREUgYnVpbGQgc3lzdGVtIHRvIGRlZmluZSAqLwogCi0vLyBQTEFU
Rk9STShLREUpCi0vLyBQTEFURk9STShNQUMpCi0vLyBQTEFURk9STShXSU4pCisvKiBQTEFURk9S
TShLREUpICovCisvKiBQTEFURk9STShNQUMpICovCisvKiBQTEFURk9STShXSU4pICovCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19LREVfXykKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fS0RFIDEK
ICNlbGlmIFBMQVRGT1JNKERBUldJTikKQEAgLTgxLDkgKzgxLDkgQEAKICNlbmRpZgogCiAKLS8v
IENQVQorLyogQ1BVICovCiAKLS8vIFBMQVRGT1JNKFBQQykKKy8qIFBMQVRGT1JNKFBQQykgKi8K
ICNpZiAgIGRlZmluZWQoX19wcGNfXykgICAgIFwKICAgIHx8IGRlZmluZWQoX19QUENfXykgICAg
IFwKICAgIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIFwKQEAgLTk1LDcgKzk1LDcgQEAKICNkZWZp
bmUgS1hNTENPUkVfUExBVEZPUk1fQklHX0VORElBTiAxCiAjZW5kaWYKIAotLy8gUExBVEZPUk0o
UFBDNjQpCisvKiBQTEFURk9STShQUEM2NCkgKi8KICNpZiAgIGRlZmluZWQoX19wcGM2NF9fKSBc
CiAgICB8fCBkZWZpbmVkKF9fUFBDNjRfXykKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fUFBD
NjQgMQpAQCAtMTA3LDcgKzEwNyw3IEBACiAjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX01JRERM
RV9FTkRJQU4gMQogI2VuZGlmCiAKLS8vIFBMQVRGT1JNKFg4NikKKy8qIFBMQVRGT1JNKFg4Nikg
Ki8KICNpZiAgIGRlZmluZWQoX19pMzg2X18pIFwKICAgIHx8IGRlZmluZWQoaTM4NikgICAgIFwK
ICAgIHx8IGRlZmluZWQoX01fSVg4NikgIFwKQEAgLTExNiw0NiArMTE2LDQ2IEBACiAjZGVmaW5l
IEtYTUxDT1JFX1BMQVRGT1JNX1g4NiAxCiAjZW5kaWYKIAotLy8gUExBVEZPUk0oWDg2XzY0KQor
LyogUExBVEZPUk0oWDg2XzY0KSAqLwogI2lmICAgZGVmaW5lZChfX3g4Nl82NF9fKSBcCiAgICB8
fCBkZWZpbmVkKF9faWE2NF9fKQogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9YODZfNjQgMQog
I2VuZGlmCiAKLS8vIENvbXBpbGVyCisvKiBDb21waWxlciAqLwogCi0vLyBDT01QSUxFUihNU1ZD
KQorLyogQ09NUElMRVIoTVNWQykgKi8KICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBL
WE1MQ09SRV9DT01QSUxFUl9NU1ZDIDEKICNlbmRpZgogCi0vLyBDT01QSUxFUihHQ0MpCisvKiBD
T01QSUxFUihHQ0MpICovCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNkZWZpbmUgS1hNTENPUkVf
Q09NUElMRVJfR0NDIDEKICNlbmRpZgogCi0vLyBDT01QSUxFUihCT1JMQU5EKQotLy8gbm90IHJl
YWxseSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50IGFueSBtb3JlPworLyogQ09N
UElMRVIoQk9STEFORCkgKi8KKy8qIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0gaXMgdGhp
cyByZWxldmFudCBhbnkgbW9yZT8gKi8KICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKICNkZWZp
bmUgS1hNTENPUkVfQ09NUElMRVJfQk9STEFORCAxCiAjZW5kaWYKIAotLy8gQ09NUElMRVIoQ1lH
V0lOKQotLy8gbm90IHJlYWxseSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50IGFu
eSBtb3JlPworLyogQ09NUElMRVIoQ1lHV0lOKSAqLworLyogbm90IHJlYWxseSBmdWxseSBzdXBw
b3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50IGFueSBtb3JlPyAqLwogI2lmIGRlZmluZWQoX19DWUdX
SU5fXykKICNkZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfQ1lHV0lOIDEKICNlbmRpZgogCi0vLyBt
dWx0aXBsZSB0aHJlYWRzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYyBmb3Igbm93CisvKiBtdWx0aXBs
ZSB0aHJlYWRzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYyBmb3Igbm93ICovCiAjaWYgUExBVEZPUk0o
TUFDKQogI2RlZmluZSBLWE1MQ09SRV9VU0VfTVVMVElQTEVfVEhSRUFEUyAxCiAjZW5kaWYKIAot
Ly8gZm9yIFVuaWNvZGUsIEtERSB1c2VzIFF0LCBldmVyeXRoaW5nIGVsc2UgdXNlcyBJQ1UKKy8q
IGZvciBVbmljb2RlLCBLREUgdXNlcyBRdCwgZXZlcnl0aGluZyBlbHNlIHVzZXMgSUNVICovCiAj
aWYgUExBVEZPUk0oS0RFKQogI2RlZmluZSBLWE1MQ09SRV9VU0VfUVQ0X1VOSUNPREUgMQogI2Vs
c2UKICNkZWZpbmUgS1hNTENPUkVfVVNFX0lDVV9VTklDT0RFIDEKICNlbmRpZgogCi0jZW5kaWYg
Ly8gS1hNTENPUkVfUExBVEZPUk1fSAorI2VuZGlmIC8qIEtYTUxDT1JFX1BMQVRGT1JNX0ggKi8K
SW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY2KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDctMjggIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAgQWRvcHQgcGVkYW50aWMgY2hh
bmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCisgICAgICAgICAgY3Jvc3Mt
Y29tcGlsZXIgY29tcGF0YWJpbGl0eQorCisgICAgICAgICAgQ2hhbmdlcyBpbmNsdWRlOgorICAg
ICAgICAgICogVHVybmluZyBvbiBnY2Mgd2FybmluZyBmb3IgbWlzc2luZyBuZXdsaW5lIGF0IHRo
ZSBlbmQgb2YgYSBzb3VyY2UgZmlsZQorICAgICAgICAgICAgKEdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfTkVXTElORSBpbiBYY29kZSwgLVduZXdsaW5lIGluIGdjYykuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiA9PT0gU2FmYXJpLTUyMS4x
OSA9PT0KIAogMjAwNi0wNy0xOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgpJ
bmRleDogSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY0OCkKKysrIEphdmFTY3JpcHRHbHVlL0ph
dmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQyNCw2ICs0MjQsNyBAQAogCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7
CiAJCQkJR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POwogCQkJCUdDQ19UUkVBVF9XQVJOSU5H
U19BU19FUlJPUlMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0g
WUVTOwogCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKIAkJCQlH
Q0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVTOwogCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjQ7CkBAIC00NjAsNiArNDYxLDcgQEAKIAkJCQlHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TID0gIiI7CiAJCQkJR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POwog
CQkJCUdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfTUlTU0lOR19ORVdMSU5FID0gWUVTOwogCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVT
OwogCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjQ7CkBAIC00OTUsNiArNDk3LDcg
QEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJF
QURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0g
WUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJ
UlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNTY2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
Mjc1IEBACisyMDA2LTA3LTI4ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBwYXRjaCBm
b3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MAor
ICAgICAgICAgIEFkb3B0IHBlZGFudGljIGNoYW5nZXMgZnJvbSB0aGUgVW5pdHkgcHJvamVjdCB0
byBpbXByb3ZlIAorICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIGNvbXBhdGFiaWxpdHkKKworICAg
ICAgICAgIENoYW5nZXMgaW5jbHVkZToKKyAgICAgICAgICAqIFJlbW92aW5nIHRyYWlsaW5nIHNl
bWljb2xvbiBmcm9tIG5hbWVzcGFjZSBicmFjZXMuCisgICAgICAgICAgKiBSZW1vdmluZyB0cmFp
bGluZyBjb21tYSBmcm9tIGxhc3QgZW51bSBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAqIFVwZGF0
aW5nIHRvIG1hdGNoIHN0eWxlIGd1aWRlbGluZXMuCisgICAgICAgICAgKiBBZGRpbmcgbWlzc2lu
ZyBuZXdsaW5lIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisgICAgICAgICAgKiBUdXJuaW5nIG9u
IGdjYyB3YXJuaW5nIGZvciBtaXNzaW5nIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiBhIHNvdXJjZSBm
aWxlCisgICAgICAgICAgICAoR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FIGluIFhjb2Rl
LCAtV25ld2xpbmUgaW4gZ2NjKS4KKyAgICAgICAgICAqIEFscGhhYmV0aWNhbCBzb3J0aW5nIG9m
IFhjb2RlIHNvdXJjZSBsaXN0IGZpbGVzLiAKKworICAgICAgICAqIFdlYkNvcmUrU1ZHL0RPTUxp
c3QuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViQ29yZVByZWZpeC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQ
cm9jZXNzb3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5oOgorICAgICAg
ICAoS0pTOjpET01Ob2RlOjopOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLmg6Cisg
ICAgICAgICgtW0RPTUNTU1ZhbHVlIGVudW1dKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TUNvcmUuaDoKKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnQ6Ojpd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAgICAgICAoLVtET01P
dmVyZmxvd0V2ZW50IGVudW1dKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmg6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01UcmF2ZXJzYWwuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVhQYXRoLmg6CisgICAgICAgICgtW0RPTVhQYXRoTlNSZXNvbHZlciBsb29r
dXBOYW1lc3BhY2VVUkk6XSk6CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVLZXlib2FyZEFjY2Vzcy5oOgorICAg
ICAgICAqIGNzcy9tYWtlcHJvcDoKKyAgICAgICAgKiBjc3MvbWFrZXZhbHVlczoKKyAgICAgICAg
KiBkb20vQ2hpbGROb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9Eb2NQdHIuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjopOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjopOgorICAgICAgICAqIGRvbS9OYW1lTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6cm9vdE5vZGVDaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Oik6CisgICAgICAgICogZWRpdGluZy9VbmxpbmtDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3Jl
OjpVbmxpbmtDb21tYW5kOjplZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0Zvcm1EYXRh
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFMaXN0SXRlbTo6Rm9ybURhdGFMaXN0
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUxpc3Q6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIGh0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
RGl2RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MSFJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSGVhZGluZ0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFRva2VuaXplci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6U3RhdGU6
Oik6CisgICAgICAgICogaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIGljb24vU1FM
U3RhdGVtZW50LmNwcDoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc1BvaW50M0Y6OktDYW52
YXNQb2ludDNGKToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGaWx0ZXI6OktDYW52YXNGaWx0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZpbHRlcjo6fktDYW52YXNGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZpbHRlckVmZmVjdDo6fktDYW52YXNGaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uOjpLQ0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFQ29u
dm9sdmVNYXRyaXg6OktDYW52YXNGRUNvbnZvbHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OktDTGlnaHRTb3VyY2U6OktDTGlnaHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6S0NEaXN0
YW50TGlnaHRTb3VyY2U6OktDRGlzdGFudExpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OktDUG9pbnRMaWdodFNvdXJjZTo6S0NQb2ludExpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OktDU3BvdExpZ2h0U291cmNlOjpLQ1Nwb3RMaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmc6OktDYW52YXNGRURpZmZ1c2VMaWdodGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRkVEaXNwbGFjZW1lbnRNYXA6OktDYW52YXNGRURp
c3BsYWNlbWVudE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRkVJbWFnZTo6S0NhbnZh
c0ZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFU3BlY3VsYXJMaWdodGluZzo6
S0NhbnZhc0ZFU3BlY3VsYXJMaWdodGluZyk6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJTVkdJ
bWFnZS5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNl
UXVhcnR6Lmg6CisgICAgICAgICoga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Oik6CisgICAgICAgICog
a3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKiBrc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50Lmg6CisgICAgICAgICoga3N2ZzIva3N2
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tDYW52YXNS
ZW5kZXJpbmdTdHlsZS5oOgorICAgICAgICAqIGtzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaDoK
KyAgICAgICAgKiBrc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGw6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuZ2xlLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FuaW1hdGVkUmVjdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFN0
cmluZy5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZUl0ZW0pOgorICAgICAgICAoU1ZHQW5pbWF0aW9u
RWxlbWVudDo6Y2FsY3VsYXRlUmVsYXRpdmVUaW1lUGVyY2VudGFnZSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NvbG9yLmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVm
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpzdmdfZHluYW1pY19jYXN0KToKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZUxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHRkVGdW5jQUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jQkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
R0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0xhbmdTcGFjZS5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMZW5ndGguaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdM
aW5lRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdMb2NhdGFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdNYXRyaXguaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
UGFpbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZy5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXRoU2Vn
QXJjLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdMaW5ldG8uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWwuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1BhdGhTZWdNb3ZldG8uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUG9pbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvbHlnb25FbGVtZW50Lmg6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSZWN0Lmg6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTZXRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0
b3BFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5
bGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGVz
dHMuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGl0bGVF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVVJJUmVmZXJlbmNlLmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9zdmdwYXRocGFyc2VyLmg6CisgICAgICAgICogcGFnZS9GcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9BZmZpbmVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5OjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkp
OgorICAgICAgICAqIHBsYXRmb3JtL0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhOjpGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRm9udERhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9UZXh0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94OjopOgor
ICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6aGVhcFBvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZvbnRDYWNoZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvR2x5cGhNYXBNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJGb250Q2FjaGUubW06CisgICAgICAgIChiZXR0ZXJDaG9pY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRSZW5kZXJTZWxlY3Q6OnNldFdpZGdldFdyaXRpbmdEaXJlY3Rpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCUi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQlI6OnJlbmRlck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQlI6OndpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3cuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6OlJlbmRlckZsb3cpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL2JpZGkuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwOgorCiAyMDA2LTA3LTI3ICBNaXR6IFBldHRlbCAg
PG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycy4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZVByZWZpeC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvV2ViQ29yZVBy
ZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxMyArMTgsMTUgQEAKICAqCiAgKi8KIAotLy8g
VGhpcyBwcmVmaXggZmlsZSBpcyBmb3IgdXNlIG9uIE1hYyBPUyBYIG9ubHkuIEl0IHNob3VsZCBj
b250YWluIG9ubHk6Ci0vLyAgICAxKSBmaWxlcyB0byBwcmVjb21waWxlIG9uIE1hYyBPUyBYIGZv
ciBmYXN0ZXIgYnVpbGRzCi0vLyAgICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVj
aWZpYyBwZXJmb3JtYW5jZSBidWcgd29ya2Fyb3VuZHMKLS8vICAgIDMpIHRoZSBzcGVjaWFsIHRy
aWNrIHRvIGNhdGNoIHVzIHVzaW5nIG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNv
bmZpZy5oIgotLy8gVGhlIHByb2plY3Qgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQgd2l0aG91dCB0
aGlzIGhlYWRlciwgYWx0aG91Z2ggd2UgcmFyZWx5IHRlc3QgdGhhdC4KKy8qIFRoaXMgcHJlZml4
IGZpbGUgaXMgZm9yIHVzZSBvbiBNYWMgT1MgWCBvbmx5LiBJdCBzaG91bGQgY29udGFpbiBvbmx5
OgorICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBvbiBNYWMgT1MgWCBmb3IgZmFzdGVyIGJ1
aWxkcworICogICAgMikgaW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9y
bWFuY2UgYnVnIHdvcmthcm91bmRzCisgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRj
aCB1cyB1c2luZyBuZXcgb3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKKyAq
IFRoZSBwcm9qZWN0IHNob3VsZCBiZSBhYmxlIHRvIGJ1aWxkIHdpdGhvdXQgdGhpcyBoZWFkZXIs
IGFsdGhvdWdoIHdlIHJhcmVseSB0ZXN0IHRoYXQuCisgKi8KKwogCi0vLyBUaGluZ3MgdGhhdCBu
ZWVkIHRvIGJlIGRlZmluZWQgZ2xvYmFsbHkgc2hvdWxkIGdvIGludG8gImNvbmZpZy5oIi4KKy8q
IFRoaW5ncyB0aGF0IG5lZWQgdG8gYmUgZGVmaW5lZCBnbG9iYWxseSBzaG91bGQgZ28gaW50byAi
Y29uZmlnLmgiLiAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKICNkZWZpbmUgTlVMTCBfX251bGwK
QEAgLTU0LDcgKzU2LDcgQEAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPG5ldz4KIAot
Ly8gV29yayBhcm91bmQgYnVnIDM1NTMzMDkgYnkgcmUtaW5jbHVkaW5nIDxjdHlwZS5oPi4KKy8q
IFdvcmsgYXJvdW5kIGJ1ZyAzNTUzMzA5IGJ5IHJlLWluY2x1ZGluZyA8Y3R5cGUuaD4uICovCiAj
aW5jbHVkZSA8Y2N0eXBlPgogI2RlZmluZSBpc2FsbnVtKGMpICAgICAgX19pc3R5cGUoKGMpLCAo
X0NUWVBFX0F8X0NUWVBFX0QpKQogI2RlZmluZSBpc2FscGhhKGMpICAgICAgX19pc3R5cGUoKGMp
LCBfQ1RZUEVfQSkKQEAgLTk0LDYgKzk2LDYgQEAKICNkZWZpbmUgZGVsZXRlICgiaWYgeW91IHVz
ZSBuZXcvZGVsZXRlIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGNvbmZpZy5oIGF0IHRoZSB0b3Agb2Yg
dGhlIGZpbGUiKCkpIAogI2VuZGlmCiAKLS8vIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJy
YXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBp
cyBkaXNhYmxlZC4KKy8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2Ny
ZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4g
Ki8KICN1bmRlZiB0cnkKICN1bmRlZiBjYXRjaApJbmRleDogV2ViQ29yZS9XZWJDb3JlK1NWRy9E
T01MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlK1NWRy9ET01MaXN0LmgJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9XZWJDb3JlK1NWRy9ET01MaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDExICsyNywxMCBAQAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRQdHJMaXN0Lmgi
CiAjaW5jbHVkZSAiU2hhcmVkLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGNsYXNzIERPTUxpc3QgOiBw
dWJsaWMgU2hhcmVkPERPTUxpc3Q8VD4gPgotICAgIHsKKyAgICBjbGFzcyBET01MaXN0IDogcHVi
bGljIFNoYXJlZDxET01MaXN0PFQ+ID4gewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NTGlzdCgp
IDogU2hhcmVkPERPTUxpc3Q8VD4gPigpIHsgbV9pbXBsLnNldEF1dG9EZWxldGUoZmFsc2UpOyB9
CiAgICAgICAgIERPTUxpc3QoY29uc3QgRE9NTGlzdCAmb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsg
fQpAQCAtMTE5LDkgKzExOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAg
ICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0PFQ+IG1faW1wbDsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlm
IC8vIEtET01fRE9NTGlzdF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTAsNiArMzUwLDggQEAKIAkJODU0RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MkQw
QTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICovOyB9OwogCQk4NTRGRTczODBBMjI5N0JF
MDA1OEQ3QUQgLyogVHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5j
cHAgKi87IH07CiAJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRjBBMjI5
N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovOyB9OworCQk4NUVDOUFGQTBBNzFBMkM2MDBF
RUVBRUQgLyogRm9udERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1RUM5QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovOyB9Owor
CQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAv
KiBMYW5ndWFnZS5oICovOyB9OwogCQk5MzAzMkNDODA5QUVDMzQzMDBGODJBMTggLyogUGF0aENH
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDMy
Q0M3MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICovOyB9OwogCQk5MzAzMkNDQTA5QUVD
MzRCMDBGODJBMTggLyogUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMwMzJDQzkwOUFFQzM0QjAwRjgyQTE4IC8qIFBhdGguaCAqLzsgfTsKIAkJ
OTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGlt
ZXIuaCAqLzsgfTsKQEAgLTE1OTgsMjMgKzE2MDAsNiBAQAogCQlGQUUwNDE5MDA5NzU5NkM5MDAw
NTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBRTA0MThFMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRl
ci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKLS8qIEJlZ2luIFBC
WEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwotCQlCQ0Y0RTUwOTBBNzU2Njk1MDA5MDUyN0EgLyogRGV2
ZWxvcG1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhCdWlsZFN0eWxlOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9IERldmVs
b3BtZW50OwotCQl9OwotCQlCQ0Y0RTUwQTBBNzU2Njk1MDA5MDUyN0EgLyogRGVwbG95bWVudCAq
LyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7Ci0JCQl9OwotCQkJbmFtZSA9IERlcGxveW1lbnQ7Ci0J
CX07Ci0vKiBFbmQgUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAJCUREMDQxRkYwMDlEOUUzMjUwMDEwQUYyQSAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7CkBAIC0yMDU3LDYgKzIwNDIsOCBAQAogCQk4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyog
VHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmF2ZXJzYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkUwQTIyOTdCRTAwNThEN0FE
IC8qIFRyZWVXYWxrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRyZWVXYWxrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcyRjBB
MjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJlZVdhbGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUVD
OUFGODBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0MCw3
ICs0MTI3LDYgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDQ0Q3NERCMEE0QzhEMzUw
MDVGREE2RCAvKiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmggKi8sCiAJCQkJOTNFRUMxRjAwOUMy
ODc3NzAwQzUxNUQxIC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk5M0VFQzFGMTA5QzI4
Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJCQk5MzBDQUI4ODA5QzQ5RUZB
MDAyMjlDMDQgLyogQ2FudmFzR3JhZGllbnQuaWRsICovLApAQCAtNDM0Miw2ICs0MzI4LDcgQEAK
IAkJCQlBOEVBNzlFNjBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5oICovLAog
CQkJCTFBODVCMUQ1MEExQjIzNkMwMEQ4Qzg3QyAvKiBIVE1MVUxpc3RFbGVtZW50LmlkbCAqLywK
IAkJCQlCQ0NENzRFNDBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAgKi8sCisJCQkJQkNDRDc0REIwQTRDOEQzNTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC01MTUxLDYgKzUxMzgsNyBAQAogCQkJCUJDNkRBQkYyMEExOTAxNTcwMEU1Q0Qx
NCAvKiBGb250Q2FjaGUuY3BwICovLAogCQkJCUJDRjdDMEI3MEExNjg3Q0MwMDMyRjc1QiAvKiBG
b250Q2FjaGUuaCAqLywKIAkJCQlCQ0MwODkxOTBBMUM0NjUyMDA2MTg5QTYgLyogRm9udERhdGEu
Y3BwICovLAorCQkJCTg1RUM5QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovLAog
CQkJCUJDQzQ3RTZBMDlBM0ZFNDcwMEFEQjc3MSAvKiBGb250RGVzY3JpcHRpb24uaCAqLywKIAkJ
CQlCQ0Y3QzA3NzBBMTY4MEMwMDAzMkY3NUIgLyogRm9udEZhbGxiYWNrTGlzdC5jcHAgKi8sCiAJ
CQkJQkNFQjM3NzUwOUI3QkIwRDAwQ0IzOEIxIC8qIEZvbnRGYWxsYmFja0xpc3QuaCAqLywKQEAg
LTUxNzUsNiArNTE2Myw3IEBACiAJCQkJQkNGMUE1RUYwOTc4Mzk2MDAwNjFBMTIzIC8qIEludFNp
emUuaCAqLywKIAkJCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi8sCiAJ
CQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAqLywKKwkJCQk4NUVDOUFGOTBB
NzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLywKIAkJCQlGNTg3ODUxMzAyREUzNzU5MDFF
QTQxMjIgLyogTGlzdEJveC5oICovLAogCQkJCTkzNTIwN0JEMDlCRDQxMEEwMEYyMDM4RCAvKiBM
b2NhbGl6ZWRTdHJpbmdzLmggKi8sCiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuY3BwICovLApAQCAtNTI1MywxNCArNTI0Miw2IEBACiAJCUY1MjNEMTg0MDJERTQyRTgw
MTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTRFMTk1OTIzMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmNwcCAqLywKLQkJ
CQk0RTE5NTkyNDBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeS5oICovLAotCQkJCTRFMTk1
OTI1MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLywKLQkJCQk0
RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAotCQkJ
CTRFMTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLywKLQkJCQk0
RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovLAotCQkJCTRFMTk1
OTFGMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8sCi0JCQkJNEUx
OTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi8sCiAJCQkJQTgw
RTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBD
OTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAwN0ZC
OEM1IC8qIENTU0JvcmRlckltYWdlVmFsdWUuY3BwICovLApAQCAtNTMzMSw4ICs1MzEyLDE2IEBA
CiAJCQkJOTNDQTRDOUIwOURGOTNGQTAwREY4Njc3IC8qIG1ha2Vwcm9wICovLAogCQkJCTkzQ0E0
QzlDMDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCTkzQ0E0QzlEMDlE
RjkzRkEwMERGODY3NyAvKiBtYWtldmFsdWVzICovLAorCQkJCTRFMTk1OTFGMEEzOURBQkEwMDIy
MEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8sCisJCQkJNEUxOTU5MjAwQTM5REFCQTAw
MjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi8sCiAJCQkJQThFQTgwMDEwQTE5NTE2RTAw
QThFRjVGIC8qIE1lZGlhTGlzdC5jcHAgKi8sCiAJCQkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVG
IC8qIE1lZGlhTGlzdC5oICovLAorCQkJCTRFMTk1OTIzMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRp
YVF1ZXJ5LmNwcCAqLywKKwkJCQk0RTE5NTkyNDBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVy
eS5oICovLAorCQkJCTRFMTk1OTI1MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcCAqLywKKwkJCQk0RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2
YWx1YXRvci5oICovLAorCQkJCTRFMTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5
RXhwLmNwcCAqLywKKwkJCQk0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4
cC5oICovLAogCQkJCUE4MEU2Q0QxMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggKi8sCiAJCQkJ
OTNDQTRDOUYwOURGOTNGQTAwREY4Njc3IC8qIHF1aXJrcy5jc3MgKi8sCiAJCQkJQTgwRTc5OTYw
QTE5QkQyMTAwN0ZCOEM1IC8qIFJlY3QuaWRsICovLApAQCAtNTM1NywxNCArNTM0Niw2IEBACiAJ
CUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJpbmcgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUFCRERGRTczMEE1QzZFNkYwMEEzRTExRCAv
KiBSZW5kZXJNZW51TGlzdC5jcHAgKi8sCi0JCQkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8q
IFJlbmRlck1lbnVMaXN0LmggKi8sCi0JCQkJQUJEREZFNzUwQTVDNkU3MDAwQTNFMTFEIC8qIFJl
bmRlclBvcHVwTWVudS5jcHAgKi8sCi0JCQkJQUJEREZFNzYwQTVDNkU3MDAwQTNFMTFEIC8qIFJl
bmRlclBvcHVwTWVudS5oICovLAotCQkJCUFCRERGRTc3MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5k
ZXJQb3B1cE1lbnVNYWMuaCAqLywKLQkJCQlBQkRERkU3ODBBNUM2RTcwMDBBM0UxMUQgLyogUmVu
ZGVyUG9wdXBNZW51TWFjLm1tICovLAotCQkJCUFCRTdCNTIxMEE0ODlGODMwMDMxODgxQyAvKiBE
ZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcCAqLywKLQkJCQlBQkU3QjUyMjBBNDg5RjgzMDAzMTg4
MUMgLyogRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oICovLAogCQkJCUE4Q0ZGMDRCMEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovLAogCQkJCUE4Q0ZGMDQ5MEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5
NEM5RTQgLyogYmlkaS5jcHAgKi8sCkBAIC01MzcyLDYgKzUzNTMsOCBAQAogCQkJCUJDRUE0ODE1
MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5jcHAgKi8sCiAJCQkJQkNFQTQ4MTYwOTdE
OTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggKi8sCiAJCQkJQkNFQTQ4MTcwOTdEOTMwMjAw
OTRDOUU0IC8qIERhdGFSZWYuaCAqLywKKwkJCQlBQkU3QjUyMTBBNDg5RjgzMDAzMTg4MUMgLyog
RGVwcmVjYXRlZFJlbmRlclNlbGVjdC5jcHAgKi8sCisJCQkJQUJFN0I1MjIwQTQ4OUY4MzAwMzE4
ODFDIC8qIERlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuaCAqLywKIAkJCQlCQzkyRjFEQjBBNDBBRUEz
MDBBQzA3NDYgLyogRGVwcmVjYXRlZFNsaWRlci5jcHAgKi8sCiAJCQkJQkM5MkYxREMwQTQwQUVB
MzAwQUMwNzQ2IC8qIERlcHJlY2F0ZWRTbGlkZXIuaCAqLywKIAkJCQlBOENGRjZDQTBBMTU2MUNE
MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guY3BwICovLApAQCAtNTM4OSw4ICs1MzcyLDYgQEAKIAkJ
CQk5MzVDNDc2MDA5QUM0Q0QxMDBBNkFBQjQgLyogTGVuZ3RoLmggKi8sCiAJCQkJQThFQTdBNEQw
QTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guY3BwICovLAogCQkJCUE4RUE3QTQ5MEEx
OTFBNTIwMEE4RUY1RiAvKiBMaXN0TWFya2VyQm94LmggKi8sCi0JCQkJQkNFQTQ4NDQwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclN0eWxlLmNwcCAqLywKLQkJCQlCQ0VBNDg0NTA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlCQ0VBNDgxQzA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyQXBwbGV0LmNwcCAqLywKIAkJCQlCQ0VBNDgxRDA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyQXBwbGV0LmggKi8sCiAJCQkJQkNFQTQ4MUUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
ckFyZW5hLmNwcCAqLywKQEAgLTU0NDEsMTQgKzU0MjIsMjIgQEAKIAkJCQlBOEVBN0E0QzBBMTkx
QTUyMDBBOEVGNUYgLyogUmVuZGVyTGlzdEl0ZW0uaCAqLywKIAkJCQlBOEVBN0E0QjBBMTkxQTUy
MDBBOEVGNUYgLyogUmVuZGVyTGlzdE1hcmtlci5jcHAgKi8sCiAJCQkJQThFQTdBNEEwQTE5MUE1
MjAwQThFRjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuaCAqLywKKwkJCQlBQkRERkU3MzBBNUM2RTZG
MDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuY3BwICovLAorCQkJCUFCRERGRTc0MEE1QzZFNzAw
MEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovLAogCQkJCUJDRUE0ODQwMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJPYmplY3QuY3BwICovLAogCQkJCUJDRUE0ODQxMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJPYmplY3QuaCAqLywKIAkJCQlBODcxREVDODBBMTUzMEM3MDBCMTJBNjggLyog
UmVuZGVyUGFydC5jcHAgKi8sCiAJCQkJQTg3MURFQ0YwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRl
clBhcnQuaCAqLywKIAkJCQlBODcxREVDRTBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydE9i
amVjdC5jcHAgKi8sCiAJCQkJQTg3MURFQ0QwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnRP
YmplY3QuaCAqLywKKwkJCQlBQkRERkU3NTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBN
ZW51LmNwcCAqLywKKwkJCQlBQkRERkU3NjBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBN
ZW51LmggKi8sCisJCQkJQUJEREZFNzcwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVwTWVu
dU1hYy5oICovLAorCQkJCUFCRERGRTc4MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1cE1l
bnVNYWMubW0gKi8sCiAJCQkJQTg3MURGREUwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxh
Y2VkLmNwcCAqLywKIAkJCQlBODcxREZERjBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFj
ZWQuaCAqLywKKwkJCQlCQ0VBNDg0NDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyU3R5bGUuY3Bw
ICovLAorCQkJCUJDRUE0ODQ1MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJTdHlsZS5oICovLAog
CQkJCUE4REY0QUUyMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZS5jcHAgKi8sCiAJCQkJ
QThERjRBRTEwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmggKi8sCiAJCQkJQThERjRB
RTAwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlQ2VsbC5jcHAgKi8sCkBAIC02NDE5LDYg
KzY0MDgsOCBAQAogCQkJCUUxNDg0MzJGMEE2NzRGQzIwMDdFNEQzOSAvKiBTdHJlYW1pbmdUZXh0
RGVjb2Rlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1RUM5QUZBMEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODVFQzlBRkIwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTY0NTIsMTIgKzY0NDMsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwotCQkJYnVpbGRTZXR0aW5ncyA9
IHsKLQkJCX07Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQlCQ0Y0RTUwOTBBNzU2Njk1MDA5MDUy
N0EgLyogRGV2ZWxvcG1lbnQgKi8sCi0JCQkJQkNGNEU1MEEwQTc1NjY5NTAwOTA1MjdBIC8qIERl
cGxveW1lbnQgKi8sCi0JCQkpOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlr
bm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTc0MjQsNiArNzQwOSw3IEBACiAJCQkJ
R0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9T
VEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJP
VVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RF
U1RSVUNUT1IgPSBZRVM7CiAJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNDsKQEAg
LTc0NjAsNiArNzQ0Niw3IEBACiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlF
UzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5J
TkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUg
PSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJ
CUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuNDsKQEAgLTc0OTYsNiArNzQ4Myw3IEBACiAJCQkJR0NDX1BSRUNP
TVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0g
Tk87CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1Ig
PSBZRVM7CiAJCQkJV0FSTklOR19DRkxBR1MgPSAoCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAkocmV2
aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogCiAjaW5jbHVkZSAiQ2FudmFzR3Jh
ZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCkBAIC0yOCw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzR3JhZGllbnQu
aCIKICNpbmNsdWRlICJKU0NhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJranNfaHRtbC5oIgpAQCAtMzI2
LDQgKzMyNiw0IEBAIEpTVmFsdWUqIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmUKICAg
ICByZXR1cm4gMDsKIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuaAko
cmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBYU0xUUHJvY2Vzc29yOwotfTsKK30KIAogLy8gRXZlbnR1YWxseSB3ZSBzaG91
bGQgaW1wbGVtZW50IFhTTFRFeGNlcHRpb246CiAvLyBodHRwOi8vbHhyLm1vemlsbGEub3JnL3Nl
YW1vbmtleS9zb3VyY2UvY29udGVudC94c2wvcHVibGljL25zSVhTTFRFeGNlcHRpb24uaWRsCkBA
IC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTT2JqZWN0ICpjb25zdHJ1Y3Qo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBMaXN0ICZhcmdzKSB7IHJldHVybiBuZXcgSlNYU0xUUHJv
Y2Vzc29yKGV4ZWMpOyB9CiB9OwogCi19OworfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgor
I2VuZGlmIC8vIFhTTFRQcm9jZXNzb3JfSAogCiAjZW5kaWYgLy8gS0hUTUxfWFNMVApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMva2pzX2RvbW5vZGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19kb21ub2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICBBdHRyaWJ1dGVzLCBOYW1lc3BhY2VVUkksIFByZWZpeCwgTG9jYWxO
YW1lLCBPd25lckRvY3VtZW50LCBJbnNlcnRCZWZvcmUsCiAgICAgICAgIFJlcGxhY2VDaGlsZCwg
UmVtb3ZlQ2hpbGQsIEFwcGVuZENoaWxkLCBIYXNBdHRyaWJ1dGVzLCBIYXNDaGlsZE5vZGVzLAog
ICAgICAgICBDbG9uZU5vZGUsIE5vcm1hbGl6ZSwgSXNTdXBwb3J0ZWQsIENvbnRhaW5zLCBJc1Nh
bWVOb2RlLCBJc0VxdWFsTm9kZSwgVGV4dENvbnRlbnQsCi0gICAgICAgIElzRGVmYXVsdE5hbWVz
cGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBMb29rdXBQcmVmaXgsCisgICAgICAgIElzRGVmYXVs
dE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBMb29rdXBQcmVmaXgKICAgICB9OwogICAg
IAogcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaAkocmV2aXNpb24gMTU2NDgp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgZW51bSB7CiAgICAgRE9NX0lNUE9SVF9SVUxFICAgICAgICAgICAgICAgID0g
MywKICAgICBET01fTUVESUFfUlVMRSAgICAgICAgICAgICAgICAgPSA0LAogICAgIERPTV9GT05U
X0ZBQ0VfUlVMRSAgICAgICAgICAgICA9IDUsCi0gICAgRE9NX1BBR0VfUlVMRSAgICAgICAgICAg
ICAgICAgID0gNiwKKyAgICBET01fUEFHRV9SVUxFICAgICAgICAgICAgICAgICAgPSA2CiB9Owog
CiBAaW50ZXJmYWNlIERPTUNTU1J1bGUgOiBET01PYmplY3QKQEAgLTExMSw3ICsxMTEsNyBAQCBl
bnVtIHsKICAgICBET01fQ1NTX0lOSEVSSVQgPSAwLAogICAgIERPTV9DU1NfUFJJTUlUSVZFX1ZB
TFVFID0gMSwKICAgICBET01fQ1NTX1ZBTFVFX0xJU1QgPSAyLAotICAgIERPTV9DU1NfQ1VTVE9N
ID0gMywKKyAgICBET01fQ1NTX0NVU1RPTSA9IDMKIH07CiAKIEBpbnRlcmZhY2UgRE9NQ1NTVmFs
dWUgOiBET01PYmplY3QKQEAgLTE0Nyw3ICsxNDcsNyBAQCBlbnVtIHsKICAgICBET01fQ1NTX0FU
VFIgICAgICAgICAgICAgICAgICAgICAgID0gMjIsCiAgICAgRE9NX0NTU19DT1VOVEVSICAgICAg
ICAgICAgICAgICAgICA9IDIzLAogICAgIERPTV9DU1NfUkVDVCAgICAgICAgICAgICAgICAgICAg
ICAgPSAyNCwKLSAgICBET01fQ1NTX1JHQkNPTE9SICAgICAgICAgICAgICAgICAgID0gMjUsCisg
ICAgRE9NX0NTU19SR0JDT0xPUiAgICAgICAgICAgICAgICAgICA9IDI1CiB9OwogCiBAaW50ZXJm
YWNlIERPTUNTU1ByaW1pdGl2ZVZhbHVlIDogRE9NQ1NTVmFsdWUKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Db3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUNvcmUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGVudW0gewogICAgIERPTV9T
WU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAogICAgIERPTV9JTlZBTElEX01PRElG
SUNBVElPTl9FUlIgICAgICA9IDEzLAogICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAg
ICAgICA9IDE0LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1LAor
ICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1CiB9OwogCiBAaW50ZXJm
YWNlIERPTUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0CkBAIC04NSw3ICs4NSw3IEBAIGVudW0g
ewogICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAgICA9IDksCiAgICAgRE9NX0RP
Q1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCiAgICAgRE9NX0RPQ1VNRU5UX0ZSQUdN
RU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAg
ICAgID0gMTIsCisgICAgRE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKIH07
CiAKIEBpbnRlcmZhY2UgRE9NTm9kZSA6IERPTU9iamVjdApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01FdmVudHMuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RXZlbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0LDEzIEBAIGVudW0gewogLSAo
dW5zaWduZWQgc2hvcnQpb3JpZW50OwogLSAoQk9PTClob3Jpem9udGFsT3ZlcmZsb3c7CiAtIChC
T09MKXZlcnRpY2FsT3ZlcmZsb3c7Ci1AZW5kOworQGVuZAogCiBlbnVtIHsKICAgICBET01fS0VZ
X0xPQ0FUSU9OX1NUQU5EQVJEICAgICAgPSAweDAwLAogICAgIERPTV9LRVlfTE9DQVRJT05fTEVG
VCAgICAgICAgICA9IDB4MDEsCiAgICAgRE9NX0tFWV9MT0NBVElPTl9SSUdIVCAgICAgICAgID0g
MHgwMiwKLSAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCAgICAgICAgPSAweDAzLAorICAgIERP
TV9LRVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9IDB4MDMKIH07CiAKIEBpbnRlcmZhY2UgRE9N
S2V5Ym9hcmRFdmVudCA6IERPTVVJRXZlbnQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01SYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGVudW0gewogICAgIC8vIERPTSByYW5nZSBl
eGNlcHRpb24gY29kZXMKICAgICAvLwogICAgIERPTV9CQURfQk9VTkRBUllQT0lOVFNfRVJSICAg
ICAgICA9IDEsCi0gICAgRE9NX0lOVkFMSURfTk9ERV9UWVBFX0VSUiAgICAgICAgID0gMiwKKyAg
ICBET01fSU5WQUxJRF9OT0RFX1RZUEVfRVJSICAgICAgICAgPSAyCiB9OwogCiBlbnVtIHsKQEAg
LTQyLDcgKzQyLDcgQEAgZW51bSB7CiAgICAgRE9NX1NUQVJUX1RPX1NUQVJUICAgICAgICAgICAg
ICAgID0gMCwKICAgICBET01fU1RBUlRfVE9fRU5EICAgICAgICAgICAgICAgICAgPSAxLAogICAg
IERPTV9FTkRfVE9fRU5EICAgICAgICAgICAgICAgICAgICA9IDIsCi0gICAgRE9NX0VORF9UT19T
VEFSVCAgICAgICAgICAgICAgICAgID0gMywKKyAgICBET01fRU5EX1RPX1NUQVJUICAgICAgICAg
ICAgICAgICAgPSAzCiB9OwogCiBAaW50ZXJmYWNlIERPTVJhbmdlIDogRE9NT2JqZWN0CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVRyYXZlcnNhbC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UcmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQCBlbnVtIHsKICAgICAvLyBDb25zdGFudHMgcmV0dXJuZWQgYnkgYWNjZXB0Tm9k
ZQogICAgIERPTV9GSUxURVJfQUNDRVBUICAgICAgICAgICAgICAgICAgPSAxLAogICAgIERPTV9G
SUxURVJfUkVKRUNUICAgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9GSUxURVJfU0tJUCAg
ICAgICAgICAgICAgICAgICAgPSAzLAorICAgIERPTV9GSUxURVJfU0tJUCAgICAgICAgICAgICAg
ICAgICAgPSAzCiB9OwogCiBlbnVtIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSB7CiAgICAgRE9N
X1NIT1dfRE9DVU1FTlQgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAxMDAsCiAgICAgRE9NX1NI
T1dfRE9DVU1FTlRfVFlQRSAgICAgICAgICAgICA9IDB4MDAwMDAyMDAsCiAgICAgRE9NX1NIT1df
RE9DVU1FTlRfRlJBR01FTlQgICAgICAgICA9IDB4MDAwMDA0MDAsCi0gICAgRE9NX1NIT1dfTk9U
QVRJT04gICAgICAgICAgICAgICAgICA9IDB4MDAwMDA4MDAsCisgICAgRE9NX1NIT1dfTk9UQVRJ
T04gICAgICAgICAgICAgICAgICA9IDB4MDAwMDA4MDAKIH07CiAKIEBwcm90b2NvbCBET01Ob2Rl
RmlsdGVyIDxOU09iamVjdD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCShyZXZpc2lv
biAxNTY0OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGVudW0gewogICAgIERPTV9VTk9SREVSRURfTk9ERV9TTkFQ
U0hPVF9UWVBFICAgPSA2LAogICAgIERPTV9PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSAgICAg
PSA3LAogICAgIERPTV9BTllfVU5PUkRFUkVEX05PREVfVFlQRSAgICAgICAgPSA4LAotICAgIERP
TV9GSVJTVF9PUkRFUkVEX05PREVfVFlQRSAgICAgICAgPSA5LAorICAgIERPTV9GSVJTVF9PUkRF
UkVEX05PREVfVFlQRSAgICAgICAgPSA5CiB9OwogCiBAaW50ZXJmYWNlIERPTVhQYXRoUmVzdWx0
IDogRE9NT2JqZWN0CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB0eXBlZGVmIGVudW0gewogdHlw
ZWRlZiBlbnVtIHsKICAgICBXZWJTZWxlY3Rpb25TdGF0ZU5vbmUsCiAgICAgV2ViU2VsZWN0aW9u
U3RhdGVDYXJldCwKLSAgICBXZWJTZWxlY3Rpb25TdGF0ZVJhbmdlLAorICAgIFdlYlNlbGVjdGlv
blN0YXRlUmFuZ2UKIH0gV2ViU2VsZWN0aW9uU3RhdGU7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0x
NTcsNyArMTU3LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBPYmplY3RFbGVtZW50Tm9uZSwKICAg
ICBPYmplY3RFbGVtZW50SW1hZ2UsCiAgICAgT2JqZWN0RWxlbWVudEZyYW1lLAotICAgIE9iamVj
dEVsZW1lbnRQbHVnaW4sCisgICAgT2JqZWN0RWxlbWVudFBsdWdpbgogfSBPYmplY3RFbGVtZW50
VHlwZTsKIAogQHByb3RvY29sIFdlYkNvcmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA8TlNPYmpl
Y3Q+CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUtleWJvYXJkQWNjZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVLZXlib2FyZEFjY2Vzcy5oCShy
ZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlS2V5Ym9hcmRBY2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNSArMjcsNSBAQCB0eXBlZGVmIGVudW0gewogICAg
IFdlYkNvcmVLZXlib2FyZEFjY2Vzc0RlZmF1bHQgICAgID0gMHgwMDAwMDAwMCwKICAgICBXZWJD
b3JlS2V5Ym9hcmRBY2Nlc3NGdWxsICAgICAgICA9IDB4MDAwMDAwMDEsCiAgICAgLy8gdGhpcyBm
bGFnIG1heSBiZSBvcidlZCB3aXRoIGVpdGhlciBvZiB0aGUgdHdvIGFib3ZlCi0gICAgV2ViQ29y
ZUtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgPSAweDEwMDAwMDAwLCAKKyAgICBXZWJDb3JlS2V5
Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA9IDB4MTAwMDAwMDAKIH0gV2ViQ29yZUtleWJvYXJkVUlN
b2RlOwpJbmRleDogV2ViQ29yZS9jc3MvbWFrZXByb3AKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvbWFrZXByb3AJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9jc3MvbWFrZXByb3AJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDYgQEAgcHJpbnQgIiAgICBpZihpZCA+PSBDU1NfUFJP
UF9UT1RBTCB8fCBpZAogcHJpbnQgIiAgICAgIHJldHVybiBTdHJpbmcoKTsiO1wKIHByaW50ICIg
ICAgZWxzZSI7XAogcHJpbnQgIiAgICAgIHJldHVybiBTdHJpbmcocHJvcGVydHlMaXN0W2lkXSk7
IjsgXAotcHJpbnQgIn07IjsgXAorcHJpbnQgIn0iOyBcCiBwcmludCAiIjsgXAogfScgPj4gQ1NT
UHJvcGVydHlOYW1lcy5jCkluZGV4OiBXZWJDb3JlL2Nzcy9tYWtldmFsdWVzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL21ha2V2YWx1ZXMJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9j
c3MvbWFrZXZhbHVlcwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNiBAQCBwcmludCAiICAg
IGlmKGlkID49IENTU19WQUxfVE9UQUwgfHwgaWQgCiBwcmludCAiICAgICAgcmV0dXJuIFN0cmlu
ZygpOyI7XAogcHJpbnQgIiAgICBlbHNlIjtcCiBwcmludCAiICAgICAgcmV0dXJuIFN0cmluZyh2
YWx1ZUxpc3RbaWRdKTsiOyBcCi1wcmludCAifTsiOyBcCitwcmludCAifSI7IFwKIHByaW50ICIi
OyBcCiB9JyA+PiBDU1NWYWx1ZUtleXdvcmRzLmMKSW5kZXg6IFdlYkNvcmUvZG9tL0NoaWxkTm9k
ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxNyArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGls
ZE5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0Ci17CitjbGFzcyBDaGlsZE5vZGVMaXN0IDogcHVi
bGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBDaGlsZE5vZGVMaXN0KCBOb2RlICpuKTsKKyAg
ICBDaGlsZE5vZGVMaXN0KE5vZGUqKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlICppdGVtICggdW5zaWduZWQgaW5kZXggKSBjb25zdDsK
KyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKCBOb2RlICp0ZXN0Tm9kZSApIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3Q7CiB9
OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBET01fQ2hpbGROb2RlTGlzdEltcGxfaApJbmRleDogV2ViQ29yZS9kb20vRG9jUHRy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jUHRyLmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9kb20vRG9jUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRG9jUHRy
Ci17Ci0gcHVibGljOgordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERvY1B0ciB7CitwdWJsaWM6
CiAgICAgRG9jUHRyKCkgOiBtX3B0cigwKSB7fQogICAgIERvY1B0cihUICpwdHIpIDogbV9wdHIo
cHRyKSB7IGlmIChwdHIpIHB0ci0+c2VsZk9ubHlSZWYoKTsgfQogICAgIERvY1B0cihjb25zdCBE
b2NQdHIgJm8pIDogbV9wdHIoby5tX3B0cikgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+c2Vs
Zk9ubHlSZWZSZWYoKTsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIERPTU5PREVJTlNFUlRFRElOVE9ET0NVTUVOVF9MSVNURU5FUiA9IDB4MTAsCiAg
ICAgICAgIERPTUFUVFJNT0RJRklFRF9MSVNURU5FUiAgICAgICAgICAgICA9IDB4MjAsCiAgICAg
ICAgIERPTUNIQVJBQ1RFUkRBVEFNT0RJRklFRF9MSVNURU5FUiAgICA9IDB4NDAsCi0gICAgICAg
IE9WRVJGTE9XQ0hBTkdFRF9MSVNURU5FUiAgICAgICAgICAgICA9IDB4ODAsCisgICAgICAgIE9W
RVJGTE9XQ0hBTkdFRF9MSVNURU5FUiAgICAgICAgICAgICA9IDB4ODAKICAgICB9OwogCiAgICAg
Ym9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyBy
ZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KSW5kZXg6IFdlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXIuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyNSArMjYsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gQSByYW5nZSBvZiBhIG5vZGUgd2l0aGluIGEgZG9jdW1lbnQgdGhhdCBpcyAibWFya2Vk
Iiwgc3VjaCBhcyBiZWluZyBtaXNzcGVsbGVkCi1zdHJ1Y3QgRG9jdW1lbnRNYXJrZXIKLXsKK3N0
cnVjdCBEb2N1bWVudE1hcmtlciB7CisKICAgICBlbnVtIE1hcmtlclR5cGUgewotICAgICAgICBB
bGxNYXJrZXJzID0gLTEsCi0gICAgICAgIFNwZWxsaW5nID0gMCwKLSAgICAgICAgVGV4dE1hdGNo
LAorICAgICAgICBBbGxNYXJrZXJzICA9IC0xLAorICAgICAgICBTcGVsbGluZyAgICA9IDAsCisg
ICAgICAgIFRleHRNYXRjaCAgID0gMQogICAgIH07Ci0gICAgCisKICAgICBlbnVtIE1hcmtlclR5
cGUgdHlwZTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OwotICAgIAotICAg
IGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IERvY3VtZW50TWFya2VyICZvKSBjb25zdCB7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0OworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERvY3VtZW50TWFya2VyJiBvKSBjb25zdAorICAgIHsKICAgICAg
ICAgcmV0dXJuIHR5cGUgPT0gby50eXBlICYmIHN0YXJ0T2Zmc2V0ID09IG8uc3RhcnRPZmZzZXQg
JiYgZW5kT2Zmc2V0ID09IG8uZW5kT2Zmc2V0OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yICE9
IChjb25zdCBEb2N1bWVudE1hcmtlciAmbykgY29uc3QgeworCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IERvY3VtZW50TWFya2VyJiBvKSBjb25zdAorICAgIHsKICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7CiAgICAgfQogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBET01fRG9jdW1lbnRNYXJrZXJfaApJbmRleDogV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXROb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRO
b2RlLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXROb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNiBAQCBpbmxpbmUgdm9pZCBhbGxvd0V2ZW50
RGlzcGF0Y2goKSB7IH0KIAogI2VuZGlmIC8vIE5ERUJVRyAKIAotfSAvL25hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIERPTV9FdmVu
dFRhcmdldE5vZGVJbXBsX2gKSW5kZXg6IFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERPTV9LRVlfTE9DQVRJT05f
U1RBTkRBUkQgICAgICA9IDB4MDAsCiAgICAgICAgICAgICBET01fS0VZX0xPQ0FUSU9OX0xFRlQg
ICAgICAgICAgPSAweDAxLAogICAgICAgICAgICAgRE9NX0tFWV9MT0NBVElPTl9SSUdIVCAgICAg
ICAgID0gMHgwMiwKLSAgICAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9
IDB4MDMsCisgICAgICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCAgICAgICAgPSAweDAz
CiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBLZXlib2FyZEV2ZW50KCk7CkluZGV4OiBX
ZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1l
Tm9kZUxpc3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjUgKzMzLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8qKgogICogTm9kZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRo
IGEgZ2l2ZW4gIm5hbWU9IiB0YWcKICAqLwotY2xhc3MgTmFtZU5vZGVMaXN0IDogcHVibGljIE5v
ZGVMaXN0Ci17CitjbGFzcyBOYW1lTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGlj
OgotICAgIE5hbWVOb2RlTGlzdCggTm9kZSAqZG9jLCBjb25zdCBTdHJpbmcgJnQgKTsKKyAgICBO
YW1lTm9kZUxpc3QoTm9kZSogZG9jLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gRE9N
IG1ldGhvZHMgb3ZlcnJpZGRlbiBmcm9tICBwYXJlbnQgY2xhc3NlcwogCiAgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUgKml0ZW0gKCB1bnNpZ25l
ZCBpbmRleCApIGNvbnN0OworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCi0gICAgdmly
dHVhbCB2b2lkIHJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCkge307CisgICAgdmlydHVhbCB2b2lk
IHJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJvb3ROb2Rl
QXR0cmlidXRlQ2hhbmdlZCgpIHsgTm9kZUxpc3Q6OnJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyggTm9kZSAqdGVz
dE5vZGUgKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogdGVzdE5v
ZGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIG5vZGVOYW1lOwogfTsKIAotfTsgLy9uYW1lc3BhY2UK
LSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NX05hbWVOb2Rl
TGlzdEltcGxfaApJbmRleDogV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAJKHJldmlzaW9uIDE1NjQ4KQorKysg
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsx
NTksNyBAQCBTdHJpbmcgUXVhbGlmaWVkTmFtZTo6dG9TdHJpbmcoKSBjb25zdAogfQogCiAvLyBH
bG9iYWwgaW5pdCByb3V0aW5lcwotREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCBhbnlOYW1l
LCBudWxsQXRvbSwgc3RhckF0b20sIHN0YXJBdG9tKTsKK0RFRklORV9HTE9CQUwoUXVhbGlmaWVk
TmFtZSwgYW55TmFtZSwgbnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRvbSkKIAogdm9pZCBRdWFs
aWZpZWROYW1lOjppbml0KCkKIHsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAkocmV2aXNp
b24gMTU2NDgpCisrKyBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw4ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVHlw
aW5nQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZAoteworY2xhc3MgVHlwaW5n
Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgZW51
bSBFVHlwaW5nQ29tbWFuZCB7IAogICAgICAgICBEZWxldGVLZXksIApAQCAtMzksNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEluc2VydFRleHQsIAogICAgICAgICBJbnNlcnRMaW5lQnJlYWss
IAogICAgICAgICBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IsCi0gICAgICAgIEluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCwKKyAgICAgICAgSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9ySW5RdW90ZWRDb250ZW50CiAgICAgfTsKIAogICAgIFR5cGluZ0NvbW1hbmQoRG9jdW1l
bnQgKmRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCwgY29uc3QgU3RyaW5nICZ0ZXh0ID0gIiIsIGJv
b2wgc2VsZWN0SW5zZXJ0ZWRUZXh0ID0gZmFsc2UsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9VbmxpbmtD
b21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1VubGlua0NvbW1hbmQuaAko
cmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVbmxpbmtDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kCi17CitjbGFz
cyBVbmxpbmtDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoK
ICAgICBVbmxpbmtDb21tYW5kKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHko
KTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IEVkaXRBY3Rpb25Vbmxpbms7IH0KLXByaXZhdGU6CiB9OwogCi19IC8vIG5hbWVzcGFjZSBraHRt
bAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVW5saW5rQ29tbWFuZF9oClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIFVubGlua0NvbW1hbmRfaApJbmRl
eDogV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9Gb3JtRGF0YUxpc3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2h0bWwvRm9ybURh
dGFMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxNSBAQAogI2lmbmRlZiBIVE1M
X0Zvcm1EYXRhTGlzdF9oCiAjZGVmaW5lIEhUTUxfRm9ybURhdGFMaXN0X2gKIAorI2luY2x1ZGUg
IkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRm9ybURhdGFMaXN0SXRlbSB7Ci0gICAg
Rm9ybURhdGFMaXN0SXRlbShjb25zdCBEZXByZWNhdGVkQ1N0cmluZyAmZGF0YSkgOiBtX2RhdGEo
ZGF0YSkgeyB9Ci0gICAgRm9ybURhdGFMaXN0SXRlbShjb25zdCBEZXByZWNhdGVkU3RyaW5nICZw
YXRoKSA6IG1fcGF0aChwYXRoKSB7IH0KKyAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJl
Y2F0ZWRDU3RyaW5nJiBkYXRhKSA6IG1fZGF0YShkYXRhKSB7IH0KKyAgICBGb3JtRGF0YUxpc3RJ
dGVtKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHBhdGgpIDogbV9wYXRoKHBhdGgpIHsgfQogCiAg
ICAgRGVwcmVjYXRlZFN0cmluZyBtX3BhdGg7CiAgICAgRGVwcmVjYXRlZENTdHJpbmcgbV9kYXRh
OwpAQCAtNDUsMTUgKzQ1LDE1IEBAIGNsYXNzIEZvcm1EYXRhTGlzdCB7CiBwdWJsaWM6CiAgICAg
Rm9ybURhdGFMaXN0KGNvbnN0IFRleHRFbmNvZGluZyYpOwogCi0gICAgdm9pZCBhcHBlbmREYXRh
KGNvbnN0IFN0cmluZyAma2V5LCBjb25zdCBTdHJpbmcgJnZhbHVlKQorICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgeyBh
cHBlbmRTdHJpbmcoa2V5LmRlcHJlY2F0ZWRTdHJpbmcoKSk7IGFwcGVuZFN0cmluZyh2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCkpOyB9Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAm
a2V5LCBjb25zdCBEZXByZWNhdGVkU3RyaW5nICZ2YWx1ZSkKKyAgICB2b2lkIGFwcGVuZERhdGEo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHZhbHVlKQogICAgICAg
ICB7IGFwcGVuZFN0cmluZyhrZXkuZGVwcmVjYXRlZFN0cmluZygpKTsgYXBwZW5kU3RyaW5nKHZh
bHVlKTsgfQotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcgJmtleSwgY29uc3QgRGVw
cmVjYXRlZENTdHJpbmcgJnZhbHVlKQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgRGVwcmVjYXRlZENTdHJpbmcmIHZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0
cmluZyhrZXkuZGVwcmVjYXRlZFN0cmluZygpKTsgYXBwZW5kU3RyaW5nKHZhbHVlKTsgfQotICAg
IHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcgJmtleSwgaW50IHZhbHVlKQorICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGtleSwgaW50IHZhbHVlKQogICAgICAgICB7IGFwcGVu
ZFN0cmluZyhrZXkuZGVwcmVjYXRlZFN0cmluZygpKTsgYXBwZW5kU3RyaW5nKERlcHJlY2F0ZWRT
dHJpbmc6Om51bWJlcih2YWx1ZSkpOyB9Ci0gICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmlu
ZyAma2V5LCBjb25zdCBTdHJpbmcgJmZpbGVuYW1lKTsKKyAgICB2b2lkIGFwcGVuZEZpbGUoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAgRGVwcmVjYXRl
ZFZhbHVlTGlzdENvbnN0SXRlcmF0b3I8Rm9ybURhdGFMaXN0SXRlbT4gYmVnaW4oKSBjb25zdAog
ICAgICAgICB7IHJldHVybiBtX2xpc3QuYmVnaW4oKTsgfQpAQCAtNjEsMTMgKzYxLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgeyByZXR1cm4gbV9saXN0LmVuZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZENTdHJpbmcgJnMpOwotICAgIHZvaWQg
YXBwZW5kU3RyaW5nKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnMpOworICAgIHZvaWQgYXBwZW5k
U3RyaW5nKGNvbnN0IERlcHJlY2F0ZWRDU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRTdHJpbmco
Y29uc3QgRGVwcmVjYXRlZFN0cmluZyYpOwogCiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7
CiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxGb3JtRGF0YUxpc3RJdGVtPiBtX2xpc3Q7CiB9Owog
Ci19OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBIVE1MX0Zv
cm1EYXRhTGlzdF9oCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oCShyZXZp
c2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEhUTUxCbG9ja3F1b3RlRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3Mg
SFRNTEJsb2NrcXVvdGVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBIVE1MQmxvY2txdW90ZUVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB+SFRNTEJsb2NrcXVvdGVF
bGVtZW50KCk7CkBAIC00MSw1ICs0MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENpdGUoY29u
c3QgU3RyaW5nJik7CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIVE1MQmxvY2txdW90ZUVsZW1lbnRfSApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxEaXZFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXZF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxEaXZFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17
CitjbGFzcyBIVE1MRGl2RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAg
ICAgSFRNTERpdkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB+SFRNTERpdkVsZW1lbnQoKTsKLSAg
ICAKKwogICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIFRhZ1N0YXR1c1JlcXVpcmVkOyB9CiAgICAgdmlydHVhbCBpbnQgdGFnUHJpb3Jp
dHkoKSBjb25zdCB7IHJldHVybiA1OyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
CiAKQEAgLTQ0LDUgKzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3Ry
aW5nJik7CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBIVE1MRGl2RWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMjEgKzI2LDE3IEBACiAjaWZuZGVmIEhUTUxfSFRNTEZvcm1F
bGVtZW50SW1wbF9ICiAjZGVmaW5lIEhUTUxfSFRNTEZvcm1FbGVtZW50SW1wbF9ICiAKLSNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiIAotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRm9ybURhdGE7Ci19OworI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNz
IEhUTUxGb3JtQ29sbGVjdGlvbjsKIAotY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVibGljIEhU
TUxFbGVtZW50Ci17CitjbGFzcyBIVE1MRm9ybUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgogICAgIEhUTUxGb3JtRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwg
fkhUTUxGb3JtRWxlbWVudCgpOwpAQCAtNjQsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGF1dG9Db21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b2NvbXBsZXRlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudCop
OwogICAgIHZvaWQgcmVtb3ZlRm9ybUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudCopOwpA
QCAtODEsMTAgKzc3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlQWNyb3NzUmVt
b3ZlKGJvb2wgYikgeyBtX3ByZXNlcnZlQWNyb3NzUmVtb3ZlID0gYjsgfQogICAgIGJvb2wgcHJl
c2VydmVBY3Jvc3NSZW1vdmUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlQWNyb3NzUmVtb3Zl
OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlICphdHRyKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7
CiAgICAgCiAgICAgdm9pZCBzdWJtaXRDbGljaygpOwotICAgIGJvb2wgZm9ybVdvdWxkSGF2ZVNl
Y3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nICZ1cmwpOworICAgIGJvb2wgZm9ybVdvdWxkSGF2
ZVNlY3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdDsKICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CkBAIC0xMzAsNiArMTI2
LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgb2xkTmFtZUF0dHI7CiB9OwogCi19IC8vbmFtZXNw
YWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEhUTUxfSFRN
TEZvcm1FbGVtZW50SW1wbF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4
KQorKysgV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OCArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxIUkVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxIUkVsZW1lbnQgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxIUkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB+
SFRNTEhSRWxlbWVudCgpOwpAQCAtNTMsNSArNTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
aWR0aChjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxIUkVsZW1lbnRfSApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MSGVhZGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEhlYWRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICAq
CiAgKi8KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmbmRlZiBIVE1MSGVhZGluZ0VsZW1lbnRf
SAogI2RlZmluZSBIVE1MSGVhZGluZ0VsZW1lbnRfSAogCkBAIC0yOSw4ICsyOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTEhlYWRpbmdFbGVtZW50IDogcHVibGljIEhU
TUxFbGVtZW50Ci17CitjbGFzcyBIVE1MSGVhZGluZ0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgogICAgIEhUTUxIZWFkaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIApAQCAtNDIsNSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
bGlnbihjb25zdCBTdHJpbmcmKTsKIH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhUTUxIZWFkaW5nRWxlbWVudF9ICkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxNYXJxdWVlRWxlbWVudCA6IHB1
YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3MgSFRNTE1hcnF1ZWVFbGVtZW50IDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1MTWFycXVlZUVsZW1lbnQoRG9jdW1lbnQqKTsK
ICAgICAKQEAgLTQ1LDUgKzQ0LDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9taW5pbXVtRGVsYXk7
CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBIVE1MTWFycXVlZUVsZW1lbnRfSApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQ
YXJhZ3JhcGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBIVE1MUGFyYWdyYXBoRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxl
bWVudAoteworY2xhc3MgSFRNTFBhcmFncmFwaEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgogICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50KERvY3VtZW50Kik7CiAKQEAgLTQ0
LDUgKzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CiB9
OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBIVE1MUGFyYWdyYXBoRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2Ns
YXNzIEhUTUxQbHVnSW5FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBIVE1MUGx1Z0luRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCopOwotICAgIEhUTUxQbHVnSW5FbGVtZW50Ojp+SFRNTFBsdWdJbkVsZW1lbnQoKTsKKyAgICB+
SFRNTFBsdWdJbkVsZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CkBAIC04MCw2ICs3OSw2IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fZnJh
bWVOYW1lOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBIVE1MUGx1Z0luRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaAkocmV2aXNp
b24gMTU2NDgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOCArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQ
cmVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MUHJlRWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFByZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTQxLDEwICs0MCwxMSBAQCBwdWJsaWM6
CiAKICAgICBpbnQgd2lkdGgoKSBjb25zdDsKICAgICB2b2lkIHNldFdpZHRoKGludCB3KTsKLSAg
ICAKKwogICAgIGJvb2wgd3JhcCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V3JhcChib29sIGIpOwog
fTsKIAotfTsgLy9uYW1lc3BhY2UKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gSFRNTFByZUVsZW1lbnRfSApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCShyZXZpc2lv
biAxNTY0OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0OSw3ICsyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgRGlzY2FyZExGID0gMSA8
PCAyMCwgLy8gRklYTUU6IHNob3VsZCBjbGFyaWZ5IGRpZmZlcmVuY2UgYmV0d2VlbiBza2lwIGFu
ZCBkaXNjYXJkCiAgICAgICAgICAgICBBbGxvd1lpZWxkID0gMSA8PCAyMSwKICAgICAgICAgICAg
IExvYWRpbmdFeHRTY3JpcHQgPSAxIDw8IDIyLAotICAgICAgICAgICAgRm9yY2VTeW5jaHJvbm91
cyA9IDEgPDwgMjMsCisgICAgICAgICAgICBGb3JjZVN5bmNocm9ub3VzID0gMSA8PCAyMwogICAg
ICAgICB9OwogICAgIAogICAgICAgICB2b2lkIHNldEJpdChTdGF0ZUJpdHMgYml0LCBib29sIHZh
bHVlKSAKSW5kZXg6IFdlYkNvcmUvaWNvbi9JY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUvaWNvbi9JY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNSArMjIsMTYg
QEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLQogI2lu
Y2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3N0
YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKIApAQCAt
NzcxLDQgKzc3Miw0IEBAIEljb25EYXRhYmFzZTo6fkljb25EYXRhYmFzZSgpCiAgICAgbV9kYi5j
bG9zZSgpOwogfQogCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaWNvbi9TUUxTdGF0
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaWNvbi9TUUxTdGF0ZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvaWNvbi9TUUxTdGF0ZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTUUxEYXRhYmFzZS5oIgogCi0jaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNTIsNSArMzUzLDQgQEAgYm9v
bCBTUUxTdGF0ZW1lbnQ6OnJldHVybkRvdWJsZVJlc3VsdHMoaQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLX07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtDYW52YXNGaWx0ZXJRdWFydHo7CiAKIC8v
IEVudW1lcmF0aW9ucwotdHlwZWRlZiBlbnVtCi17Cit0eXBlZGVmIGVudW0gewogICAgIEZFX0RJ
U1RBTlRfTElHSFQgPSAwLAogICAgIEZFX1BPSU5UX0xJR0hUID0gMSwKICAgICBGRV9TUE9UX0xJ
R0hUID0gMiwKQEAgLTY0LDggKzYzLDE5IEBAIHR5cGVkZWYgZW51bQogCiBjbGFzcyBLQ2FudmFz
UG9pbnQzRiB7CiBwdWJsaWM6Ci0gICAgS0NhbnZhc1BvaW50M0YoKSA6IG1feCgwKSwgbV95KDAp
LCBtX3ooMCkgeyB9Ci0gICAgS0NhbnZhc1BvaW50M0YoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikgOiBtX3goeCksIG1feSh5KSwgbV96KHopIHsgfQorICAgIEtDYW52YXNQb2ludDNGKCkKKyAg
ICAgICAgOiBtX3goMCkKKyAgICAgICAgLCBtX3koMCkKKyAgICAgICAgLCBtX3ooMCkKKyAgICB7
CisgICAgfQorCisgICAgS0NhbnZhc1BvaW50M0YoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikK
KyAgICAgICAgOiBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICAgICAgLCBtX3ooeikKKyAg
ICB7CisgICAgfQogICAgIAogICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KICAg
ICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CkBAIC04NywxMSArOTcsMTAgQEAgcHJp
dmF0ZToKIGNsYXNzIEtDYW52YXNGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNl
OwogCi1jbGFzcyBLQ2FudmFzRmlsdGVyIDogcHVibGljIEtDYW52YXNSZXNvdXJjZQoteworY2xh
c3MgS0NhbnZhc0ZpbHRlciA6IHB1YmxpYyBLQ2FudmFzUmVzb3VyY2UgewogcHVibGljOgotICAg
IEtDYW52YXNGaWx0ZXIoKSB7IH07Ci0gICAgdmlydHVhbCB+S0NhbnZhc0ZpbHRlcigpIHsgfTsK
KyAgICBLQ2FudmFzRmlsdGVyKCkgeyB9CisgICAgdmlydHVhbCB+S0NhbnZhc0ZpbHRlcigpIHsg
fQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICAKQEAgLTEyMywxMiArMTMyLDExIEBAIHByb3RlY3RlZDoKIAogS0NhbnZhc0ZpbHRl
ciAqZ2V0RmlsdGVyQnlJZChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAm
aWQpOwogCi1jbGFzcyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRmlsdGVy
RWZmZWN0IHsKIHB1YmxpYzoKICAgICAvLyB0aGlzIGRlZmF1bHQgY29uc3RydWN0b3IgaXMgb25s
eSBuZWVkZWQgZm9yIGdjYyAzLjMKICAgICBLQ2FudmFzRmlsdGVyRWZmZWN0KCkgeyB9Ci0gICAg
dmlydHVhbCB+S0NhbnZhc0ZpbHRlckVmZmVjdCgpIHsgfTsKKyAgICB2aXJ0dWFsIH5LQ2FudmFz
RmlsdGVyRWZmZWN0KCkgeyB9CiAKICAgICB2aXJ0dWFsIEtDRmlsdGVyRWZmZWN0VHlwZSBlZmZl
Y3RUeXBlKCkgY29uc3QgeyByZXR1cm4gRkVfVFVSQlVMRU5DRTsgfQogCkBAIC0xNjMsOCArMTcx
LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBCTV9MSUdIVEVOID0gNAogfSBLQ0JsZW5kTW9kZVR5
cGU7CiAKLWNsYXNzIEtDYW52YXNGRUJsZW5kIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QK
LXsKK2NsYXNzIEtDYW52YXNGRUJsZW5kIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3Qgewog
cHVibGljOgogICAgIERlcHJlY2F0ZWRTdHJpbmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjI7
IH0KICAgICB2b2lkIHNldEluMihjb25zdCBEZXByZWNhdGVkU3RyaW5nICZpbjIpIHsgbV9pbjIg
PSBpbjI7IH0KQEAgLTE4Niw4ICsxOTMsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIENNVF9MVU1J
TkFOQ0VfVE9fQUxQSEEgPSAzCiB9IEtDQ29sb3JNYXRyaXhUeXBlOwogCi1jbGFzcyBLQ2FudmFz
RkVDb2xvck1hdHJpeCA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2Fu
dmFzRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoK
ICAgICBLQ0NvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBzZXRUeXBlKEtDQ29sb3JNYXRyaXhUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsg
fQpAQCAtMjEwLDkgKzIxNiwxMiBAQCB0eXBlZGVmIGVudW0gewogICAgIENUX0dBTU1BID0gNAog
fSBLQ0NvbXBvbmVudFRyYW5zZmVyVHlwZTsKIAotc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbgotewotICAgIEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbigpIDogdHlwZShDVF9J
REVOVElUWSkge30KK3N0cnVjdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24geworICAgIEtD
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbigpCisgICAgICAgIDogdHlwZShDVF9JREVOVElUWSkK
KyAgICB7CisgICAgfQorCiAgICAgS0NDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZTsKICAgICBW
ZWN0b3I8ZmxvYXQ+IHRhYmxlVmFsdWVzOwogICAgIGZsb2F0IHNsb3BlOwpAQCAtMjIyLDggKzIz
MSw3IEBAIHN0cnVjdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24KICAgICBmbG9hdCBvZmZz
ZXQ7CiB9OwogCi1jbGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlciA6IHB1YmxpYyBLQ2Fu
dmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlciA6IHB1
YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgCiAgICAgS0NDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHJlZEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRGdW5jOyB9
CiAgICAgdm9pZCBzZXRSZWRGdW5jdGlvbihjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIGZ1bmMpIHsgbV9yZWRGdW5jID0gZnVuYzsgfQpAQCAtMjUyLDExICsyNjAsMTAgQEAgdHlw
ZWRlZiBlbnVtIHsKICAgICBDT19PVVQgPSAyLAogICAgIENPX0FUT1AgPSAzLAogICAgIENPX1hP
UiA9IDQsCi0gICAgQ09fQVJJVEhNRVRJQyA9IDUsCisgICAgQ09fQVJJVEhNRVRJQyA9IDUKIH0g
S0NDb21wb3NpdGVPcGVyYXRpb25UeXBlOwogCi1jbGFzcyBLQ2FudmFzRkVDb21wb3NpdGUgOiBw
dWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdAoteworY2xhc3MgS0NhbnZhc0ZFQ29tcG9zaXRlIDog
cHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIERlcHJlY2F0ZWRTdHJp
bmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjI7IH0KICAgICB2b2lkIHNldEluMihjb25zdCBE
ZXByZWNhdGVkU3RyaW5nICZpbjIpIHsgbV9pbjIgPSBpbjI7IH0KQEAgLTI5MCwxMCArMjk3LDkg
QEAgdHlwZWRlZiBlbnVtIHsKICAgICBFTV9OT05FID0gMgogfSBLQ0VkZ2VNb2RlVHlwZTsKIAot
Y2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVj
dAoteworY2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgS0NhbnZhc0ZpbHRl
ckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXgoKSB7IH07Cisg
ICAgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXgoKSB7IH0KIAogICAgIEZsb2F0U2l6ZSBrZXJuZWxT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxTaXplOyB9CiAgICAgdm9pZCBzZXRLZXJuZWxT
aXplKEZsb2F0U2l6ZSBrZXJuZWxTaXplKSB7IG1fa2VybmVsU2l6ZSA9IGtlcm5lbFNpemU7IH0K
QEAgLTMzOSwxMCArMzQ1LDEyIEBAIHR5cGVkZWYgZW51bXsKIH0gS0NMaWdodFR5cGU7CiAKIC8v
VGhlIGxpZ2h0IHNvdXJjZSBmb3IgRGlmZnVzZS9TcGVjdWxhckxpZ2h0aW5nCi1jbGFzcyBLQ0xp
Z2h0U291cmNlCi17CitjbGFzcyBLQ0xpZ2h0U291cmNlIHsKIHB1YmxpYzoKLSAgICBLQ0xpZ2h0
U291cmNlKEtDTGlnaHRUeXBlIGFfdHlwZSkgOiBtX3R5cGUoYV90eXBlKSB7IH0KKyAgICBLQ0xp
Z2h0U291cmNlKEtDTGlnaHRUeXBlIGFfdHlwZSkKKyAgICAgICAgOiBtX3R5cGUoYV90eXBlKQor
ICAgIHsKKyAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+S0NMaWdodFNvdXJjZSgpIHsgfQogICAg
IApAQCAtMzU0LDExICszNjIsMTQgQEAgcHJpdmF0ZToKICAgICBLQ0xpZ2h0VHlwZSBtX3R5cGU7
CiB9OwogCi1jbGFzcyBLQ0Rpc3RhbnRMaWdodFNvdXJjZSA6IHB1YmxpYyBLQ0xpZ2h0U291cmNl
Ci17CitjbGFzcyBLQ0Rpc3RhbnRMaWdodFNvdXJjZSA6IHB1YmxpYyBLQ0xpZ2h0U291cmNlIHsK
IHB1YmxpYzoKLSAgICBLQ0Rpc3RhbnRMaWdodFNvdXJjZShmbG9hdCBhemltdXRoLCBmbG9hdCBl
bGV2YXRpb24pIDoKLSAgICAgICAgS0NMaWdodFNvdXJjZShMU19ESVNUQU5UKSwgbV9hemltdXRo
KGF6aW11dGgpLCBtX2VsZXZhdGlvbihlbGV2YXRpb24pIHsgfQorICAgIEtDRGlzdGFudExpZ2h0
U291cmNlKGZsb2F0IGF6aW11dGgsIGZsb2F0IGVsZXZhdGlvbikKKyAgICAgICAgOiBLQ0xpZ2h0
U291cmNlKExTX0RJU1RBTlQpCisgICAgICAgICwgbV9hemltdXRoKGF6aW11dGgpCisgICAgICAg
ICwgbV9lbGV2YXRpb24oZWxldmF0aW9uKQorICAgIHsKKyAgICB9CiAgICAgCiAgICAgZmxvYXQg
YXppbXV0aCgpIGNvbnN0eyByZXR1cm4gbV9hemltdXRoOyB9CiAgICAgZmxvYXQgZWxldmF0aW9u
KCkgY29uc3R7IHJldHVybiBtX2VsZXZhdGlvbjsgfQpAQCAtMzcwLDMyICszODEsNDAgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBtX2VsZXZhdGlvbjsKIH07CiAKLWNsYXNzIEtDUG9pbnRMaWdodFNv
dXJjZSA6IHB1YmxpYyBLQ0xpZ2h0U291cmNlCi17CitjbGFzcyBLQ1BvaW50TGlnaHRTb3VyY2Ug
OiBwdWJsaWMgS0NMaWdodFNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgS0NQb2ludExpZ2h0U291cmNl
KEtDYW52YXNQb2ludDNGJiBwb3NpdGlvbikgOiBLQ0xpZ2h0U291cmNlKExTX1BPSU5UKSwgbV9w
b3NpdGlvbihwb3NpdGlvbikgeyB9CisgICAgS0NQb2ludExpZ2h0U291cmNlKEtDYW52YXNQb2lu
dDNGJiBwb3NpdGlvbikKKyAgICAgICAgOiBLQ0xpZ2h0U291cmNlKExTX1BPSU5UKQorICAgICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgeworICAgIH0KICAgICAKICAgICBjb25zdCBL
Q2FudmFzUG9pbnQzRiYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtICZleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0gJikgY29uc3Q7CisgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBLQ2FudmFzUG9pbnQz
RiBtX3Bvc2l0aW9uOwogfTsKIAotY2xhc3MgS0NTcG90TGlnaHRTb3VyY2UgOiBwdWJsaWMgS0NM
aWdodFNvdXJjZQoteworY2xhc3MgS0NTcG90TGlnaHRTb3VyY2UgOiBwdWJsaWMgS0NMaWdodFNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgS0NTcG90TGlnaHRTb3VyY2UoS0NhbnZhc1BvaW50M0YmIHBv
c2l0aW9uLCBLQ2FudmFzUG9pbnQzRiYgZGlyZWN0aW9uLCAKLSAgICAgICAgZmxvYXQgc3BlY3Vs
YXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpIDogS0NMaWdodFNvdXJjZShMU19T
UE9UKSwgCi0gICAgICAgIG1fcG9zaXRpb24ocG9zaXRpb24pLCBtX2RpcmVjdGlvbihkaXJlY3Rp
b24pLCBtX3NwZWN1bGFyRXhwb25lbnQoc3BlY3VsYXJFeHBvbmVudCksIG1fbGltaXRpbmdDb25l
QW5nbGUobGltaXRpbmdDb25lQW5nbGUpIHsgfQorICAgIEtDU3BvdExpZ2h0U291cmNlKEtDYW52
YXNQb2ludDNGJiBwb3NpdGlvbiwgS0NhbnZhc1BvaW50M0YmIGRpcmVjdGlvbixmbG9hdCBzcGVj
dWxhckV4cG9uZW50LCBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkgCisgICAgICAgIDogS0NMaWdo
dFNvdXJjZShMU19TUE9UKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAg
ICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICAgICAsIG1fc3BlY3VsYXJFeHBvbmVudChz
cGVjdWxhckV4cG9uZW50KQorICAgICAgICAsIG1fbGltaXRpbmdDb25lQW5nbGUobGltaXRpbmdD
b25lQW5nbGUpCisgICAgeworICAgIH0KICAgICAKICAgICBjb25zdCBLQ2FudmFzUG9pbnQzRiYg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgY29uc3QgS0NhbnZh
c1BvaW50M0YmIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CiAgICAg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVu
dDsgfQogICAgIGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9saW1p
dGluZ0NvbmVBbmdsZTsgfQogICAgIAotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSAmZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtICYpIGNvbnN0OworICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgS0NhbnZhc1BvaW50M0YgbV9wb3NpdGlvbjsKICAgICBLQ2FudmFzUG9pbnQzRiBtX2Rp
cmVjdGlvbjsKQEAgLTQwMywxMCArNDIyLDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgICAgICAg
ICAgbV9saW1pdGluZ0NvbmVBbmdsZTsKIH07CiAKLWNsYXNzIEtDYW52YXNGRURpZmZ1c2VMaWdo
dGluZyA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVEaWZm
dXNlTGlnaHRpbmcgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAg
S0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nKCkgOiBtX2xpZ2h0U291cmNlKDApIHsgfQorICAgIEtD
YW52YXNGRURpZmZ1c2VMaWdodGluZygpCisgICAgICAgIDogbV9saWdodFNvdXJjZSgwKQorICAg
IHsKKyAgICB9CiAgICAgfktDYW52YXNGRURpZmZ1c2VMaWdodGluZygpIHsgZGVsZXRlIG1fbGln
aHRTb3VyY2U7IH0KIAogICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2xpZ2h0aW5nQ29sb3I7IH0KQEAgLTQ0NSwxMCArNDY2LDE0IEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgQ1NfQUxQSEEgPSAzCiB9IEtDQ2hhbm5lbFNlbGVjdG9yVHlwZTsKIAotY2xhc3MgS0NhbnZh
c0ZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNz
IEtDYW52YXNGRURpc3BsYWNlbWVudE1hcCA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsK
IHB1YmxpYzoKLSAgICBLQ2FudmFzRkVEaXNwbGFjZW1lbnRNYXAoKSA6IG1feENoYW5uZWxTZWxl
Y3RvcihDU19SRUQpLCBtX3lDaGFubmVsU2VsZWN0b3IoQ1NfUkVEKSwgbV9zY2FsZSgwKSB7fQor
ICAgIEtDYW52YXNGRURpc3BsYWNlbWVudE1hcCgpCisgICAgICAgIDogbV94Q2hhbm5lbFNlbGVj
dG9yKENTX1JFRCkKKyAgICAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoQ1NfUkVEKQorICAgICAg
ICAsIG1fc2NhbGUoMCkKKyAgICB7CisgICAgfQogICAgIAogICAgIERlcHJlY2F0ZWRTdHJpbmcg
aW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjI7IH0KICAgICB2b2lkIHNldEluMihjb25zdCBEZXBy
ZWNhdGVkU3RyaW5nICZpbjIpIHsgbV9pbjIgPSBpbjI7IH0KQEAgLTQ3MSw4ICs0OTYsNyBAQCBw
cml2YXRlOgogICAgIGZsb2F0IG1fc2NhbGU7CiB9OwogCi1jbGFzcyBLQ2FudmFzRkVGbG9vZCA6
IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVGbG9vZCA6IHB1
YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBDb2xvciBmbG9vZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9mbG9vZENvbG9yOyB9CiAgICAgdm9pZCBzZXRGbG9vZENvbG9y
KGNvbnN0IENvbG9yICZjb2xvcikgeyBtX2Zsb29kQ29sb3IgPSBjb2xvcjsgfQpAQCAtNDg3LDgg
KzUxMSw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7CiB9OwogCi1jbGFz
cyBLQ2FudmFzRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdAotewor
Y2xhc3MgS0NhbnZhc0ZFR2F1c3NpYW5CbHVyIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3Qg
ewogcHVibGljOgogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdDsKICAgICB2b2lkIHNl
dFN0ZERldmlhdGlvblgoZmxvYXQgeCk7CkBAIC01MDMsMTAgKzUyNiwxMyBAQCBwcml2YXRlOgog
ICAgIGZsb2F0IG1feTsKIH07CiAKLWNsYXNzIEtDYW52YXNGRUltYWdlIDogcHVibGljIEtDYW52
YXNGaWx0ZXJFZmZlY3QsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudAoteworY2xhc3MgS0Nh
bnZhc0ZFSW1hZ2UgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCwgcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBLQ2FudmFzRkVJbWFnZSgpOiBtX2NhY2hlZElt
YWdlKDApIHsgfQorICAgIEtDYW52YXNGRUltYWdlKCkKKyAgICAgICAgOiBtX2NhY2hlZEltYWdl
KDApCisgICAgeworICAgIH0KKwogICAgIHZpcnR1YWwgfktDYW52YXNGRUltYWdlKCk7CiAgICAg
CiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2UgbmVlZCB0byBzdXBwb3J0IDxzdmc+IChSZW5k
ZXJPYmplY3QgKikgYXMgd2VsbCBhcyBpbWFnZSBkYXRhLgpAQCAtNTIwLDggKzU0Niw3IEBAIHBy
aXZhdGU6CiAgICAgQ2FjaGVkSW1hZ2UqIG1fY2FjaGVkSW1hZ2U7CiB9OwogCi1jbGFzcyBLQ2Fu
dmFzRkVNZXJnZSA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFz
RkVNZXJnZSA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBEZXBy
ZWNhdGVkU3RyaW5nTGlzdCBtZXJnZUlucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVyZ2VJbnB1
dHM7IH0KICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmdMaXN0
ICZtZXJnZUlucHV0cykgeyBtX21lcmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7IH0KQEAgLTUzNyw4
ICs1NjIsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIE1PX0RJQUxBVEUgPSAxCiB9IEtDTW9ycGhv
bG9neU9wZXJhdG9yVHlwZTsKIAotY2xhc3MgS0NhbnZhc0ZFTW9ycGhvbG9neSA6IHB1YmxpYyBL
Q2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVNb3JwaG9sb2d5IDogcHVibGlj
IEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIEtDTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdG9yOyB9CiAg
ICAgdm9pZCBzZXRNb3JwaG9sb2d5T3BlcmF0b3IoS0NNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIF9v
cGVyYXRvcikgeyBtX29wZXJhdG9yID0gX29wZXJhdG9yOyB9CkBAIC01NTcsOCArNTgxLDcgQEAg
cHJpdmF0ZToKICAgICBmbG9hdCBtX3JhZGl1c1k7CiB9OwogCi1jbGFzcyBLQ2FudmFzRkVPZmZz
ZXQgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdAoteworY2xhc3MgS0NhbnZhc0ZFT2Zmc2V0
IDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIGZsb2F0IGR4KCkg
Y29uc3QgeyByZXR1cm4gbV9keDsgfQogICAgIHZvaWQgc2V0RHgoZmxvYXQgZHgpIHsgbV9keCA9
IGR4OyB9CkBAIC01NzMsMTAgKzU5NiwxMiBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZHk7CiB9
OwogCi1jbGFzcyBLQ2FudmFzRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEtDYW52YXNGaWx0
ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgS0Nh
bnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgS0NhbnZhc0ZFU3BlY3VsYXJMaWdodGlu
ZygpIDogbV9saWdodFNvdXJjZSgwKSB7IH0KKyAgICBLQ2FudmFzRkVTcGVjdWxhckxpZ2h0aW5n
KCkKKyAgICAgICAgOiBtX2xpZ2h0U291cmNlKDApCisgICAgeworICAgIH0KICAgICB+S0NhbnZh
c0ZFU3BlY3VsYXJMaWdodGluZygpIHsgZGVsZXRlIG1fbGlnaHRTb3VyY2U7IH0KIAogICAgIENv
bG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2xpZ2h0aW5nQ29sb3I7IH0KQEAg
LTYxOSw4ICs2NDQsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIFRUX05PSVNFID0gMQogfSBLQ1R1
cmJ1bGFuY2VUeXBlOwogCi1jbGFzcyBLQ2FudmFzRkVUdXJidWxlbmNlIDogcHVibGljIEtDYW52
YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRVR1cmJ1bGVuY2UgOiBwdWJsaWMgS0Nh
bnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgS0NUdXJidWxhbmNlVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBzZXRUeXBlKEtDVHVyYnVsYW5jZVR5
cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CkBAIC02NTEsOCArNjc1LDggQEAgcHJpdmF0ZToK
ICAgICBLQ1R1cmJ1bGFuY2VUeXBlIG1fdHlwZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKLSNlbmRpZgorI2VuZGlmIC8vIEtDYW52
YXNGaWx0ZXJzX0gKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwxMyArMjQsMTQgQEAKICNkZWZpbmUgS0NhbnZhc19SZW5kZXJTVkdJbWFnZV9ICiAjaWYg
U1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1uYW1lc3BhY2UgV2ViQ29yZQotewogICAgIGNsYXNzIFNWR0ltYWdlRWxlbWVudDsK
ICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOworCiAgICAgY2xhc3MgUmVuZGVyU1ZH
SW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1hZ2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVuZGVy
U1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50ICppbXBsKTsKQEAgLTUzLDcgKzU0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWlu
dFJlY3QoSW50UmVjdCYgciwgYm9vbCBmKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgUmVuZGVy
U1ZHSW1hZ2U6Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBpbnQgX3gsIGludCBfeSwgaW50
IF90eCwgaW50IF90eSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKTsKKyAgICAgICAgdmly
dHVhbCBib29sIG5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBpbnQgX3gsIGludCBfeSwgaW50
IF90eCwgaW50IF90eSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlRm9yQXR0cmlidXRlcygpOwpAQCAtNjEsOSArNjIs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNm
b3JtOwogICAgICAgICBJbnRSZWN0IG1fYWJzb2x1dGVCb3VuZHM7CiAgICAgfTsKLX0KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2Vu
ZGlmIC8vIEtDYW52YXNfUmVuZGVyU1ZHSW1hZ2VfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0Rl
dmljZVF1YXJ0ei5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCAr
NDEsNyBAQCBjbGFzcyBOU0dyYXBoaWNzQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dAoteworY2xhc3MgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHogOiBw
dWJsaWMgS1JlbmRlcmluZ0RldmljZUNvbnRleHQgewogcHVibGljOgogICAgIEtSZW5kZXJpbmdE
ZXZpY2VDb250ZXh0UXVhcnR6KENHQ29udGV4dFJlZiBjb250ZXh0KTsKICAgICB2aXJ0dWFsIH5L
UmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eigpOwpAQCAtNjYsOCArNjUsNyBAQCBwcml2YXRl
OgogICAgIE5TR3JhcGhpY3NDb250ZXh0ICptX25zR3JhcGhpY3NDb250ZXh0OwogfTsKIAotY2xh
c3MgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVyaW5nRGV2aWNlCi17Citj
bGFzcyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6IDogcHVibGljIEtSZW5kZXJpbmdEZXZpY2Ugewog
cHVibGljOgogICAgIEtSZW5kZXJpbmdEZXZpY2VRdWFydHooKSB7IH0KICAgICB2aXJ0dWFsIH5L
UmVuZGVyaW5nRGV2aWNlUXVhcnR6KCkgeyB9CkBAIC05NiwxMSArOTQsMTEgQEAgcHVibGljOgog
ICAgIC8vIGZpbHRlcnMgKG1vc3RseSBkZWJ1Z2dpbmcpCiAgICAgc3RhdGljIGJvb2wgZmlsdGVy
c0VuYWJsZWQoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGaWx0ZXJzRW5hYmxlZChib29sIGVuYWJs
ZWQpOwotICAgIHN0YXRpYyBib29sIEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6OmhhcmR3YXJlUmVu
ZGVyaW5nRW5hYmxlZCgpOwotICAgIHN0YXRpYyB2b2lkIEtSZW5kZXJpbmdEZXZpY2VRdWFydHo6
OnNldEhhcmR3YXJlUmVuZGVyaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIHN0YXRpYyBi
b29sIGhhcmR3YXJlUmVuZGVyaW5nRW5hYmxlZCgpOworICAgIHN0YXRpYyB2b2lkIHNldEhhcmR3
YXJlUmVuZGVyaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOwogfTsKIAotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtS
ZW5kZXJpbmdEZXZpY2VRdWFydHpfSApJbmRleDogV2ViQ29yZS9rc3ZnMi9rc3ZnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9rc3ZnLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9rc3ZnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMyICsyNywyOCBAQAogLyoqCiAg
KiBAc2hvcnQgR2VuZXJhbCBuYW1lc3BhY2Ugc3BlY2lmaWMgZGVmaW5pdGlvbnMuCiAgKi8KLW5h
bWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLyoqCiAgICAgICog
QWxsIFNWRyBjb25zdGFudHMKICAgICAgKi8KLSAgICBlbnVtIFNWR0V4Y2VwdGlvbkNvZGUKLSAg
ICB7Ci0gICAgICAgIFNWR19XUk9OR19UWVBFX0VSUiAgICAgICAgICAgID0gMSwKKyAgICBlbnVt
IFNWR0V4Y2VwdGlvbkNvZGUgeworICAgICAgICBTVkdfV1JPTkdfVFlQRV9FUlIgICAgICAgICAg
ID0gMSwKICAgICAgICAgU1ZHX0lOVkFMSURfVkFMVUVfRVJSICAgICAgICA9IDIsCiAgICAgICAg
IFNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEUgICAgPSAzCiAgICAgfTsKICAgICAKLSAgICBlbnVt
IFNWR1VuaXRUeXBlcwotICAgIHsKLSAgICAgICAgU1ZHX1VOSVRfVFlQRV9VTktOT1dOICAgICAg
ICAgICAgICAgID0gMCwKKyAgICBlbnVtIFNWR1VuaXRUeXBlcyB7CisgICAgICAgIFNWR19VTklU
X1RZUEVfVU5LTk9XTiAgICAgICAgICAgICAgID0gMCwKICAgICAgICAgU1ZHX1VOSVRfVFlQRV9V
U0VSU1BBQ0VPTlVTRSAgICAgICAgPSAxLAotICAgICAgICBTVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YICAgICAgICA9IDIKKyAgICAgICAgU1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCAgICAgPSAyCiAgICAgfTsKIAotICAgIGVudW0gU1ZHUmVuZGVyaW5nSW50ZW50VHlwZQot
ICAgIHsKLSAgICAgICAgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOICAgICAgICAgICAgICAgID0g
MCwKLSAgICAgICAgUkVOREVSSU5HX0lOVEVOVF9BVVRPICAgICAgICAgICAgICAgICAgICA9IDEs
Ci0gICAgICAgIFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTCAgICAgICAgICAgICAgICA9IDIs
CisgICAgZW51bSBTVkdSZW5kZXJpbmdJbnRlbnRUeXBlIHsKKyAgICAgICAgUkVOREVSSU5HX0lO
VEVOVF9VTktOT1dOICAgICAgICAgICAgICAgICAgPSAwLAorICAgICAgICBSRU5ERVJJTkdfSU5U
RU5UX0FVVE8gICAgICAgICAgICAgICAgICAgICA9IDEsCisgICAgICAgIFJFTkRFUklOR19JTlRF
TlRfUEVSQ0VQVFVBTCAgICAgICAgICAgICAgID0gMiwKICAgICAgICAgUkVOREVSSU5HX0lOVEVO
VF9SRUxBVElWRV9DT0xPUklNRVRSSUMgICAgPSAzLAotICAgICAgICBSRU5ERVJJTkdfSU5URU5U
X1NBVFVSQVRJT04gICAgICAgICAgICAgICAgPSA0LAorICAgICAgICBSRU5ERVJJTkdfSU5URU5U
X1NBVFVSQVRJT04gICAgICAgICAgICAgICA9IDQsCiAgICAgICAgIFJFTkRFUklOR19JTlRFTlRf
QUJTT0xVVEVfQ09MT1JJTUVUUklDICAgID0gNQogICAgIH07CiAgICAgCkBAIC02NiwxNCArNjIs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHX1RSQU5TRk9STV9TS0VXWSAgICAg
ICAgICAgICA9IDYKICAgICB9OwogCi0gICAgZW51bSBTVkdDU1NSdWxlVHlwZQotICAgIHsKKyAg
ICBlbnVtIFNWR0NTU1J1bGVUeXBlIHsKICAgICAgICAgQ09MT1JfUFJPRklMRV9SVUxFID0gNwog
ICAgIH07CiAKLSAgICBlbnVtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlCi0gICAgewotICAg
ICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOICAgICAgICA9IDAsCisgICAgZW51
bSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVHlwZSB7CisgICAgICAgIFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1VOS05PV04gICAgID0gMCwKICAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
Tk9ORSAgICAgICAgPSAxLAogICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1J
TiAgICA9IDIsCiAgICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOICAgID0g
MywKQEAgLTg2LDYwICs4MCw1NCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWCAgICA9IDEwCiAgICAgfTsKIAotICAgIGVudW0gU1ZH
TWVldE9yU2xpY2VUeXBlCi0gICAgeworICAgIGVudW0gU1ZHTWVldE9yU2xpY2VUeXBlIHsKICAg
ICAgICAgU1ZHX01FRVRPUlNMSUNFX1VOS05PV04gICAgPSAwLAotICAgICAgICBTVkdfTUVFVE9S
U0xJQ0VfTUVFVCAgICA9IDEsCi0gICAgICAgIFNWR19NRUVUT1JTTElDRV9TTElDRSAgICA9IDIK
KyAgICAgICAgU1ZHX01FRVRPUlNMSUNFX01FRVQgICAgICAgPSAxLAorICAgICAgICBTVkdfTUVF
VE9SU0xJQ0VfU0xJQ0UgICAgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdQYXRoU2VnVHlw
ZQotICAgIHsKLSAgICAgICAgUEFUSFNFR19VTktOT1dOICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMCwKLSAgICAgICAgUEFUSFNFR19DTE9TRVBBVEggICAgICAgICAgICAgICAgICAgICAg
ICA9IDEsCi0gICAgICAgIFBBVEhTRUdfTU9WRVRPX0FCUyAgICAgICAgICAgICAgICAgICAgICAg
ID0gMiwKLSAgICAgICAgUEFUSFNFR19NT1ZFVE9fUkVMICAgICAgICAgICAgICAgICAgICAgICAg
PSAzLAotICAgICAgICBQQVRIU0VHX0xJTkVUT19BQlMgICAgICAgICAgICAgICAgICAgICAgICA9
IDQsCi0gICAgICAgIFBBVEhTRUdfTElORVRPX1JFTCAgICAgICAgICAgICAgICAgICAgICAgID0g
NSwKLSAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUyAgICAgICAgICAgICAgICA9IDYs
Ci0gICAgICAgIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUwgICAgICAgICAgICAgICAgPSA3LAot
ICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUyAgICAgICAgICAgID0gOCwKLSAg
ICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUwgICAgICAgICAgICA9IDksCi0gICAg
ICAgIFBBVEhTRUdfQVJDX0FCUyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwLAotICAg
ICAgICBQQVRIU0VHX0FSQ19SRUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMSwKLSAg
ICAgICAgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlMgICAgICAgICAgICA9IDEyLAotICAg
ICAgICBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTCAgICAgICAgICAgID0gMTMsCi0gICAg
ICAgIFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCUyAgICAgICAgICAgICAgICA9IDE0LAotICAg
ICAgICBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUwgICAgICAgICAgICAgICAgPSAxNSwKKyAg
ICBlbnVtIFNWR1BhdGhTZWdUeXBlIHsKKyAgICAgICAgUEFUSFNFR19VTktOT1dOICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMCwKKyAgICAgICAgUEFUSFNFR19DTE9TRVBBVEggICAgICAgICAg
ICAgICAgICAgICAgID0gMSwKKyAgICAgICAgUEFUSFNFR19NT1ZFVE9fQUJTICAgICAgICAgICAg
ICAgICAgICAgID0gMiwKKyAgICAgICAgUEFUSFNFR19NT1ZFVE9fUkVMICAgICAgICAgICAgICAg
ICAgICAgID0gMywKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fQUJTICAgICAgICAgICAgICAgICAg
ICAgID0gNCwKKyAgICAgICAgUEFUSFNFR19MSU5FVE9fUkVMICAgICAgICAgICAgICAgICAgICAg
ID0gNSwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUyAgICAgICAgICAgICAgID0g
NiwKKyAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTCAgICAgICAgICAgICAgID0gNywK
KyAgICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlMgICAgICAgICAgID0gOCwKKyAg
ICAgICAgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUwgICAgICAgICAgID0gOSwKKyAgICAg
ICAgUEFUSFNFR19BUkNfQUJTICAgICAgICAgICAgICAgICAgICAgICAgID0gMTAsCisgICAgICAg
IFBBVEhTRUdfQVJDX1JFTCAgICAgICAgICAgICAgICAgICAgICAgICA9IDExLAorICAgICAgICBQ
QVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCUyAgICAgICAgICAgPSAxMiwKKyAgICAgICAgUEFU
SFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUwgICAgICAgICAgID0gMTMsCisgICAgICAgIFBBVEhT
RUdfTElORVRPX1ZFUlRJQ0FMX0FCUyAgICAgICAgICAgICA9IDE0LAorICAgICAgICBQQVRIU0VH
X0xJTkVUT19WRVJUSUNBTF9SRUwgICAgICAgICAgICAgPSAxNSwKICAgICAgICAgUEFUSFNFR19D
VVJWRVRPX0NVQklDX1NNT09USF9BQlMgICAgICAgID0gMTYsCiAgICAgICAgIFBBVEhTRUdfQ1VS
VkVUT19DVUJJQ19TTU9PVEhfUkVMICAgICAgICA9IDE3LAogICAgICAgICBQQVRIU0VHX0NVUlZF
VE9fUVVBRFJBVElDX1NNT09USF9BQlMgICAgPSAxOCwKICAgICAgICAgUEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19TTU9PVEhfUkVMICAgID0gMTkKICAgICB9OwogCi0gICAgZW51bSBTVkdMZW5n
dGhBZGp1c3RUeXBlCi0gICAgeworICAgIGVudW0gU1ZHTGVuZ3RoQWRqdXN0VHlwZSB7CiAgICAg
ICAgIExFTkdUSEFESlVTVF9VTktOT1dOICAgICAgICAgICAgPSAwLAogICAgICAgICBMRU5HVEhB
REpVU1RfU1BBQ0lORyAgICAgICAgICAgID0gMSwKLSAgICAgICAgTEVOR1RIQURKVVNUX1NQQUNJ
TkdBTkRHTFlQSFMgICAgPSAyCisgICAgICAgIExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhT
ICAgPSAyCiAgICAgfTsKIAotICAgIGVudW0gU1ZHVGV4dFBhdGhNZXRob2RUeXBlCi0gICAgewor
ICAgIGVudW0gU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHsKICAgICAgICAgVEVYVFBBVEhfTUVUSE9E
VFlQRV9VTktOT1dOICAgID0gMCwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiAg
ICA9IDEsCisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04gICAgICA9IDEsCiAgICAg
ICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSCAgICA9IDIKICAgICB9OwogCi0gICAgZW51
bSBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlCi0gICAgeworICAgIGVudW0gU1ZHVGV4dFBhdGhTcGFj
aW5nVHlwZSB7CiAgICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gICAgPSAwLAot
ICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPICAgICAgICA9IDEsCi0gICAgICAgIFRF
WFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUICAgICAgICA9IDIKKyAgICAgICAgVEVYVFBBVEhfU1BB
Q0lOR1RZUEVfQVVUTyAgICAgICA9IDEsCisgICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VY
QUNUICAgICAgPSAyCiAgICAgfTsKIAotICAgIGVudW0gU1ZHUGFpbnRUeXBlCi0gICAgeworICAg
IGVudW0gU1ZHUGFpbnRUeXBlIHsKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9VTktOT1dOICAgICAg
ICAgICAgICAgPSAwLAogICAgICAgICBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SICAgICAgICAgICAg
ICA9IDEsCiAgICAgICAgIFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgICAgID0gMiwK
QEAgLTE1MiwzNyArMTQwLDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR19QQUlO
VFRZUEVfVVJJICAgICAgICAgICAgICAgICAgID0gMTA3CiAgICAgfTsKIAotICAgIGVudW0gU1ZH
TWFya2VyVW5pdHNUeXBlCi0gICAgewotICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiAg
ICAgICAgICAgID0gMCwKKyAgICBlbnVtIFNWR01hcmtlclVuaXRzVHlwZSB7CisgICAgICAgIFNW
R19NQVJLRVJVTklUU19VTktOT1dOICAgICAgICAgICA9IDAsCiAgICAgICAgIFNWR19NQVJLRVJV
TklUU19VU0VSU1BBQ0VPTlVTRSAgICA9IDEsCi0gICAgICAgIFNWR19NQVJLRVJVTklUU19TVFJP
S0VXSURUSCAgICAgICAgPSAyCisgICAgICAgIFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCAg
ICAgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdNYXJrZXJPcmllbnRUeXBlCi0gICAgewor
ICAgIGVudW0gU1ZHTWFya2VyT3JpZW50VHlwZSB7CiAgICAgICAgIFNWR19NQVJLRVJfT1JJRU5U
X1VOS05PV04gICAgPSAwLAotICAgICAgICBTVkdfTUFSS0VSX09SSUVOVF9BVVRPICAgICAgICA9
IDEsCi0gICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFICAgICAgICA9IDIKKyAgICAgICAg
U1ZHX01BUktFUl9PUklFTlRfQVVUTyAgICAgICA9IDEsCisgICAgICAgIFNWR19NQVJLRVJfT1JJ
RU5UX0FOR0xFICAgICAgPSAyCiAgICAgfTsKIAotICAgIGVudW0gU1ZHR3JhZGllbnRUeXBlCi0g
ICAgeworICAgIGVudW0gU1ZHR3JhZGllbnRUeXBlIHsKICAgICAgICAgU1ZHX1NQUkVBRE1FVEhP
RF9VTktOT1dOID0gMCwKICAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9QQUQgICAgID0gMSwKICAg
ICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUID0gMiwKICAgICAgICAgU1ZHX1NQUkVBRE1F
VEhPRF9SRVBFQVQgID0gMwogICAgIH07CiAKLSAgICBlbnVtIFNWR1pvb21BbmRQYW5UeXBlCi0g
ICAgeworICAgIGVudW0gU1ZHWm9vbUFuZFBhblR5cGUgewogICAgICAgICBTVkdfWk9PTUFORFBB
Tl9VTktOT1dOID0gMCwKICAgICAgICAgU1ZHX1pPT01BTkRQQU5fRElTQUJMRSA9IDEsCiAgICAg
ICAgIFNWR19aT09NQU5EUEFOX01BR05JRlkgPSAyCiAgICAgfTsKIAotICAgIGVudW0gU1ZHQmxl
bmRNb2RlVHlwZQotICAgIHsKKyAgICBlbnVtIFNWR0JsZW5kTW9kZVR5cGUgewogICAgICAgICBT
VkdfRkVCTEVORF9NT0RFX1VOS05PV04gID0gMCwKICAgICAgICAgU1ZHX0ZFQkxFTkRfTU9ERV9O
T1JNQUwgICA9IDEsCiAgICAgICAgIFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyLApAQCAt
MTkxLDggKzE3NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR19GRUJMRU5EX01P
REVfTElHSFRFTiAgPSA1CiAgICAgfTsKIAotICAgIGVudW0gU1ZHQ29sb3JNYXRyaXhUeXBlCi0g
ICAgeworICAgIGVudW0gU1ZHQ29sb3JNYXRyaXhUeXBlIHsKICAgICAgICAgU1ZHX0ZFQ09MT1JN
QVRSSVhfVFlQRV9VTktOT1dOICAgICAgICAgID0gMCwKICAgICAgICAgU1ZHX0ZFQ09MT1JNQVRS
SVhfVFlQRV9NQVRSSVggICAgICAgICAgID0gMSwKICAgICAgICAgU1ZHX0ZFQ09MT1JNQVRSSVhf
VFlQRV9TQVRVUkFURSAgICAgICAgID0gMiwKQEAgLTIwMCw4ICsxODIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEg
PSA0CiAgICAgfTsKIAotICAgIGVudW0gU1ZHQ29tcG9uZW50VHJhbnNmZXJUeXBlCi0gICAgewor
ICAgIGVudW0gU1ZHQ29tcG9uZW50VHJhbnNmZXJUeXBlIHsKICAgICAgICAgU1ZHX0ZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOICA9IDAsCiAgICAgICAgIFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxLAogICAgICAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZF
Ul9UWVBFX1RBQkxFICAgID0gMiwKQEAgLTIxMCw4ICsxOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BICAgID0gNQogICAg
IH07CiAKLSAgICBlbnVtIFNWR0NvbXBvc2l0ZU9wZXJhdG9ycwotICAgIHsKKyAgICBlbnVtIFNW
R0NvbXBvc2l0ZU9wZXJhdG9ycyB7CiAgICAgICAgIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9V
TktOT1dOICAgID0gMCwKICAgICAgICAgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgICAg
ICAgPSAxLAogICAgICAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gICAgICAgICA9IDIs
CkBAIC0yMjEsMTYgKzIwMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdfRkVD
T01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDYKICAgICB9OwogCi0gICAgZW51bSBTVkdF
ZGdlTW9kZXMKLSAgICB7CisgICAgZW51bSBTVkdFZGdlTW9kZXMgewogICAgICAgICBTVkdfRURH
RU1PREVfVU5LTk9XTiAgID0gMCwKICAgICAgICAgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDEs
CiAgICAgICAgIFNWR19FREdFTU9ERV9XUkFQICAgICAgPSAyLAogICAgICAgICBTVkdfRURHRU1P
REVfTk9ORSAgICAgID0gMwogICAgIH07CiAKLSAgICBlbnVtIFNWR0NoYW5uZWxTZWxlY3RvcnMK
LSAgICB7CisgICAgZW51bSBTVkdDaGFubmVsU2VsZWN0b3JzIHsKICAgICAgICAgU1ZHX0NIQU5O
RUxfVU5LTk9XTiA9IDAsCiAgICAgICAgIFNWR19DSEFOTkVMX1IgICAgICAgPSAxLAogICAgICAg
ICBTVkdfQ0hBTk5FTF9HICAgICAgID0gMiwKQEAgLTIzOCwyOSArMjE2LDI3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIFNWR19DSEFOTkVMX0EgICAgICAgPSA0CiAgICAgfTsKIAotICAg
IGVudW0gU1ZHTW9ycGhvbG9neU9wZXJhdG9ycwotICAgIHsKKyAgICBlbnVtIFNWR01vcnBob2xv
Z3lPcGVyYXRvcnMgewogICAgICAgICBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0g
MCwKICAgICAgICAgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgICA9IDEsCiAgICAgICAg
IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAgPSAyCiAgICAgfTsKIAotICAgIGVudW0g
U1ZHVHVyYnVsZW5jZVR5cGUKLSAgICB7CisgICAgZW51bSBTVkdUdXJidWxlbmNlVHlwZSB7CiAg
ICAgICAgIFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiAgICAgID0gMCwKICAgICAgICAgU1ZH
X1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxLAogICAgICAgICBTVkdfVFVSQlVMRU5D
RV9UWVBFX1RVUkJVTEVOQ0UgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdTdGl0Y2hPcHRp
b25zCi0gICAgeworICAgIGVudW0gU1ZHU3RpdGNoT3B0aW9ucyB7CiAgICAgICAgIFNWR19TVElU
Q0hUWVBFX1VOS05PV04gID0gMCwKICAgICAgICAgU1ZHX1NUSVRDSFRZUEVfU1RJVENIICAgPSAx
LAogICAgICAgICBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDIKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2Vu
ZGlmIC8vIEtTVkdfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL2Nz
cy9TVkdSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvY3NzL1NWR1Jl
bmRlclN0eWxlLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVu
ZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDkgQEAgdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgdWludDY0X3Q7CiAgICAgaWYoIShHcm91cC0+VmFyaWFibGUgPT0gVmFs
dWUpKSBcCiAgICAgICAgIEdyb3VwLmFjY2VzcygpLT5WYXJpYWJsZSA9IFZhbHVlOwogCi1uYW1l
c3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR1JlbmRlclN0eWxlIDogcHVibGljIFNoYXJl
ZDxTVkdSZW5kZXJTdHlsZT4KLSAgICB7ICAgIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMgU2hhcmVkPFNWR1JlbmRlclN0eWxlPiB7ICAg
IAogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUmVuZGVyU3R5bGUoKTsKICAgICAgICAgU1ZHUmVu
ZGVyU3R5bGUoYm9vbCk7IC8vIFVzZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHN0eWxlLgpAQCAt
MTE5LDE2ICsxMTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgLy8gaW5oZXJpdAotICAgICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MKLSAgICAgICAg
eworICAgICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICAgICAgLy8gNjQgYml0
IGluaGVyaXRlZCwgZG9uJ3QgYWRkIHRvIHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRvciB3aWxs
IGJyZWFrLgogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdz
ICZvdGhlcikgY29uc3QgeyByZXR1cm4gX2lmbGFncyA9PSBvdGhlci5faWZsYWdzOyB9CiAgICAg
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25z
dCB7IHJldHVybiBfaWZsYWdzICE9IG90aGVyLl9pZmxhZ3M7IH0KIAotICAgICAgICAgICAgdW5p
b24KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QKLSAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgX2NvbG9yUmVuZGVyaW5nIDogMjsgLy8gRUNvbG9yUmVu
ZGVyaW5nCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9pbWFnZVJlbmRlcmluZyA6IDI7
IC8vIEVJbWFnZVJlbmRlcmluZyAKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX3NoYXBl
UmVuZGVyaW5nIDogMjsgLy8gRVNoYXBlUmVuZGVyaW5nIApAQCAtMTQ5LDE2ICsxNDUsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgfSBzdmdfaW5oZXJpdGVkX2ZsYWdzOwogCiAgICAg
ICAgIC8vIGRvbid0IGluaGVyaXQKLSAgICAgICAgc3RydWN0IE5vbkluaGVyaXRlZEZsYWdzCi0g
ICAgICAgIHsKKyAgICAgICAgc3RydWN0IE5vbkluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgICAg
IC8vIDY0IGJpdCBub24taW5oZXJpdGVkLCBkb24ndCBhZGQgdG8gdGhlIHN0cnVjdCwgb3IgdGhl
IG9wZXJhdG9yIHdpbGwgYnJlYWsuCiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Tm9uSW5oZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyA9PSBvdGhl
ci5fbmlmbGFnczsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vbkluaGVy
aXRlZEZsYWdzICZvdGhlcikgY29uc3QgeyByZXR1cm4gX25pZmxhZ3MgIT0gb3RoZXIuX25pZmxh
Z3M7IH0KIAotICAgICAgICAgICAgdW5pb24KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdHJ1Y3QKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2FsaWdubWVu
dEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lIAogICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBfZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5lCiAg
ICAgICAgICAgICAgICAgICAgIC8vIDI0IGJpdHMgdW51c2VkCkBAIC0yMDQsOSArMTk3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X2RvbWluYW50QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpOwogICAgICAgICB9
CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1JlbmRlclN0eWxlX0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDc0ICs0Myw2MSBAQAogICAgIERhdGEgTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIChEYXRhKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLmYuXyMjTmFtZTsgfSBcCiAgICAg
c3RhdGljIERhdGEgaW5pdGlhbCMjVHlwZSgpIHsgcmV0dXJuIEluaXRpYWw7IH0KIAotbmFtZXNw
YWNlIFdlYkNvcmUKLXsKLSAgICBlbnVtIEVXaW5kUnVsZQotICAgIHsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworICAgIGVudW0gRVdpbmRSdWxlIHsKICAgICAgICAgV1JfTk9OWkVSTyA9IDAsIFdS
X0VWRU5PREQgPSAxCiAgICAgfTsKIAotICAgIGVudW0gRUNhcFN0eWxlCi0gICAgeworICAgIGVu
dW0gRUNhcFN0eWxlIHsKICAgICAgICAgQ1NfQlVUVCA9IDEsIENTX1JPVU5EID0gMiwgQ1NfU1FV
QVJFID0gMwogICAgIH07CiAKLSAgICBlbnVtIEVKb2luU3R5bGUKLSAgICB7CisgICAgZW51bSBF
Sm9pblN0eWxlIHsKICAgICAgICAgSlNfTUlURVIgPSAxLCBKU19ST1VORCA9IDIsIEpTX0JFVkVM
ID0gMwogICAgIH07CiAKLSAgICBlbnVtIEVUZXh0QW5jaG9yCi0gICAgeworICAgIGVudW0gRVRl
eHRBbmNob3IgewogICAgICAgICBUQV9TVEFSVCwgVEFfTUlERExFLCBUQV9FTkQKICAgICB9Owog
Ci0gICAgZW51bSBFQ29sb3JJbnRlcnBvbGF0aW9uCi0gICAgeworICAgIGVudW0gRUNvbG9ySW50
ZXJwb2xhdGlvbiB7CiAgICAgICAgIENJX0FVVE8sIENJX1NSR0IsIENJX0xJTkVBUlJHQgogICAg
IH07CiAKLSAgICBlbnVtIEVDb2xvclJlbmRlcmluZwotICAgIHsKKyAgICBlbnVtIEVDb2xvclJl
bmRlcmluZyB7CiAgICAgICAgIENSX0FVVE8sIENSX09QVElNSVpFU1BFRUQsIENSX09QVElNSVpF
UVVBTElUWQogICAgIH07CiAgICAgCi0gICAgZW51bSBFSW1hZ2VSZW5kZXJpbmcKLSAgICB7Cisg
ICAgZW51bSBFSW1hZ2VSZW5kZXJpbmcgewogICAgICAgICBJUl9BVVRPLCBJUl9PUFRJTUlaRVNQ
RUVELCBJUl9PUFRJTUlaRVFVQUxJVFkKICAgICB9OwogCi0gICAgZW51bSBFU2hhcGVSZW5kZXJp
bmcKLSAgICB7CisgICAgZW51bSBFU2hhcGVSZW5kZXJpbmcgewogICAgICAgICBTUl9BVVRPLCBT
Ul9PUFRJTUlaRVNQRUVELCBTUl9DUklTUEVER0VTLCBTUl9HRU9NRVRSSUNQUkVDSVNJT04KICAg
ICB9OwogCi0gICAgZW51bSBFVGV4dFJlbmRlcmluZwotICAgIHsKKyAgICBlbnVtIEVUZXh0UmVu
ZGVyaW5nIHsKICAgICAgICAgVFJfQVVUTywgVFJfT1BUSU1JWkVTUEVFRCwgVFJfT1BUSU1JWkVM
RUdJQklMSVRZLCBUUl9HRU9NRVRSSUNQUkVDSVNJT04KICAgICB9OwogCi0gICAgZW51bSBFV3Jp
dGluZ01vZGUKLSAgICB7CisgICAgZW51bSBFV3JpdGluZ01vZGUgewogICAgICAgICBXTV9MUlRC
LCBXTV9MUiwgV01fUkxUQiwgV01fUkwsIFdNX1RCUkwsIFdNX1RCCiAgICAgfTsKICAgICAKLSAg
ICBlbnVtIEVBbGlnbm1lbnRCYXNlbGluZQotICAgIHsKKyAgICBlbnVtIEVBbGlnbm1lbnRCYXNl
bGluZSB7CiAgICAgICAgIEFCX0FVVE8sIEFCX0JBU0VMSU5FLCBBQl9CRUZPUkVfRURHRSwgQUJf
VEVYVF9CRUZPUkVfRURHRSwKICAgICAgICAgQUJfTUlERExFLCBBQl9DRU5UUkFMLCBBQl9BRlRF
Ul9FREdFLCBBQl9URVhUX0FGVEVSX0VER0UsCiAgICAgICAgIEFCX0lERU9HUkFQSElDLCBBQl9B
TFBIQUJFVElDLCBBQl9IQU5HSU5HLCBBQl9NQVRIRU1BVElDQUwKICAgICB9OwogCi0gICAgZW51
bSBFRG9taW5hbnRCYXNlbGluZQotICAgIHsKKyAgICBlbnVtIEVEb21pbmFudEJhc2VsaW5lIHsK
ICAgICAgICAgREJfQVVUTywgREJfVVNFX1NDUklQVCwgREJfTk9fQ0hBTkdFLCBEQl9SRVNFVF9T
SVpFLAogICAgICAgICBEQl9JREVPR1JBUEhJQywgREJfQUxQSEFCRVRJQywgREJfSEFOR0lORywg
REJfTUFUSEVNQVRJQ0FMLAogICAgICAgICBEQl9DRU5UUkFMLCBEQl9NSURETEUsIERCX1RFWFRf
QUZURVJfRURHRSwgREJfVEVYVF9CRUZPUkVfRURHRQogICAgIH07CiAKLSAgICBlbnVtIEVQb2lu
dGVyRXZlbnRzCi0gICAgeworICAgIGVudW0gRVBvaW50ZXJFdmVudHMgewogICAgICAgICBQRV9O
T05FLCBQRV9TVFJPS0UsIFBFX0ZJTEwsIFBFX1BBSU5URUQsIFBFX1ZJU0lCTEUsCiAgICAgICAg
IFBFX1ZJU0lCTEVfU1RST0tFLCBQRV9WSVNJQkxFX0ZJTEwsIFBFX1ZJU0lCTEVfUEFJTlRFRCwg
UEVfQUxMCiAgICAgfTsKQEAgLTExOCw4ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
IGNsYXNzIENTU1ZhbHVlTGlzdDsKIAogICAgIC8vIEluaGVyaXRlZC9Ob24tSW5oZXJpdGVkIFN0
eWxlIERhdGFzdHJ1Y3R1cmVzCi0gICAgY2xhc3MgU3R5bGVGaWxsRGF0YSA6IHB1YmxpYyBTaGFy
ZWQ8U3R5bGVGaWxsRGF0YT4KLSAgICB7CisgICAgY2xhc3MgU3R5bGVGaWxsRGF0YSA6IHB1Ymxp
YyBTaGFyZWQ8U3R5bGVGaWxsRGF0YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVGaWxs
RGF0YSgpOwogICAgICAgICBTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxlRmlsbERhdGEgJm90aGVy
KTsKQEAgLTEzNyw4ICsxMjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTdHlsZUZp
bGxEYXRhICZvcGVyYXRvcj0oY29uc3QgU3R5bGVGaWxsRGF0YSAmKTsKICAgICB9OwogCi0gICAg
Y2xhc3MgU3R5bGVTdHJva2VEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZVN0cm9rZURhdGE+Ci0g
ICAgeworICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVTdHJv
a2VEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZVN0cm9rZURhdGEoKTsKICAgICAg
ICAgU3R5bGVTdHJva2VEYXRhKGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSAmb3RoZXIpOwpAQCAtMTYy
LDggKzE0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFN0eWxlU3Ryb2tlRGF0YSAm
b3BlcmF0b3I9KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSAmKTsKICAgICB9OwogCi0gICAgY2xhc3Mg
U3R5bGVTdG9wRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVTdG9wRGF0YT4KLSAgICB7CisgICAg
Y2xhc3MgU3R5bGVTdG9wRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVTdG9wRGF0YT4gewogICAg
IHB1YmxpYzoKICAgICAgICAgU3R5bGVTdG9wRGF0YSgpOwogICAgICAgICBTdHlsZVN0b3BEYXRh
KGNvbnN0IFN0eWxlU3RvcERhdGEgJm90aGVyKTsKQEAgLTE4MSw4ICsxNjUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICBTdHlsZVN0b3BEYXRhICZvcGVyYXRvcj0oY29uc3QgU3R5bGVT
dG9wRGF0YSAmKTsKICAgICB9OwogCi0gICAgY2xhc3MgU3R5bGVDbGlwRGF0YSA6IHB1YmxpYyBT
aGFyZWQ8U3R5bGVDbGlwRGF0YT4KLSAgICB7CisgICAgY2xhc3MgU3R5bGVDbGlwRGF0YSA6IHB1
YmxpYyBTaGFyZWQ8U3R5bGVDbGlwRGF0YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVD
bGlwRGF0YSgpOwogICAgICAgICBTdHlsZUNsaXBEYXRhKGNvbnN0IFN0eWxlQ2xpcERhdGEgJm90
aGVyKTsKQEAgLTE5OSw4ICsxODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTdHls
ZUNsaXBEYXRhICZvcGVyYXRvcj0oY29uc3QgU3R5bGVDbGlwRGF0YSAmKTsKICAgICB9OwogCi0g
ICAgY2xhc3MgU3R5bGVNYXNrRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNYXNrRGF0YT4KLSAg
ICB7CisgICAgY2xhc3MgU3R5bGVNYXNrRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNYXNrRGF0
YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVNYXNrRGF0YSgpOwogICAgICAgICBTdHls
ZU1hc2tEYXRhKGNvbnN0IFN0eWxlTWFza0RhdGEgJm90aGVyKTsKQEAgLTIxNCw4ICsxOTYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTdHlsZU1hc2tEYXRhICZvcGVyYXRvcj0oY29u
c3QgU3R5bGVNYXNrRGF0YSAmKTsKICAgICB9OwogCi0gICAgY2xhc3MgU3R5bGVNYXJrZXJEYXRh
IDogcHVibGljIFNoYXJlZDxTdHlsZU1hcmtlckRhdGE+Ci0gICAgeworICAgIGNsYXNzIFN0eWxl
TWFya2VyRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNYXJrZXJEYXRhPiB7CiAgICAgcHVibGlj
OgogICAgICAgICBTdHlsZU1hcmtlckRhdGEoKTsKICAgICAgICAgU3R5bGVNYXJrZXJEYXRhKGNv
bnN0IFN0eWxlTWFya2VyRGF0YSAmb3RoZXIpOwpAQCAtMjM1LDggKzIxNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgfTsKIAogICAgIC8vIE5vdGUgOiB0aGUgcnVsZSBmb3IgdGhpcyBjbGFz
cyBpcywgKm5vIGluaGVyaXRhbmNlKiBvZiB0aGVzZSBwcm9wcwotICAgIGNsYXNzIFN0eWxlTWlz
Y0RhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlTWlzY0RhdGE+Ci0gICAgeworICAgIGNsYXNzIFN0
eWxlTWlzY0RhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlTWlzY0RhdGE+IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFN0eWxlTWlzY0RhdGEoKTsKICAgICAgICAgU3R5bGVNaXNjRGF0YShjb25zdCBT
dHlsZU1pc2NEYXRhICZvdGhlcik7CkBAIC0yNTQsOSArMjM0LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3R5bGVNaXNjRGF0YSAmb3BlcmF0b3I9KGNvbnN0
IFN0eWxlTWlzY0RhdGEgJik7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1JlbmRl
clN0eWxlRGVmc19ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvZXZl
bnRzL1NWR1pvb21FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvZXZlbnRzL1NW
R1pvb21FdmVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvZXZlbnRzL1NW
R1pvb21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR1pvb21FdmVudCA6IHB1YmxpYyBVSUV2ZW50Ci0g
ICAgeworICAgIGNsYXNzIFNWR1pvb21FdmVudCA6IHB1YmxpYyBVSUV2ZW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR1pvb21FdmVudCgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdab29tRXZl
bnQoKTsKQEAgLTU3LDkgKzU2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRmxv
YXRQb2ludCBtX25ld1RyYW5zbGF0ZTsKICAgICAgICAgRmxvYXRQb2ludCBtX3ByZXZpb3VzVHJh
bnNsYXRlOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gU1ZHWm9vbUV2ZW50X0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5
bGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRl
cmluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKICNkZWZpbmUgS1NW
R19LQ2FudmFzUmVuZGVyaW5nU3R5bGVfSAogI2lmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlIDxr
Y2FudmFzL0tDYW52YXNNYXRyaXguaD4KICNpbmNsdWRlICJEZXByZWNhdGVkVmFsdWVMaXN0Lmgi
CisjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzTWF0cml4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDMsNyArNDMsNiBAQCBlbnVtIEtDSm9pblN0eWxlIHsKICAgICBKT0lOX0JFVkVM
ID0gMwogfTsKIAotCiAvLyBTcGVjaWFsIHR5cGVzCiB0eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxp
c3Q8ZmxvYXQ+IEtDRGFzaEFycmF5OwogCkBAIC01Myw4ICs1Miw4IEBAIHR5cGVkZWYgRGVwcmVj
YXRlZFZhbHVlTGlzdDxmbG9hdD4gS0NEYXMKICAgICBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXI7CiAgICAgY2xhc3MgUmVuZGVyU3R5bGU7CiAgICAgY2xhc3MgUmVuZGVyT2JqZWN0OwotICAg
IGNsYXNzIEtTVkdQYWludGVyRmFjdG9yeQotICAgIHsKKworICAgIGNsYXNzIEtTVkdQYWludGVy
RmFjdG9yeSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgS1JlbmRlcmluZ0ZpbGxQYWlu
dGVyIGZpbGxQYWludGVyKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7
CiAgICAgICAgIHN0YXRpYyBLUmVuZGVyaW5nU3Ryb2tlUGFpbnRlciBzdHJva2VQYWludGVyKGNv
bnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7CkBAIC02Nyw5ICs2NiwxMCBA
QCB0eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8ZmxvYXQ+IEtDRGFzCiAKICAgICAgICAgc3Rh
dGljIGRvdWJsZSBjc3NQcmltaXRpdmVUb0xlbmd0aChjb25zdCBSZW5kZXJPYmplY3QqLCBDU1NW
YWx1ZSosIGRvdWJsZSBkZWZhdWx0VmFsdWUgPSAwLjApOwogICAgIH07Ci19OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYg
Ly8gS1NWR19LQ2FudmFzUmVuZGVyaW5nU3R5bGVfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJD
b3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTkg
KzI1LDIxIEBACiAKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0ltYWdlRWxlbWVu
dDsKKwogICAgIGNsYXNzIFNWR0ltYWdlTG9hZGVyIDogcHVibGljIEhUTUxJbWFnZUxvYWRlciB7
CiAgICAgcHVibGljOgotICAgICAgICBTVkdJbWFnZUxvYWRlcihTVkdJbWFnZUVsZW1lbnQgKm5v
ZGUpOworICAgICAgICBTVkdJbWFnZUxvYWRlcihTVkdJbWFnZUVsZW1lbnQqKTsKICAgICAgICAg
dmlydHVhbCB+U1ZHSW1hZ2VMb2FkZXIoKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdJ
bWFnZUxvYWRlcl9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc2Ny
aXB0cy9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc2NyaXB0cy9t
YWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc2NyaXB0cy9t
YWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpbnQgInZv
aWQgaW5pdCgpCiAJCXByaW50RGVmaW5pdGlvbnMoXEBhdHRycywgImF0dHJpYnV0ZXMiLCAkYXR0
cnNOYW1lc3BhY2UpOwogCX0KIAotCXByaW50ICJ9XG5cbn0gfSI7CisJcHJpbnQgIn1cblxufSB9
XG5cbiI7CiAJcmVzdG9yZVNURE9VVCgpOwogfQogCkBAIC00MTUsNyArNDE1LDcgQEAgJHtuYW1l
c3BhY2V9RWxlbWVudCAqJHtuYW1lc3BhY2V9RWxlbWVudAogICAgIHJldHVybiBuZXcgJHtuYW1l
c3BhY2V9RWxlbWVudChxTmFtZSwgZG9jKTsKIH0KIAotfTsgLy8gbmFtZXNwYWNlCit9IC8vIG5h
bWVzcGFjZQogCiBFTkQKIDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnQuaAkocmV2aXNpb24g
MTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwxNSArMjQsMTYgQEAKICNkZWZpbmUgS1NWR19TVkdBRWxlbWVudEltcGxfSAogI2lm
IFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlICJTVkdUZXN0cy5oIgorI2luY2x1ZGUgIlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKLSNpbmNs
dWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKKyNp
bmNsdWRlICJTVkdUZXN0cy5oIgorI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CiAgICAgY2xhc3MgU1ZHQW5p
bWF0ZWRTdHJpbmc7CisKICAgICBjbGFzcyBTVkdBRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHVVJJUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdU
ZXN0cywKQEAgLTU5LDkgKzYwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1fdGFyZ2V0OwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdBRWxlbWVudEltcGxfSAogCiAvLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDExIEBA
CiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewor
bmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAotICAg
IGNsYXNzIFNWR0FuZ2xlIDogcHVibGljIFNoYXJlZDxTVkdBbmdsZT4KLSAgICB7CisgICAgY2xh
c3MgU1ZHQW5nbGUgOiBwdWJsaWMgU2hhcmVkPFNWR0FuZ2xlPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBTVkdBbmdsZShjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KTsKICAgICAgICAg
dmlydHVhbCB+U1ZHQW5nbGUoKTsKQEAgLTc3LDkgKzc2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICAgICAgICAgdm9pZCBjYWxjdWxhdGUoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtT
VkdfU1ZHQW5nbGVJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDEwICsyNiw5IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRpb25FbGVtZW50LmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCA6IHB1
YmxpYyBTVkdBbmltYXRpb25FbGVtZW50Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCA6IHB1YmxpYyBTVkdBbmltYXRpb25FbGVt
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVD
b2xvckVsZW1lbnQoKTsKQEAgLTU2LDkgKzU1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAg
ICAgIGludCBtX2dyZWVuRGlmZjsKICAgICAgICAgaW50IG1fYmx1ZURpZmY7CiAgICAgfTsKLX07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5k
aWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0FuaW1hdGVDb2xvckVsZW1lbnRJbXBsX0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCShyZXZp
c2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRpb25F
bGVtZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZUVs
ZW1lbnQgOiBwdWJsaWMgU1ZHQW5pbWF0aW9uRWxlbWVudAotICAgIHsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworICAgIGNsYXNzIFNWR0FuaW1hdGVFbGVtZW50IDogcHVibGljIFNWR0FuaW1hdGlv
bkVsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVF
bGVtZW50KCk7CkBAIC00MSw5ICs0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAg
IERlcHJlY2F0ZWRTdHJpbmcgbV9zYXZlZFRvOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NW
R19TVkdBbmltYXRlRWxlbWVudEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9u
IDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTYgKzI0LDE1IEBACiAjZGVmaW5lIEtTVkdfU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnRJbXBsX0gKICNpZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSA8
a2NhbnZhcy9LQ2FudmFzTWF0cml4Lmg+Ci0KICNpbmNsdWRlICJrc3ZnLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc01hdHJpeC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CiAgICAgY2xh
c3MgU1ZHVHJhbnNmb3JtOwotICAgIGNsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IDog
cHVibGljIFNWR0FuaW1hdGlvbkVsZW1lbnQKLSAgICB7CisKKyAgICBjbGFzcyBTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudCA6IHB1YmxpYyBTVkdBbmltYXRpb25FbGVtZW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudCgpOwpAQCAtNjQsOSArNjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgYm9v
bCBtX3RvUm90YXRlU3BlY2lhbENhc2UgOiAxOwogICAgICAgICBib29sIG1fZnJvbVJvdGF0ZVNw
ZWNpYWxDYXNlIDogMTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnRJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBA
CiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRlLmgi
CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZSA6IHB1
YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0FuZ2xlPgotICAgIHsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworICAgIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGUgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZTxTVkdBbmdsZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZWRBbmds
ZShjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KTsKICAgICAgICAgdmlydHVhbCB+U1ZH
QW5pbWF0ZWRBbmdsZSgpOwpAQCAtMzksOSArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAg
ICAgICAgdmlydHVhbCBTVkdBbmdsZSAqY3JlYXRlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBhc3NpZ24oU1ZHQW5nbGUgKnNyYywgU1ZHQW5nbGUgKmRzdCkgY29uc3Q7CiAgICAgfTsK
LX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0j
ZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0FuaW1hdGVkQW5nbGVJbXBsX0gKIAogLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMSBAQAogCiAjaW5jbHVkZSAiU2hhcmVkLmgiCiAK
LW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBT
VkdTdHlsZWRFbGVtZW50OwotICAgIGNsYXNzIFNWR0FuaW1hdGVkQm9vbGVhbiA6IHB1YmxpYyBT
aGFyZWQ8U1ZHQW5pbWF0ZWRCb29sZWFuPgotICAgIHsKKworICAgIGNsYXNzIFNWR0FuaW1hdGVk
Qm9vbGVhbiA6IHB1YmxpYyBTaGFyZWQ8U1ZHQW5pbWF0ZWRCb29sZWFuPiB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdBbmltYXRlZEJvb2xlYW4oY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29u
dGV4dCk7CiAgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkQm9vbGVhbigpOwpAQCAtNDcsOSAr
NDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVt
ZW50ICptX2NvbnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0FuaW1hdGVk
Qm9vbGVhbkltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdBbmltYXRlZENvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
QW5pbWF0ZWRDb2xvci5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0FuaW1hdGVkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRDb2xvciA6IHB1YmxpYyBT
VkdBbmltYXRlZFRlbXBsYXRlPFNWR0NvbG9yPgogICAgIHsKICAgICBwdWJsaWM6CkBAIC0zNyw3
ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHQ29sb3IgKmNy
ZWF0ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduKFNWR0NvbG9yICpzcmMs
IFNWR0NvbG9yICpkc3QpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50ICptX2Nv
bnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGguaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZExl
bmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIExlbmd0aE1vZGUgbV9tb2RlOwogICAgICAgICBjb25zdCBTVkdFbGVtZW50ICpt
X3ZpZXdwb3J0RWxlbWVudDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdMZW5ndGhMaXN0ICpj
cmVhdGUoKSBjb25zdDsKICAgICAgICAgLy92aXJ0dWFsIHZvaWQgYXNzaWduKFNWR0xlbmd0aExp
c3QgKnNyYywgU1ZHTGVuZ3RoTGlzdCAqZHN0KSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRF
bGVtZW50ICptX2NvbnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICsz
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHTnVtYmVyTGlzdCAq
Y3JlYXRlKCkgY29uc3Q7CiAgICAgICAgIC8vdmlydHVhbCB2b2lkIGFzc2lnbihTVkdOdW1iZXJM
aXN0ICpzcmMsIFNWR051bWJlckxpc3QgKmRzdCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFBhdGhEYXRhLmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZH
UGF0aFNlZ0xpc3QgKmFuaW1hdGVkUGF0aFNlZ0xpc3QoKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgU1ZHUGF0aFNlZ0xpc3QgKmFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCkgY29u
c3QgPSAwOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRl
ZFBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUG9p
bnRzLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQ
b2ludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICB2aXJ0dWFsIFNWR1BvaW50TGlzdCAqcG9pbnRzKCkgY29uc3QgPSAwOwogICAg
ICAgICB2aXJ0dWFsIFNWR1BvaW50TGlzdCAqYW5pbWF0ZWRQb2ludHMoKSBjb25zdCA9IDA7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyAqY3JlYXRlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhc3Np
Z24oU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqc3JjLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICpk
c3QpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmlt
YXRlZFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFJl
Y3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFJl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIFNWR1JlY3QgKmNyZWF0ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgYXNzaWduKFNWR1JlY3QgKnNyYywgU1ZHUmVjdCAqZHN0KSBjb25zdDsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5oCShyZXZpc2lvbiAx
NTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRl
LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmcg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTdHJpbmdJbXBsPgotICAgIHsKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR0FuaW1hdGVkU3RyaW5nIDogcHVibGljIFNWR0Fu
aW1hdGVkVGVtcGxhdGU8U3RyaW5nSW1wbD4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5p
bWF0ZWRTdHJpbmcoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCk7CiAgICAgICAgIHZp
cnR1YWwgflNWR0FuaW1hdGVkU3RyaW5nKCk7CkBAIC0zOCw5ICszNywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFN0cmluZ0ltcGwgKmNyZWF0ZSgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduKFN0cmluZ0ltcGwgKnNyYywgU3RyaW5nSW1wbCAqZHN0
KSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHQW5pbWF0ZWRTdHJpbmdJ
bXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1h
dGVkVGVtcGxhdGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
bmltYXRlZFRlbXBsYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKIAogI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwogICAgIC8vIFNWR0FuaW1hdGVkVGVtcGxhdGUKICAgICAvLyAtIGxh
enkgY3JlYXRpb24gb2YgYmFzZVZhbC9hbmltVmFsCiAgICAgLy8gICAobm8gbW9yZSB3YXN0ZSBv
ZiBtb3N0bHkgdW51c2VkIGFuaW1WYWwgdmFyaWFibGUhKQpAQCAtMzUsOCArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgIC8vIC0gbm8gY29weSBjdG9yL25vIGFzc2lnbm1lbnQgb3BlcmF0
b3IgYXZhaWxhYmxlCiAgICAgLy8gICAoLT4gYSBjbGFzcyBmb3Igb25seSBmb3IgcG9pbnRlciB1
c2FnZSkKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGNsYXNzIFNWR0FuaW1hdGVkVGVtcGxh
dGUgOiBwdWJsaWMgU2hhcmVkPFNWR0FuaW1hdGVkVGVtcGxhdGU8VD4gPgotICAgIHsKKyAgICBj
bGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIDogcHVibGljIFNoYXJlZDxTVkdBbmltYXRlZFRlbXBs
YXRlPFQ+ID4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRUZW1w
bGF0ZSgpCiAgICAgICAgIHsKQEAgLTk3LDkgKzk2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIG11dGFibGUgUmVmUHRyPFQ+IG1fYmFzZVZhbDsKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8VD4gbV9hbmltVmFsOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdBbmltYXRl
ZFRlbXBsYXRlX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEwICsyNyw5IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIgogI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFz
cyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxT
VkdUcmFuc2Zvcm1MaXN0PgotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPFNW
R1RyYW5zZm9ybUxpc3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KTsKICAgICAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KCk7CkBAIC0zOSw5ICszOCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR1RyYW5zZm9ybUxpc3QgKmNyZWF0ZSgpIGNv
bnN0OwogICAgICAgICAvL3ZpcnR1YWwgdm9pZCBhc3NpZ24oU1ZHVHJhbnNmb3JtTGlzdCAqc3Jj
LCBTVkdUcmFuc2Zvcm1MaXN0ICpkc3QpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8g
S1NWR19TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwyMCBAQAogCiAjaW5jbHVkZSAiQXR0ci5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
KyNpbmNsdWRlICJrc3ZnY3NzcHJvcGVydGllcy5oIgogI2luY2x1ZGUgIktTVkdUaW1lU2NoZWR1
bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdTVkdF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJYTGlu
a05hbWVzLmgiCi0jaW5jbHVkZSAia3N2Z2Nzc3Byb3BlcnRpZXMuaCIKICNpbmNsdWRlIDxmbG9h
dC5oPgogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTUzMSwxNSArNTMy
LDE0IEBAIGludCBTVkdBbmltYXRpb25FbGVtZW50OjpjYWxjdWxhdGVDdXJyZW4KICAgICB1bnNp
Z25lZCBsb25nIGl0ZW1zID0gbV92YWx1ZXMtPm51bWJlck9mSXRlbXMoKTsKIAogICAgIC8vIENh
bGN1bGF0ZSB0aGUgcmVsYXRpdmUgdGltZSBwZXJjZW50YWdlcyBmb3IgZWFjaCAnZmFkZScuCi0g
ICAgZG91YmxlIHN0YXJ0VGltZXNbaXRlbXNdOyBzdGFydFRpbWVzWzBdID0gMC4wOwotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgaXRlbXM7ICsraSkKKyAgICBWZWN0b3I8ZG91Ymxl
PiBzdGFydFRpbWVzKGl0ZW1zKTsKKyAgICBzdGFydFRpbWVzWzBdID0gMC4wOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPCBpdGVtczsgKytpKQogICAgICAgICBzdGFydFRpbWVzW2ldID0g
KCgoMi4wICogaSkpIC8gKGl0ZW1zIC0gMSkpIC8gMi4wOwogCiAgICAgaW50IGl0ZW1CeVBlcmNl
bnRhZ2UgPSAtMTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGl0ZW1zIC0gMTsg
KytpKQotICAgIHsKLSAgICAgICAgaWYgKHRpbWVQZXJjZW50YWdlID49IHN0YXJ0VGltZXNbaV0g
JiYgdGltZVBlcmNlbnRhZ2UgPD0gc3RhcnRUaW1lc1tpICsgMV0pCi0gICAgICAgIHsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMgLSAxOyArK2kpIHsKKyAgICAgICAgaWYgKHRp
bWVQZXJjZW50YWdlID49IHN0YXJ0VGltZXNbaV0gJiYgdGltZVBlcmNlbnRhZ2UgPD0gc3RhcnRU
aW1lc1tpICsgMV0pIHsKICAgICAgICAgICAgIGl0ZW1CeVBlcmNlbnRhZ2UgPSBpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU1Niw4ICs1NTYsOSBAQCBkb3VibGUgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6Y2FsY3VsYXRlUmVsCiAgICAgdW5zaWduZWQgbG9uZyBpdGVtcyA9IG1f
dmFsdWVzLT5udW1iZXJPZkl0ZW1zKCk7CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIHJlbGF0aXZl
IHRpbWUgcGVyY2VudGFnZXMgZm9yIGVhY2ggJ2ZhZGUnLgotICAgIGRvdWJsZSBzdGFydFRpbWVz
W2l0ZW1zXTsgc3RhcnRUaW1lc1swXSA9IDAuMDsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MTsgaSA8IGl0ZW1zOyArK2kpCisgICAgVmVjdG9yPGRvdWJsZT4gc3RhcnRUaW1lcyhpdGVtcyk7
CisgICAgc3RhcnRUaW1lc1swXSA9IDAuMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
aXRlbXM7ICsraSkKICAgICAgICAgc3RhcnRUaW1lc1tpXSA9ICgoKDIuMCAqIGkpKSAvIChpdGVt
cyAtIDEpKSAvIDIuMDsKIAogICAgIGRvdWJsZSBiZWdpblRpbWVQZXJjZW50YWdlID0gc3RhcnRU
aW1lc1tjdXJyZW50SXRlbV07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNTQgKzI0LDQ4IEBACiAjZGVmaW5lIEtT
VkdfU1ZHQW5pbWF0aW9uRWxlbWVudEltcGxfSAogI2lmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRl
ICJTVkdUZXN0cy5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgor
I2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgZW51bSBF
RmlsbE1vZGUKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBlbnVtIEVGaWxsTW9k
ZSB7CiAgICAgICAgIEZJTExfUkVNT1ZFID0gMCwKICAgICAgICAgRklMTF9GUkVFWkUKICAgICB9
OwogCi0gICAgZW51bSBFQWRkaXRpdmVNb2RlCi0gICAgeworICAgIGVudW0gRUFkZGl0aXZlTW9k
ZSB7CiAgICAgICAgIEFERElUSVZFX1JFUExBQ0UgPSAwLAogICAgICAgICBBRERJVElWRV9TVU0K
ICAgICB9OwogCi0gICAgZW51bSBFQWNjdW11bGF0ZU1vZGUKLSAgICB7CisgICAgZW51bSBFQWNj
dW11bGF0ZU1vZGUgewogICAgICAgICBBQ0NVTVVMQVRFX05PTkUgPSAwLAogICAgICAgICBBQ0NV
TVVMQVRFX1NVTQogICAgIH07CiAKLSAgICBlbnVtIEVDYWxjTW9kZQotICAgIHsKKyAgICBlbnVt
IEVDYWxjTW9kZSB7CiAgICAgICAgIENBTENNT0RFX0RJU0NSRVRFID0gMCwKICAgICAgICAgQ0FM
Q01PREVfTElORUFSLAogICAgICAgICBDQUxDTU9ERV9QQUNFRCwKICAgICAgICAgQ0FMQ01PREVf
U1BMSU5FCiAgICAgfTsKIAotICAgIGVudW0gRVJlc3RhcnQKLSAgICB7CisgICAgZW51bSBFUmVz
dGFydCB7CiAgICAgICAgIFJFU1RBUlRfQUxXQVlTID0gMCwKICAgICAgICAgUkVTVEFSVF9XSEVO
Tk9UQUNUSVZFLAogICAgICAgICBSRVNUQVJUX05FVkVSCiAgICAgfTsKIAotICAgIGVudW0gRUF0
dHJpYnV0ZVR5cGUKLSAgICB7CisgICAgZW51bSBFQXR0cmlidXRlVHlwZSB7CiAgICAgICAgIEFU
VFJJQlVURVRZUEVfQ1NTID0gMCwKICAgICAgICAgQVRUUklCVVRFVFlQRV9YTUwsCiAgICAgICAg
IEFUVFJJQlVURVRZUEVfQVVUTwogICAgIH07CiAKLSAgICBlbnVtIEVBbmltYXRpb25Nb2RlIC8v
IGludGVybmFsCi0gICAgeworICAgIC8vIGludGVybmFsCisgICAgZW51bSBFQW5pbWF0aW9uTW9k
ZSB7CiAgICAgICAgIE5PX0FOSU1BVElPTiA9IDAsCiAgICAgICAgIFRPX0FOSU1BVElPTiwKICAg
ICAgICAgQllfQU5JTUFUSU9OLApAQCAtMTY3LDkgKzE2MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBSZWZQdHI8U1ZHU3RyaW5nTGlzdD4gbV9rZXlUaW1lczsKICAgICAgICAgUmVm
UHRyPFNWR1N0cmluZ0xpc3Q+IG1fa2V5U3BsaW5lczsKICAgICB9OwotfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8v
IEtTVkdfU1ZHQW5pbWF0aW9uRWxlbWVudEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdB
bmltYXRlZExlbmd0aD4gbV9jeTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fcjsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
bV9jbGlwUGF0aFVuaXRzOwogICAgICAgICBLQ2FudmFzQ2xpcHBlciAqbV9jbGlwcGVyOwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb2xvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbG9yLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEx
IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi1u
YW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJHQkNv
bG9yOwogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAgICAgCi0gICAgY2xhc3MgU1ZH
Q29sb3IgOiBwdWJsaWMgQ1NTVmFsdWUKLSAgICB7CisgICAgY2xhc3MgU1ZHQ29sb3IgOiBwdWJs
aWMgQ1NTVmFsdWUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQ29sb3IoKTsKICAgICAgICAg
U1ZHQ29sb3IoY29uc3QgU3RyaW5nJiByZ2JDb2xvcik7CkBAIC02OCw5ICs2NiwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2NvbG9yVHlwZTsKICAgICAg
ICAgU3RyaW5nIG1fcmdiQ29sb3I7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0Nv
bG9ySW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNp
b24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2V4cG9u
ZW50OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gbV9vZmZzZXQ7
CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3k7CiAgICAgICAgIENhY2hlZElt
YWdlICptX2NhY2hlZEltYWdlOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdET01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0RPTUltcGxlbWVudGF0aW9uLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9hbmltYXRpb25Db250ZXh0
IDogMTsKICAgICB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBT
VkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdET01JbXBsZW1lbnRhdGlvbklt
cGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZWZz
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50
LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdU
ZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0Rlc2NFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVz
Y0VsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZXNj
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICAgICAgICAgU3RyaW5nSW1wbCAqZGVzY3JpcHRpb24oKSBjb25zdDsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiAgICAg
Y2xhc3MgU1ZHRE9NSW1wbGVtZW50YXRpb247CiAKLSAgICBjbGFzcyBTVkdEb2N1bWVudCA6IHB1
YmxpYyBEb2N1bWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdEb2N1bWVudCA6IHB1YmxpYyBEb2N1
bWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdEb2N1bWVudChTVkdET01JbXBsZW1lbnRh
dGlvbiAqaSwgRnJhbWVWaWV3ICp2aWV3KTsKICAgICAgICAgdmlydHVhbCB+U1ZHRG9jdW1lbnQo
KTsKQEAgLTQ1LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
ZGlzcGF0Y2hab29tRXZlbnQoZmxvYXQgcHJldlNjYWxlLCBmbG9hdCBuZXdTY2FsZSk7CiAgICAg
ICAgIHZvaWQgZGlzcGF0Y2hTY3JvbGxFdmVudCgpOwogICAgIH07Ci19OwogCi0jZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKKyNlbmRpZiAvLyBLU1ZHX1NWR0RvY3VtZW50SW1wbF9ICiAKIC8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCAr
MjgsMTMgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgY2xhc3MgRG9jdW1lbnRQdHI7CisgICAgY2xhc3MgRWNtYTsKICAgICBjbGFzcyBTVkdNYXRy
aXg7Ci0gICAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50
OwotICAgIGNsYXNzIEVjbWE7Ci0gICAgY2xhc3MgRG9jdW1lbnRQdHI7CisgICAgY2xhc3MgU1ZH
U1ZHRWxlbWVudDsKIAotICAgIGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVu
dAotICAgIHsKKyAgICBjbGFzcyBTVkdFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRWxlbWVudCgpOwpAQCAtNzIsMjggKzcxLDI5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VSZW5kZXJlcigpIHsgbV9jbG9zZWQgPSB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUgKikgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoTm9kZSopIGNvbnN0OwogICAgICAgICAKICAgICAgICAgLy8gaGVscGVyOgogICAgICAgICBi
b29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWQ7IH0KIAogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7Ci0gICAgICAgIHZvaWQgYWRkU1ZHRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgQXR0cmlidXRlKiBhdHRyKTsK
KyAgICAgICAgdm9pZCBhZGRTVkdFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBBdHRyaWJ1dGUqKTsKICAgICB9OwotfTsKIAotbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIHN0YXRpYyBpbmxpbmUgU1ZHRWxlbWVudCAqc3ZnX2R5bmFtaWNfY2FzdChOb2Rl
ICpub2RlKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQgKnN2Z0VsZW1lbnQgPSBOVUxMOworCisgICAg
c3RhdGljIGlubGluZSBTVkdFbGVtZW50KiBzdmdfZHluYW1pY19jYXN0KE5vZGUqIG5vZGUpCisg
ICAgeworICAgICAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0gTlVMTDsKICAgICAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICBzdmdFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCAqPihub2RlKTsKKyAgICAgICAgICAgIHN2Z0VsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIHJldHVybiBzdmdFbGVt
ZW50OwogICAgIH0KLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCiAKICNlbmRpZiAvLyBT
VkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdFbGVtZW50SW1wbF9ICiAKIC8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSAqZmlyc3RDaGlsZCgpIGNvbnN0OwogICAgICAgICBT
VkdFbGVtZW50SW5zdGFuY2UgKmxhc3RDaGlsZCgpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oCShyZXZpc2lvbiAx
NTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBT
VkdFbGVtZW50SW5zdGFuY2VMaXN0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNvbnRleHQgPSAw
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlTGlzdCgpOwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxl
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgJKHJldmlzaW9uIDE1
NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEJvb2xlYW4+IG1f
ZXh0ZXJuYWw7CiAgICAgfTsKLX0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUJsZW5kRWxl
bWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tb2Rl
OwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRUJsZW5kICptX2ZpbHRlckVmZmVjdDsKICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiBtX3Zh
bHVlczsKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVDb2xvck1hdHJpeCAqbV9maWx0ZXJFZmZl
Y3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRy
PFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMTsKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVDb21w
b25lbnRUcmFuc2ZlciAqbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw3ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVm
UHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2s0OwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRUNv
bXBvc2l0ZSAqbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgLy9saWdodCBtYW5hZ2VtZW50CiAgICAgICAgIHZvaWQgdXBkYXRlTGlnaHRzKCkgY29uc3Q7
CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5p
bWF0ZWROdW1iZXI+IG1fc2NhbGU7CiAgICAgICAgIG11dGFibGUgS0NhbnZhc0ZFRGlzcGxhY2Vt
ZW50TWFwKiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwotfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmIC8vIEtTVkdfU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50SW1wbF9ICkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRURpc3Rh
bnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRURp
c3RhbnRMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIH5TVkdGRURpc3RhbnRMaWdo
dEVsZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBLQ0xpZ2h0U291cmNlICpsaWdodFNvdXJjZSgp
IGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjE7CiAgICAg
ICAgIG11dGFibGUgS0NhbnZhc0ZFRmxvb2QgKm1fZmlsdGVyRWZmZWN0OwogICAgIH07Ci19Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdGRUZ1bmNB
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVh
bCB+U1ZHRkVGdW5jQUVsZW1lbnQoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGRUZ1bmNCRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHRkVGdW5jQkVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRnVuY0JFbGVtZW50
KCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY0dFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQu
aAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNHRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIFNWR0ZFRnVuY0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogICAgICAgICB2aXJ0dWFsIH5TVkdGRUZ1bmNHRWxlbWVudCgpOwogICAgIH07Ci19OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdGRUZ1bmNSRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+
U1ZHRkVGdW5jUkVsZW1lbnQoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fc3RkRGV2aWF0aW9uWTsKICAgICAgICAgbXV0YWJsZSBL
Q2FudmFzRkVHYXVzc2lhbkJsdXIgKm1fZmlsdGVyRWZmZWN0OwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENhY2hlZEltYWdlICpt
X2NhY2hlZEltYWdlOwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRUltYWdlICptX2ZpbHRlckVm
ZmVjdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fbGltaXRpbmdDb25l
QW5nbGU7CiAgICAgICAgIAogICAgIH07Ci19CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVN
ZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
RU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVNZXJnZSAq
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmlt
YXRlZE51bWJlcj4gbV9keTsKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVPZmZzZXQgKm1fZmls
dGVyRWZmZWN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVBv
aW50TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVQ
b2ludExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIH5TVkdGRVBvaW50TGlnaHRFbGVt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgS0NMaWdodFNvdXJjZSAqbGlnaHRTb3VyY2UoKSBjb25z
dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgLy9saWdodCBtYW5hZ2VtZW50
CiAgICAgICAgIHZvaWQgdXBkYXRlTGlnaHRzKCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1
YWwgflNWR0ZFU3BvdExpZ2h0RWxlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIEtDTGlnaHRTb3Vy
Y2UgKmxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5n
PiBtX2luMTsKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVUaWxlICptX2ZpbHRlckVmZmVjdDsK
ICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
bV90eXBlOwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRVR1cmJ1bGVuY2UgKm1fZmlsdGVyRWZm
ZWN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBT
VkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV9maWx0ZXJSZXNZOwog
ICAgICAgICBLQ2FudmFzRmlsdGVyICptX2ZpbHRlcjsKICAgICB9OwotfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdB
bmltYXRlZExlbmd0aD4gbV9oZWlnaHQ7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1h
dGVkU3RyaW5nPiBtX3Jlc3VsdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwxNCBAQAogI2RlZmlu
ZSBLU1ZHX1NWR0ZpdFRvVmlld0JveEltcGxfSAogI2lmIFNWR19TVVBQT1JUCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXR0cmlidXRlOwog
ICAgIGNsYXNzIFN0cmluZ0ltcGw7Ci19OwotCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNs
YXNzIFNWR0FuaW1hdGVkUmVjdDsKICAgICBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW87CisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0OwogICAgIGNsYXNzIFNWR01hdHJpeDsK
LSAgICBjbGFzcyBTVkdGaXRUb1ZpZXdCb3gKLSAgICB7CisKKyAgICBjbGFzcyBTVkdGaXRUb1Zp
ZXdCb3ggewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRml0VG9WaWV3Qm94KCk7CiAgICAgICAg
IHZpcnR1YWwgflNWR0ZpdFRvVmlld0JveCgpOwpAQCAtNTQsOSArNDksMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRSZWN0PiBtX3ZpZXdC
b3g7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
bz4gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19T
VkdGaXRUb1ZpZXdCb3hJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NDgp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
Y2hpbGRTaG91bAogICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNoaWxkKTsKIH0KIAotfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogLy8gdmlt
OnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxT
VkdBbmltYXRlZExlbmd0aD4gbV93aWR0aDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1faGVpZ2h0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dF
bGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCAqY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEg
KmFyZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpOwogICAgIH07CiAKLSAgICBjbGFzcyBTVkdEdW1t
eUVsZW1lbnQgOiBwdWJsaWMgU1ZHR0VsZW1lbnQKLSAgICB7CisgICAgY2xhc3MgU1ZHRHVtbXlF
bGVtZW50IDogcHVibGljIFNWR0dFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0R1
bW15RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmly
dHVhbCB+U1ZHRHVtbXlFbGVtZW50KCk7CkBAIC01OSw3ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgQXRvbWljU3RyaW5nIG1fbG9jYWxOYW1lOwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2
aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gbV9ncmFkaWVudFRy
YW5zZm9ybTsKICAgICAgICAgbXV0YWJsZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAq
bV9yZXNvdXJjZTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVs
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIyICsyNiwyMCBAQAogCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZy5oIgog
Ci1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3Mg
U1ZHRWxlbWVudDsKICAgICBjbGFzcyBTVkdTdHJpbmdMaXN0OwogCiAgICAgLy8gS1NWRyBleHRl
bnNpb24KLSAgICBlbnVtIExlbmd0aE1vZGUKLSAgICB7CisgICAgZW51bSBMZW5ndGhNb2RlIHsK
ICAgICAgICAgTE1fVU5LTk9XTiA9IDAsCiAgICAgICAgIExNX1dJRFRILAogICAgICAgICBMTV9I
RUlHSFQsCiAgICAgICAgIExNX09USEVSCiAgICAgfTsKIAotICAgIGNsYXNzIFNWR0hlbHBlcgot
ICAgIHsKKyAgICBjbGFzcyBTVkdIZWxwZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IGZsb2F0IFBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50
ICp2aWV3cG9ydEVsZW1lbnQsIExlbmd0aE1vZGUgbW9kZSk7CiAKQEAgLTEwMiw5ICsxMDAsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICByZXR1cm4gdmFyaWFibGUuZ2V0KCk7CiAg
ICAgfQotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBP
UlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHSGVscGVyX0gKIAogLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBTVkdJbWFnZUxvYWRl
ciBtX2ltYWdlTG9hZGVyOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMYW5nU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMYW5nU3Bh
Y2UuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMYW5nU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDE0IEBACiAKICNpbmNsdWRlICJBdG9taWNT
dHJpbmcuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTdHJpbmdJbXBsOwot
ICAgIGNsYXNzIE1hcHBlZEF0dHJpYnV0ZTsKLX07CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5h
bWVzcGFjZSBXZWJDb3JlCi17CisgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOworICAgIGNsYXNz
IFN0cmluZ0ltcGw7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGg7CiAgICAgY2xhc3MgU1ZH
QW5pbWF0ZWRTdHJpbmc7CiAKLSAgICBjbGFzcyBTVkdMYW5nU3BhY2UKLSAgICB7CisgICAgY2xh
c3MgU1ZHTGFuZ1NwYWNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xhbmdTcGFjZSgpOwog
ICAgICAgICB2aXJ0dWFsIH5TVkdMYW5nU3BhY2UoKTsKQEAgLTU2LDkgKzUxLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIEF0b21pY1N0cmluZyBtX2xhbmc7CiAgICAgICAgIEF0b21p
Y1N0cmluZyBtX3NwYWNlOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdMYW5nU3Bh
Y2VJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmgJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE3ICsyNSwxNSBAQAogI2lmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotCiAjaW5jbHVkZSA8a3N2ZzIvc3ZnL1NWR0hlbHBlci5oPgogCi1j
bGFzcyBSZW5kZXJQYXRoOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgV2ViQ29y
ZQoteworICAgIGNsYXNzIFJlbmRlclBhdGg7CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKICAgICBj
bGFzcyBTVkdTdHlsZWRFbGVtZW50OwotICAgIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTaGFy
ZWQ8U1ZHTGVuZ3RoPgotICAgIHsKKworICAgIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTaGFy
ZWQ8U1ZHTGVuZ3RoPiB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMZW5ndGgoY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlID0gTE1fVU5LTk9XTiwgY29u
c3QgU1ZHRWxlbWVudCogdmlld3BvcnQgPSAwKTsKICAgICAgICAgdmlydHVhbCB+U1ZHTGVuZ3Ro
KCk7CkBAIC05Myw5ICs5MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBjb25zdCBT
VkdTdHlsZWRFbGVtZW50ICptX2NvbnRleHQ7CiAgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQgKm1f
dmlld3BvcnRFbGVtZW50OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdMZW5ndGhJ
bXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVu
Z3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3Qu
aAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAg
ICAgICB2b2lkIHBhcnNlKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnZhbHVlLCBjb25zdCBTVkdT
dHlsZWRFbGVtZW50ICpjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUpOwogICAgIH07Ci19OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gbV94MjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feTI7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3gyOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4gbV95MjsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpc3QuaAkocmV2aXNpb24gMTU2
NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDExICsyNywxMCBAQAogI2luY2x1ZGUgIkRPTUxpc3QuaCIKICNpbmNsdWRlIDxrc3ZnMi9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdl
YkNvcmUgeworCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBjbGFzcyBTVkdMaXN0IDogcHVi
bGljIERPTUxpc3Q8VD4KLSAgICB7CisgICAgY2xhc3MgU1ZHTGlzdCA6IHB1YmxpYyBET01MaXN0
PFQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xpc3QoY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dCAqY29udGV4dCA9IDApCiAgICAgICAgIDogRE9NTGlzdDxUPigpLCBtX2NvbnRleHQoY29udGV4
dCkge30KQEAgLTg3LDkgKzg2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJvdGVjdGVk
OgogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50ICptX2NvbnRleHQ7CiAgICAgfTsKLX07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5k
aWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0xpc3RfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMb2NhdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDEzIEBACiAj
aWYgU1ZHX1NVUFBPUlQKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgRmxvYXRS
ZWN0OwotICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdFbGVtZW50OworICAgIGNs
YXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwotICAgIGNsYXNzIFNW
R0xvY2F0YWJsZQotICAgIHsKKworICAgIGNsYXNzIFNWR0xvY2F0YWJsZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdMb2NhdGFibGUoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHTG9jYXRhYmxl
KCk7CkBAIC01MSw5ICs1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBTVkdNYXRyaXgqIGdldENUTShjb25zdCBTVkdFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBT
VkdNYXRyaXgqIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CiAgICAgfTsKLX07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYK
KyNlbmRpZiAvLyBTVkdMb2NhdGFibGVfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRl
ZEFuZ2xlPiBtX29yaWVudEFuZ2xlOwogICAgICAgICBLQ2FudmFzTWFya2VyICptX21hcmtlcjsK
ICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lv
biAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgS0NhbnZh
c01hc2tlciAqbV9tYXNrZXI7CiAgICAgICAgIGJvb2wgbV9kaXJ0eTsKICAgICB9OwotfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxMyBAQAogI2lm
IFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLQogI2luY2x1ZGUg
IlNoYXJlZC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotICAgIGNsYXNzIFNWR01hdHJpeCA6
IHB1YmxpYyBTaGFyZWQ8U1ZHTWF0cml4PgotICAgIHsgCisgICAgY2xhc3MgU1ZHTWF0cml4IDog
cHVibGljIFNoYXJlZDxTVkdNYXRyaXg+IHsgCiAgICAgcHVibGljOgogICAgICAgICBTVkdNYXRy
aXgoKTsKICAgICAgICAgU1ZHTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRv
dWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwpAQCAtMTAwLDkgKzk4LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9tYXQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAv
LyBLU1ZHX1NWR01hdHJpeEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdOdW1iZXIuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1i
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICBmbG9hdCBtX3ZhbHVlOwogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpt
X2NvbnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJl
ckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmgJ
KHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAg
ICAgdm9pZCBwYXJzZShjb25zdCBEZXByZWNhdGVkU3RyaW5nICZ2YWx1ZSwgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCAqY29udGV4dCA9IDApOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYWludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bh
aW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGFpbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgPFNWR0NvbG9yLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHUGFpbnQgOiBwdWJsaWMgU1ZH
Q29sb3IKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdQYWludCA6
IHB1YmxpYyBTVkdDb2xvciB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdQYWludCgpOwogICAg
ICAgICBTVkdQYWludChTdHJpbmdJbXBsICp1cmkpOwpAQCAtNTAsOSArNDksMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9wYWludFR5cGU7CiAgICAgICAg
IFN0cmluZyBtX3VyaTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHUGFpbnRJbXBs
X0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXJjVG8oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgcjEs
IGRvdWJsZSByMiwgZG91YmxlIGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZs
YWcsIGJvb2wgYWJzID0gdHJ1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdDbG9zZVBhdGgo
KTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWcuaAkocmV2aXNpb24gMTU2
NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0FyYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhdGhTZWdBcmMuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYXRoU2VnQXJjLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBib29sIG1fbGFyZ2VBcmNGbGFnIDogMTsKICAg
ICAgICAgYm9vbCBtX3N3ZWVwRmxhZyA6IDE7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhT
ZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiWiI7IH0KICAgICAgICAgdmlydHVhbCBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiAiWiI7IH0KICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaAkocmV2aXNpb24g
MTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAg
ICBkb3VibGUgbV94MjsKICAgICAgICAgZG91YmxlIG1feTI7CiAgICAgfTsKLX07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgJ
KHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIGRvdWJsZSBtX3gyOwogICAgICAgICBkb3VibGUgbV95MjsKICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYy5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgZG91YmxlIG1feDE7CiAgICAgICAgIGRvdWJsZSBtX3kx
OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1Ntb290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBkb3VibGUg
bV94OwogICAgICAgICBkb3VibGUgbV95OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYXRoU2VnTGluZXRvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUGF0aFNlZ0xpbmV0by5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1BhdGhTZWdMaW5ldG8uaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBkb3VibGUgbV94OwogICAgICAgICBkb3VibGUgbV95
OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdM
aW5ldG9Ib3Jpem9udGFsLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIGRvdWJsZSBtX3g7
CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaW5ldG9W
ZXJ0aWNhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgZG91YmxlIG1feTsKICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHUGF0aFNlZ0xp
c3QoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCA9IDApOwogICAgICAgICB2aXJ0dWFs
IH5TVkdQYXRoU2VnTGlzdCgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdQYXRoU2VnTW92ZXRvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0aFNlZ01vdmV0by5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BhdGhTZWdNb3ZldG8uaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICBkb3VibGUgbV94OwogICAgICAgICBkb3VibGUgbV95OwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlz
aW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZvaWQgZHJhd1BhdHRlcm5Db250ZW50SW50b1RpbGUoY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQg
KnRhcmdldCwgY29uc3QgSW50U2l6ZSAmbmV3U2l6ZSwgS0NhbnZhc01hdHJpeCBwYXR0ZXJuVHJh
bnNmb3JtTWF0cml4KSBjb25zdDsKICAgICAgICAgdm9pZCBub3RpZnlDbGllbnRzVG9SZXBhaW50
KCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9pbnQuaAkocmV2aXNpb24g
MTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCAqbV9jb250ZXh0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQb2ludExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
b2ludExpc3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2lu
dExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBTVkdQb2ludExpc3QoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCA9
IDApOwogICAgICAgICB2aXJ0dWFsIH5TVkdQb2ludExpc3QoKTsKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnUG9seVRv
KGRvdWJsZSB4MSwgZG91YmxlIHkxLCBpbnQgbnIpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgS0NhbnZh
c1BhdGgqIHRvUGF0aERhdGEoKSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIEtDYW52YXNQYXRoKiB0
b1BhdGhEYXRhKCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwx
NyArMjYsMTMgQEAKIAogI2luY2x1ZGUgIlNoYXJlZC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQot
ewotICAgIGNsYXNzIFN0cmluZ0ltcGw7Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1l
c3BhY2UgV2ViQ29yZQoteworICAgIGNsYXNzIFN0cmluZ0ltcGw7CiAgICAgY2xhc3MgU1ZHTWF0
cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbyA6IHB1YmxpYyBTaGFyZWQ8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4KLSAgICB7
IAorCisgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyA6IHB1YmxpYyBTaGFyZWQ8U1ZH
UHJlc2VydmVBc3BlY3RSYXRpbz4geyAKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8oY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCk7CiAgICAgICAgIHZp
cnR1YWwgflNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsKQEAgLTYxLDkgKzU3LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICAgICAgICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqbV9jb250ZXh0
OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvSW1w
bF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX2Z4OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4gbV9meTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3QuaAkocmV2aXNpb24gMTU2
NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRF
bGVtZW50ICptX2NvbnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4OwogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeTsKICAgICB9OwotfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3
ICsxMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBib29sIG1fdXNlQ3VycmVudFZp
ZXc7CiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIG1fdGltZVNjaGVkdWxlcjsKICAgICB9OwotfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU2V0RWxl
bWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NldEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgIHByaXZhdGU6CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgbV9zYXZlZFRvOwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAg
IG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBtX29mZnNldDsKICAgICB9OwotfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RyaW5nTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEw
ICsyNiw5IEBACiAKICNpbmNsdWRlICJTVkdMaXN0LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17
Ci0gICAgY2xhc3MgU1ZHU3RyaW5nTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFN0cmluZ0ltcGw+Ci0g
ICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHU3RyaW5nTGlzdCA6IHB1
YmxpYyBTVkdMaXN0PFN0cmluZ0ltcGw+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1N0cmlu
Z0xpc3QoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCA9IDApOwogICAgICAgICB2aXJ0
dWFsIH5TVkdTdHJpbmdMaXN0KCk7CkBAIC0zNyw5ICszNiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICAvLyBJbnRlcm5hbAogICAgICAgICB2b2lkIHJlc2V0KGNvbnN0IERlcHJlY2F0
ZWRTdHJpbmcgJnN0cik7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1N0cmluZ0xp
c3RJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsYWJsZS5o
CShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyOCBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAg
IGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBDU1NWYWx1ZTsKICAgICBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUKLXsKICAgICBjbGFzcyBTVkdBbmlt
YXRlZFN0cmluZzsKIAotICAgIGNsYXNzIFNWR1N0eWxhYmxlCi0gICAgeworICAgIGNsYXNzIFNW
R1N0eWxhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1N0eWxhYmxlKCk7CiAgICAgICAg
IHZpcnR1YWwgflNWR1N0eWxhYmxlKCk7CiAKICAgICAgICAgLy8gJ1NWR1N0eWxhYmxlJyBmdW5j
dGlvbnMKLSAgICAgICAgdmlydHVhbCBTVkdBbmltYXRlZFN0cmluZyAqY2xhc3NOYW1lKCkgY29u
c3QgPSAwOworICAgICAgICB2aXJ0dWFsIFNWR0FuaW1hdGVkU3RyaW5nKiBjbGFzc05hbWUoKSBj
b25zdCA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSgp
ID0gMDsKLSAgICAgICAgdmlydHVhbCBDU1NWYWx1ZSAqZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KFN0cmluZ0ltcGwgKm5hbWUpID0gMDsKKyAgICAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCBDU1NWYWx1ZSogZ2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKFN0cmluZ0ltcGwqIG5hbWUpID0gMDsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlm
IC8vIEtTVkdfU1ZHU3R5bGFibGVJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwx
MSBAQAogCiAjaW5jbHVkZSA8U1ZHRWxlbWVudC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewor
bmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKLX07CiAKLW5h
bWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHU3R5bGVFbGVtZW50IDogcHVibGljIFNW
R0VsZW1lbnQKLSAgICB7CisgICAgY2xhc3MgU1ZHU3R5bGVFbGVtZW50IDogcHVibGljIFNWR0Vs
ZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsZUVsZW1lbnQo
KTsKQEAgLTY0LDkgKzYwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiBtX3NoZWV0OwogICAgICAgICBib29sIG1fbG9hZGluZzsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNl
bmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHU3R5bGVFbGVtZW50SW1wbF9ICiAKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCwyMyArMjQsMjIgQEAKICNkZWZpbmUgS1NWR19TVkdTdHlsZWRFbGVtZW50SW1w
bF9ICiAjaWYgU1ZHX1NVUFBPUlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1N0eWxhYmxlLmgiCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNQYXRoLmg+Ci0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBSZW5kZXJQYXRoOwotICAgIGNsYXNzIEtSZW5k
ZXJpbmdEZXZpY2U7Ci0gICAgY2xhc3MgS0NhbnZhc1Jlc291cmNlOwotICAgIGNsYXNzIEtDYW52
YXNSZW5kZXJpbmdTdHlsZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CisgICAgY2xhc3MgS0NhbnZhc1JlbmRlcmluZ1N0eWxlOworICAgIGNs
YXNzIEtDYW52YXNSZXNvdXJjZTsKKyAgICBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlOworICAgIGNs
YXNzIFJlbmRlclBhdGg7CiAgICAgY2xhc3MgUmVuZGVyVmlldzsKLSAgICBjbGFzcyBTVkdTdHls
ZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQKLSAgICB7CisKKyAgICBjbGFzcyBTVkdTdHls
ZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAg
dmlydHVhbCB+U1ZHU3R5bGVkRWxlbWVudCgpOwpAQCAtNDgsMjUgKzQ3LDI1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogICAgICAgICAvLyAnU1ZHU3R5bGFibGUnIGZ1bmN0aW9ucwotICAgICAgICB2
aXJ0dWFsIFNWR0FuaW1hdGVkU3RyaW5nICpjbGFzc05hbWUoKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBTVkdBbmltYXRlZFN0cmluZyogY2xhc3NOYW1lKCkgY29uc3Q7CiAKICAgICAgICAgLy8g
VGhlc2UgbmVlZCB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIEtDYW52YXNQYXRoKiB0b1BhdGhEYXRhKCkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCAqY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpOwotICAgICAgICB2aXJ0dWFsIEtD
YW52YXNSZXNvdXJjZSAqY2FudmFzUmVzb3VyY2UoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CisgICAgICAgIHZpcnR1YWwgS0NhbnZhc1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgp
IHsgcmV0dXJuIDA7IH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKLSAgICAgICAgUmVuZGVy
VmlldyAqdmlldygpIGNvbnN0OworICAgICAgICBSZW5kZXJWaWV3KiB2aWV3KCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlICphdHRyLCBib29sIHBy
ZXNlcnZlRGVjbHMgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAogICAgICAgICAv
LyBJbWFnaW5lIHdlJ3JlIGEgPHJlY3Q+IGluc2lkZSBvZiBhIDxwYXR0ZXJuPiBzZWN0aW9uIHdp
dGggcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giCiAgICAgICAgIC8vIGFu
ZCBvdXIgJ3dpZHRoJyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDUwJS4gV2hlbiB0aGUgcGF0dGVybiBn
ZXRzIHJlZmVyZW5jZWQgaXQga25vd3MgdGhlICJiYm94IgogICAgICAgICAvLyBvZiBpdCdzIHVz
ZXIgYW5kIGhhcyB0byBwdXNoIHRoZSAiYWN0aXZlIGNsaWVudCdzIGJib3giIGFzIG5ldyBhdHRy
aWJ1dGUgY29udGV4dCB0byBhbGwgYXR0cmlidXRlcwogICAgICAgICAvLyBvZiB0aGUgJ3JlY3Qn
LiBUaGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyB0aGUgb2xkIGF0dHJpYnV0ZSBjb250ZXh0LCB0
byBiZSBhYmxlIHRvIHJlc3RvcmUgaXQuLi4KLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHls
ZWRFbGVtZW50ICpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpj
b250ZXh0KTsKKyAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBwdXNoQXR0
cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdm9pZCB1cGRhdGVDYW52YXNJdGVtKCk7IC8vIEhhbmRsZXMgInBh
dGggZGF0YSIgb2JqZWN0IGNoYW5nZXMuLi4gKG5vdCBmb3Igc3R5bGUvdHJhbnNmb3JtISkKQEAg
LTc4LDkgKzc3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIC8vIE9wdGltaXplZCB1
cGRhdGluZyBsb2dpYwogICAgICAgICBib29sIG1fdXBkYXRlVmVjdG9yaWFsIDogMTsKICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
LSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHU3R5bGVkRWxlbWVudEltcGxfSAogCiAvLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTUgKzI0LDE1IEBACiAj
ZGVmaW5lIEtTVkdfU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudEltcGxfSAogI2lmIFNWR19TVVBQ
T1JUCiAKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRh
YmxlLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBTVkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKLSAgICBj
bGFzcyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQs
IHB1YmxpYyBTVkdMb2NhdGFibGUKLSAgICB7CisKKyAgICBjbGFzcyBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsIHB1YmxpYyBTVkdMb2NhdGFibGUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudCgpOwpAQCAtNDAsMTcgKzQwLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkTG9jYXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50JyBmdW5jdGlv
bnMKLSAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50ICpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCAqZmFydGhlc3RWaWV3cG9ydEVsZW1l
bnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRF
bGVtZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94
KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4ICpnZXRDVE0oKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBTVkdNYXRyaXggKmdldFNjcmVlbkNUTSgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFNWR01hdHJpeCAqZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQgKmVsZW1l
bnQpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBTVkdNYXRyaXgqIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KikgY29u
c3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnRJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDIyICsyNywxNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAKLWNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
KyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgQXR0cmlidXRlOwogICAgIGNs
YXNzIE5vZGU7CiAgICAgY2xhc3MgU3RyaW5nSW1wbDsKLSAgICBjbGFzcyBBdHRyaWJ1dGU7Ci19
OwotCi1uYW1lc3BhY2UgV2ViQ29yZQoteworICAgIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdDsKICAgICBjbGFzcyBTVkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsK
LSAgICBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q7Ci0gICAgY2xhc3MgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCwg
cHVibGljIFNWR1RyYW5zZm9ybWFibGUKLSAgICB7CisKKyAgICBjbGFzcyBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LCBwdWJs
aWMgU1ZHVHJhbnNmb3JtYWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoKTsKQEAgLTcyLDkgKzY3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR01hdHJp
eD4gbV9sb2NhbE1hdHJpeDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0PiBtX3RyYW5zZm9ybTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBtdXRh
YmxlIGJvb2wgbV9pbnNpZGVSZW5kZXJTZWN0aW9uOwogICAgIH07Ci19OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKICAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZEF0dGFjaENoaWxkKEVsZW1lbnQgKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAg
ICB2b2lkIHVwZGF0ZVJlZmVyZW5jZWRUZXh0KCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0ICpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSk7CiAgICAgICAg
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlICpjaGlsZCkgY29uc3Q7CiAgICAg
fTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Rlc3RzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGVzdHMuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOCArMjYsMTMg
QEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAg
ICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIE1hcHBlZEF0dHJpYnV0ZTsKLX07CituYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CisgICAgY2xhc3MgTWFwcGVk
QXR0cmlidXRlOworICAgIGNsYXNzIFN0cmluZ0ltcGw7CiAgICAgY2xhc3MgU1ZHU3RyaW5nTGlz
dDsKIAotICAgIGNsYXNzIFNWR1Rlc3RzCi0gICAgeworICAgIGNsYXNzIFNWR1Rlc3RzIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNWR1Rlc3RzKCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1Rlc3Rz
KCk7CkBAIC01OCw5ICs1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxl
IFJlZlB0cjxTVkdTdHJpbmdMaXN0PiBtX2V4dGVuc2lvbnM7CiAgICAgICAgIG11dGFibGUgUmVm
UHRyPFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7CiAgICAgfTsKLX07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRp
ZiAvLyBLU1ZHX1NWR1Rlc3RzSW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fdGV4dExlbmd0aDsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9sZW5ndGhBZGp1c3Q7CiAgICAgfTsKLX07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw3ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNW
R01hdHJpeD4gbV9sb2NhbE1hdHJpeDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0PiBtX3RyYW5zZm9ybTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gMTU2
NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R5OwogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlckxpc3Q+IG1fcm90YXRlOwogICAgIH07Ci19Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2NDgpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lv
biAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRy
PFNWR01hdHJpeD4gbV9tYXRyaXg7CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBACiAjaW5j
bHVkZSAiU1ZHTGlzdC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogCi1uYW1lc3BhY2Ug
V2ViQ29yZQotewotICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3QgOiBwdWJsaWMgU1ZHTGlzdDxT
VkdUcmFuc2Zvcm0+Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZH
VHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFNWR1RyYW5zZm9ybT4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250
ZXh0ID0gMCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybUxpc3QoKTsKQEAgLTQxLDkg
KzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIC8vIEludGVybmFsIHVzZSBvbmx5
CiAgICAgICAgIFNWR1RyYW5zZm9ybSAqY29uY2F0ZW5hdGUoKSBjb25zdDsKICAgICB9OwotfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRp
ZgorI2VuZGlmIC8vIEtTVkdfU1ZHVHJhbnNmb3JtTGlzdEltcGxfSAogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAxNTY0
OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMzYgKzI2LDMzIEBACiAKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKIAotY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgTm9k
ZTsKKyAgICAKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgQXRvbWljU3Ry
aW5nOwogICAgIGNsYXNzIEF0dHJpYnV0ZTsKLX07Ci0KLW5hbWVzcGFjZSBXZWJDb3JlCi17Cisg
ICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiAgICAg
Y2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7Ci0gICAgY2xhc3Mg
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwotICAgIGNsYXNzIFNWR1RyYW5zZm9ybWFibGUgOiBw
dWJsaWMgU1ZHTG9jYXRhYmxlCi0gICAgeworCisgICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6
IHB1YmxpYyBTVkdMb2NhdGFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVHJhbnNmb3Jt
YWJsZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1hYmxlKCk7CiAKICAgICAgICAg
Ly8gJ1NWR1RyYW5zZm9ybWFibGUnIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdCAqdHJhbnNmb3JtKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFs
IFNWR01hdHJpeCAqbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm0oKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgU1ZHTWF0cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKICAgICAgICAgCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0ICps
b2NhbFRyYW5zZm9ybXMpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvY2FsVHJh
bnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKSA9IDA7CiAgICAgICAgIAotICAgICAgICBzdGF0aWMg
dm9pZCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0ICpsaXN0LCBjb25z
dCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhcnNlVHJh
bnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3QqLCBjb25zdCBBdG9taWNTdHJpbmcmIHRy
YW5zZm9ybSk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1RyYW5zZm9ybWFibGVJ
bXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmgJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE3ICsyNiwxMiBAQAogCiAjaW5jbHVkZSAiRGVw
cmVjYXRlZFN0cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIE1hcHBl
ZEF0dHJpYnV0ZTsKLX07CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
Ci17CisgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwogICAgIGNsYXNzIFNWR0FuaW1hdGVkU3Ry
aW5nOwogCi0gICAgY2xhc3MgU1ZHVVJJUmVmZXJlbmNlCi0gICAgeworICAgIGNsYXNzIFNWR1VS
SVJlZmVyZW5jZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdVUklSZWZlcmVuY2UoKTsKICAg
ICAgICAgdmlydHVhbCB+U1ZHVVJJUmVmZXJlbmNlKCk7CkBAIC01Miw5ICs0NywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2hyZWY7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1VS
SVJlZmVyZW5jZUltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VXNlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aDsK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0OwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdWaWV3RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAg
ICAgIG11dGFibGUgUmVmUHRyPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldDsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1pvb21BbmRQYW4uaAkocmV2aXNpb24gMTU2NDgpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdab29tQW5kUGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDE1ICsyNCwxMSBAQAogI2RlZmluZSBLU1ZHX1NWR1pvb21BbmRQYW5JbXBsX0gKICNpZiBTVkdf
U1VQUE9SVAogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAg
ICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwotfTsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAg
ICBjbGFzcyBTVkdab29tQW5kUGFuCi0gICAgeworICAgIGNsYXNzIFNWR1pvb21BbmRQYW4gewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHWm9vbUFuZFBhbigpOwogICAgICAgICB2aXJ0dWFsIH5T
Vkdab29tQW5kUGFuKCk7CkBAIC00Niw5ICs0MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
IHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fem9vbUFuZFBhbjsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNl
bmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHWm9vbUFuZFBhbkltcGxfSAogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9zdmdwYXRocGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvc3ZncGF0aHBhcnNlci5oCShyZXZpc2lvbiAxNTY0OCkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL3N2Z3BhdGhwYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NyArNjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
Y2FsY3VsYXRlQXJjKCBib29sIHJlbGF0aXZlLCBkb3VibGUgJmN1cngsIGRvdWJsZSAmY3VyeSwg
ZG91YmxlIGFuZ2xlLCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSByMSwgZG91YmxlIHIyLCBi
b29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcgKTsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJ
KHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiRWRpdEFjdGlvbi5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUg
IlNjcm9sbEJhci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlICJTY3JvbGxCYXIuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNp
bmNsdWRlICJUZXh0R3JhbnVsYXJpdHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIEpTVmFs
dWU7CkBAIC04NywxMSArODcsMTAgQEAgZW51bSBPYmplY3RDb250ZW50VHlwZSB7CiAgICAgT2Jq
ZWN0Q29udGVudE5vbmUsCiAgICAgT2JqZWN0Q29udGVudEltYWdlLAogICAgIE9iamVjdENvbnRl
bnRGcmFtZSwKLSAgICBPYmplY3RDb250ZW50UGx1Z2luLAorICAgIE9iamVjdENvbnRlbnRQbHVn
aW4KIH07CiAKIGNsYXNzIEZyYW1lIDogcHVibGljIFNoYXJlZDxGcmFtZT4sIE5vbmNvcHlhYmxl
IHsKLQogcHVibGljOgogICBlbnVtIHsgTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24g
PSBJTlRfTUlOIH07CiAKQEAgLTgxOCw2ICs4MTcsNiBAQCBwdWJsaWM6CiAgIEZyYW1lUHJpdmF0
ZSogZDsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYg
Ly8gRnJhbWVfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9BZmZpbmVUcmFuc2Zvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0FmZmluZVRyYW5zZm9ybS5oCShyZXZpc2lvbiAx
NTY0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQWZmaW5lVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDggKzc4LDggQEAgcHJpdmF0ZToKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3Ry
YW5zZm9ybTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIF9f
QVBQTEVfXwogCi0jZW5kaWYKKyNlbmRpZiAvLyBBZmZpbmVUcmFuc2Zvcm1faApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9Gb250Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vRm9udENhY2hlLmNwcAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0Zv
bnRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIwICsyOCwyMyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udFBsYXRm
b3JtRGF0YS5oIgorCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xp
c3QuaCIKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkKLXsK
K3N0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkgewogICAgIEZvbnRQbGF0Zm9ybURhdGFD
YWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IEF0b21pY1N0cmluZygpLCB1bnNp
Z25lZCBzaXplID0gMCwgYm9vbCBib2xkID0gZmFsc2UsIGJvb2wgaXRhbGljID0gZmFsc2UpCi0g
ICAgOm1fZmFtaWx5KGZhbWlseSksIG1fc2l6ZShzaXplKSwgbV9ib2xkKGJvbGQpLCBtX2l0YWxp
YyhpdGFsaWMpCi0gICAge30KKyAgICAgICAgOiBtX2ZhbWlseShmYW1pbHkpCisgICAgICAgICwg
bV9zaXplKHNpemUpCisgICAgICAgICwgbV9ib2xkKGJvbGQpCisgICAgICAgICwgbV9pdGFsaWMo
aXRhbGljKQorICAgIHsKKyAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBs
YXRmb3JtRGF0YUNhY2hlS2V5JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0yMzgsNCArMjQxLDQg
QEAgY29uc3QgRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGEoYwogICAgIHJldHVybiBn
ZXRDYWNoZWRGb250RGF0YShyZXN1bHQpOwogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5jcHAJKHJl
dmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDE4ICsyOCwxNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udERhdGEuaCIKIAogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZvbnREYXRhOjpGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmKQotOm1fZm9u
dChmKSwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSksCi0gbV9zbWFsbENhcHNGb250RGF0YSgw
KQotIHsgICAgCi0gICAgbV9mb250ID0gZjsKKyAgICA6IG1fZm9udChmKQorICAgICwgbV90cmVh
dEFzRml4ZWRQaXRjaChmYWxzZSkKKyAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKK3sgICAg
CiAgICAgcGxhdGZvcm1Jbml0KCk7CiAgICAgCiAgICAgLy8gTmFzdHkgaGFjayB0byBkZXRlcm1p
bmUgaWYgd2Ugc2hvdWxkIHJvdW5kIG9yIGNlaWwgc3BhY2Ugd2lkdGhzLgpAQCAtNzIsNCArNzEs
NCBAQCBmbG9hdCBGb250RGF0YTo6d2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwCiAgICAgcmV0dXJu
IHdpZHRoOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL0ZvbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0
YS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vRm9udERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDkgQEAgY2xhc3MgV2lkdGhNYXA7CiAKIGVudW0gUGl0
Y2ggeyBVbmtub3duUGl0Y2gsIEZpeGVkUGl0Y2gsIFZhcmlhYmxlUGl0Y2ggfTsKIAotY2xhc3Mg
Rm9udERhdGEgOiBOb25jb3B5YWJsZQoteworY2xhc3MgRm9udERhdGEgOiBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6Ci0gICAgRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZik7CisgICAg
Rm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogICAgIH5Gb250RGF0YSgpOwogCiBw
dWJsaWM6CkBAIC0xMTcsNiArMTE2LDYgQEAgcHVibGljOgogI2VuZGlmCiB9OwogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEZPTlREQVRBX0gKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vVGV4dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vVGV4dEJveC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vVGV4dEJv
eC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFRleHRCb3ggOiBwdWJs
aWMgU2Nyb2xsVmlldyB7CiAgICAgfSBXcmFwU3R5bGU7CiAKICAgICB0eXBlZGVmIGVudW0gewot
ICAgICAgICBQbGFpblRleHQsCisgICAgICAgIFBsYWluVGV4dAogICAgIH0gVGV4dEZvcm1hdDsK
IAogICAgIFRleHRCb3goV2lkZ2V0KiBwYXJlbnQpOwpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBU
ZXh0Qm94IDogcHVibGljIFNjcm9sbFZpZXcgewogICAgIHZvaWQgc2V0TGluZUhlaWdodChpbnQg
bGluZUhlaWdodCk7CiAKICAgICB2b2lkIHNldEN1cnNvclBvc2l0aW9uKGludCwgaW50KTsKLSAg
ICB2b2lkIGdldEN1cnNvclBvc2l0aW9uKGludCAqLCBpbnQgKikgY29uc3Q7CisgICAgdm9pZCBn
ZXRDdXJzb3JQb3NpdGlvbihpbnQqLCBpbnQqKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Rm9udChj
b25zdCBGb250Jik7CiAKQEAgLTk0LDYgKzk0LDYgQEAgY2xhc3MgVGV4dEJveCA6IHB1YmxpYyBT
Y3JvbGxWaWV3IHsKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tzRGVzY2VuZGFudHNGb3JGb2N1cygp
IGNvbnN0OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLyogVGV4
dEJveF9oICovCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlNoYXJlZFRpbWVyLmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgogI2luY2x1ZGUg
PG1hdGguaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTI1OCw3ICsyNTksNyBAQCBpbmxpbmUgdm9pZCBU
aW1lckJhc2U6OmhlYXBQb3AoKQogewogICAgIC8vIFRlbXBvcmFyaWx5IGZvcmNlIHRoaXMgdGlt
ZXIgdG8gaGF2ZSB0aGUgbWluaW11bSBrZXkgc28gd2UgY2FuIHBvcCBpdC4KICAgICBkb3VibGUg
ZmlyZVRpbWUgPSBtX25leHRGaXJlVGltZTsKLSAgICBtX25leHRGaXJlVGltZSA9IC1IVUdFX1ZB
TDsKKyAgICBtX25leHRGaXJlVGltZSA9IC1udW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsK
ICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBoZWFwUG9wTWluKCk7CiAgICAgbV9uZXh0Rmly
ZVRpbWUgPSBmaXJlVGltZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRDYWNoZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250Q2FjaGVNYWMubW0J
KHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udENhY2hlTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsMTUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJGb250Q2FjaGUuaCIKLSNpbXBvcnQgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKwog
I2ltcG9ydCAiRm9udC5oIgotI2ltcG9ydCAiV2ViRm9udENhY2hlLmgiCi0jaW1wb3J0ICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW1w
b3J0ICJMaXN0Qm94LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3RyaW5nVHJ1bmNhdG9yLmgiCisjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXZWJGb250Q2FjaGUuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJv
b2wgZ2V0QXBwRGVmYXVsdFZhbHVlKENGU3RyaW5nUmVmIGtleSwgaW50ICp2KQogewpAQCAtMjIy
LDQgKzIyMiw0IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvR2x5cGhNYXBN
YWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0dseXBoTWFwTWFjLmNw
cAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9HbHlwaE1hcE1hYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiR2x5cGhNYXAuaCIKKwogI2luY2x1ZGUgIkZvbnREYXRhLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewor
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEdseXBoTWFwOjpmaWxsUGFnZShHbHlwaFBhZ2Uq
IHBhZ2UsIFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRm9udERh
dGEqIGZvbnREYXRhKQogewpAQCAtNjUsNCArNjUsNCBAQCBib29sIEdseXBoTWFwOjpmaWxsUGFn
ZShHbHlwaFBhZ2UqIHBhZ2UsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLX0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViRm9udENhY2hlLm1tCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkZvbnRDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTEgQEAK
ICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJGb250
Q2FjaGUuaCIKIAorI2ltcG9ydCA8bWF0aC5oPgorCiAjZGVmaW5lIFNZTlRIRVNJWkVEX0ZPTlRf
VFJBSVRTIChOU0JvbGRGb250TWFzayB8IE5TSXRhbGljRm9udE1hc2spCiAKICNkZWZpbmUgSU1Q
T1JUQU5UX0ZPTlRfVFJBSVRTICgwIFwKQEAgLTg2LDggKzg5LDggQEAgc3RhdGljIEJPT0wgYmV0
dGVyQ2hvaWNlKE5TRm9udFRyYWl0TWFzawogICAgIGludCBjaG9zZW5XZWlnaHREZWx0YSA9IGNo
b3NlbldlaWdodCAtIGRlc2lyZWRXZWlnaHQ7CiAgICAgaW50IGNhbmRpZGF0ZVdlaWdodERlbHRh
ID0gY2FuZGlkYXRlV2VpZ2h0IC0gZGVzaXJlZFdlaWdodDsKICAgICAKLSAgICBpbnQgY2hvc2Vu
V2VpZ2h0RGVsdGFNYWduaXR1ZGUgPSBBQlMoY2hvc2VuV2VpZ2h0RGVsdGEpOwotICAgIGludCBj
YW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVkZSA9IEFCUyhjYW5kaWRhdGVXZWlnaHREZWx0YSk7
CisgICAgaW50IGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlID0gYWJzKGNob3NlbldlaWdodERl
bHRhKTsKKyAgICBpbnQgY2FuZGlkYXRlV2VpZ2h0RGVsdGFNYWduaXR1ZGUgPSBhYnMoY2FuZGlk
YXRlV2VpZ2h0RGVsdGEpOwogICAgIAogICAgIC8vIFNtYWxsZXIgbWFnbml0dWRlIHdpbnMuCiAg
ICAgLy8gSWYgYm90aCBoYXZlIHNhbWUgbWFnbml0dWRlLCB0aWUgYnJlYWtlciBpcyB0aGF0IHRo
ZSBzbWFsbGVyIHdlaWdodCB3aW5zLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRGVwcmVjYXRl
ZFJlbmRlclNlbGVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvRGVwcmVj
YXRlZFJlbmRlclNlbGVjdC5jcHAJKHJldmlzaW9uIDE1NjQ4KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDcgQEAgRGVwcmVjYXRlZFJlbmRlclNlbGVjdDo6RGVwcmVjYXRlZFJlbmRlcgogCiB2b2lkIERl
cHJlY2F0ZWRSZW5kZXJTZWxlY3Q6OnNldFdpZGdldFdyaXRpbmdEaXJlY3Rpb24oKQogewotICAg
IFRleHREaXJlY3Rpb24gZCA9IHN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCA/IFJUTCA6IExU
UjsKLSAgICBzdGF0aWNfY2FzdDxMaXN0Qm94Kj4obV93aWRnZXQpLT5zZXRXcml0aW5nRGlyZWN0
aW9uKGQpOworICAgIHN0YXRpY19jYXN0PExpc3RCb3gqPihtX3dpZGdldCktPnNldFdyaXRpbmdE
aXJlY3Rpb24oc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIERlcHJlY2F0ZWRSZW5k
ZXJTZWxlY3Q6OnNldFN0eWxlKFJlbmRlclN0eWxlKiBzKQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEyICsxOSwxNCBAQAogICogQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCiAgKi8KIAorI2lmbmRlZiBFbGxpcHNpc0JveF9ICisjZGVmaW5lIEVsbGlw
c2lzQm94X0gKKwogI2luY2x1ZGUgIklubGluZUJveC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEVsbGlwc2lzQm94IDogcHVibGljIElubGluZUJveAoteworY2xhc3MgRWxsaXBz
aXNCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKIHB1YmxpYzoKICAgICBFbGxpcHNpc0JveChSZW5k
ZXJPYmplY3QqIG9iaiwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgSW5saW5lRmxv
d0JveCogcCwKICAgICAgICAgICAgICAgICBpbnQgdywgaW50IHksIGludCBoLCBpbnQgYiwgYm9v
bCBmaXJzdExpbmUsIElubGluZUJveCogbWFya3VwQm94KQpAQCAtNDksNCArNTEsNiBAQCBwcml2
YXRlOgogICAgIElubGluZUJveCogbV9tYXJrdXBCb3g7CiB9OwogCi19ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRWxsaXBz
aXNCb3hfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJSLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMyICsyNCwyOSBA
QAogCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgUG9zaXRpb247Ci19OwotCiAvKgogICogVGhlIHdob2xlIGNsYXNzIGhlcmUgaXMgYSBo
YWNrIHRvIGdldCA8YnI+IHdvcmtpbmcsIGFzIGxvbmcgYXMgd2UgZG9uJ3QgaGF2ZSBzdXBwb3J0
IGZvcgogICogQ1NTMiA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvIGVsZW1lbnRzCiAgKi8KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyQlIgOiBwdWJsaWMgUmVuZGVyVGV4dAot
eworY2xhc3MgUG9zaXRpb247CisKK2NsYXNzIFJlbmRlckJSIDogcHVibGljIFJlbmRlclRleHQg
ewogcHVibGljOgogICAgIFJlbmRlckJSKE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCUigp
OwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpyZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
IlJlbmRlckJSIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJCUiI7IH0KICAKICAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9u
UmVjdCgpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
d2lkdGgodW5zaWduZWQgaW50IGZyb20sIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IEZvbnQgKmYs
IGludCB4cG9zKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
d2lkdGgodW5zaWduZWQgaW50IGZyb20sIHVuc2lnbmVkIGludCBsZW4sIGludCB4cG9zLCBib29s
IGZpcnN0TGluZSA9IGZhbHNlKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB1bnNp
Z25lZCB3aWR0aCh1bnNpZ25lZCAvKmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgY29uc3QgRm9u
dCosIGludCAvKnhwb3MqLykgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdW5zaWdu
ZWQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGludCAvKnhwb3Mq
LywgYm9vbCAvKmZpcnN0TGluZSA9IGZhbHNlKi8pIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAg
IHZpcnR1YWwgc2hvcnQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgYm9vbCBpc1Jvb3RMaW5l
Qm94PWZhbHNlKSBjb25zdDsKLSAgICB2aXJ0dWFsIHNob3J0IGJhc2VsaW5lUG9zaXRpb24oIGJv
b2wgZmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVCb3g9ZmFsc2UpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTdHlsZShSZW5kZXJTdHlsZSogX3N0eWxlKTsKKyAgICB2aXJ0dWFsIHNob3J0
IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNSb290TGluZUJveCA9IGZhbHNlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHNob3J0IGJhc2VsaW5lUG9zaXRpb24oYm9vbCBmaXJzdExpbmUs
IGJvb2wgaXNSb290TGluZUJveCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U3R5bGUoUmVuZGVyU3R5bGUqKTsKIAogICAgIC8vIG92ZXJyaWRlcwogICAgIHZpcnR1YWwgSW5s
aW5lQm94KiBjcmVhdGVJbmxpbmVCb3goYm9vbCwgYm9vbCwgYm9vbCBpc09ubHlSdW4gPSBmYWxz
ZSk7CkBAIC02MiwxMyArNTksMTMgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KTsKIAotICAgIHZp
cnR1YWwgSW5saW5lQm94ICppbmxpbmVCb3goaW50IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaXR5
ID0gVVBTVFJFQU0pOworICAgIHZpcnR1YWwgSW5saW5lQm94KiBpbmxpbmVCb3goaW50IG9mZnNl
dCwgRUFmZmluaXR5IGFmZmluaXR5ID0gVVBTVFJFQU0pOwogICAgIAogcHJpdmF0ZToKICAgICBt
dXRhYmxlIHNob3J0IG1fbGluZUhlaWdodDsKIAogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBSRU5ERVJfQlJfSApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUm9vdElubGluZUJv
eDsKIAogZW51bSBDYXJldFR5cGUgewogICAgIEN1cnNvckNhcmV0LAotICAgIERyYWdDYXJldCwK
KyAgICBEcmFnQ2FyZXQKIH07CiAKIGNsYXNzIFJlbmRlckJsb2NrIDogcHVibGljIFJlbmRlckZs
b3cgewpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2soTm9kZSopOwog
ICAgIHZpcnR1YWwgflJlbmRlckJsb2NrKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJl
bmRlck5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdDsKIAogICAgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJyaWRkZW4gZm9yIGlu
bGluZS1ibG9jay4KICAgICB2aXJ0dWFsIHNob3J0IGxpbmVIZWlnaHQoYm9vbCBiLCBib29sIGlz
Um9vdExpbmVCb3g9ZmFsc2UpIGNvbnN0OwpAQCAtMTE3LDkgKzExNyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKTsKICAgICBJ
bnRSZWN0IGxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAKLSAg
ICB2b2lkIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKCBib29sIHJlbGF5b3V0Q2hpbGRyZW4gKTsK
LSAgICB2b2lkIGluc2VydFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0ICpvKTsKLSAgICB2
b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0ICpvKTsKKyAgICB2b2lkIGxh
eW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CisgICAgdm9pZCBp
bnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCopOworICAgIHZvaWQgcmVtb3ZlUG9z
aXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUG9z
aXRpb25lZE9iamVjdHMoUmVuZGVyQmxvY2sqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlv
bkxpc3RNYXJrZXIoKSB7IH0KQEAgLTEyOCw4ICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGxheW91dExlZ2VuZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIHsgcmV0
dXJuIDA7IH07CiAgICAgCiAgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmb2xsb3dp
bmcgZnVuY3Rpb25zIGlzIGluIGJpZGkuY3BwCi0gICAgdm9pZCBiaWRpUmVvcmRlckxpbmUoY29u
c3QgQmlkaUl0ZXJhdG9yJiBzdGFydCwgY29uc3QgQmlkaUl0ZXJhdG9yJiBlbmQsIEJpZGlTdGF0
ZSAmYmlkaSApOwotICAgIFJvb3RJbmxpbmVCb3gqIGRldGVybWluZVN0YXJ0UG9zaXRpb24oYm9v
bCBmdWxsTGF5b3V0LCBCaWRpSXRlcmF0b3ImIHN0YXJ0LCBCaWRpU3RhdGUgJmJpZGkpOworICAg
IHZvaWQgYmlkaVJlb3JkZXJMaW5lKGNvbnN0IEJpZGlJdGVyYXRvciYgc3RhcnQsIGNvbnN0IEJp
ZGlJdGVyYXRvciYgZW5kLCBCaWRpU3RhdGUmIGJpZGkpOworICAgIFJvb3RJbmxpbmVCb3gqIGRl
dGVybWluZVN0YXJ0UG9zaXRpb24oYm9vbCBmdWxsTGF5b3V0LCBCaWRpSXRlcmF0b3ImIHN0YXJ0
LCBCaWRpU3RhdGUmIGJpZGkpOwogICAgIFJvb3RJbmxpbmVCb3gqIGRldGVybWluZUVuZFBvc2l0
aW9uKFJvb3RJbmxpbmVCb3gqIHN0YXJ0Qm94LCBCaWRpSXRlcmF0b3ImIGNsZWFuTGluZVN0YXJ0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlTdGF0dXMmIGNs
ZWFuTGluZUJpZGlTdGF0dXMsIEJpZGlDb250ZXh0KiYgY2xlYW5MaW5lQmlkaUNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiB5UG9zKTsKQEAgLTEz
OSw5ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgaW50IHNraXBXaGl0ZXNwYWNlKEJpZGlJdGVyYXRv
ciYgLCBCaWRpU3RhdGUgJik7CiAgICAgQmlkaUl0ZXJhdG9yIGZpbmROZXh0TGluZUJyZWFrKEJp
ZGlJdGVyYXRvciYgc3RhcnQsIEJpZGlTdGF0ZSAmaW5mbyApOwogICAgIFJvb3RJbmxpbmVCb3gq
IGNvbnN0cnVjdExpbmUoY29uc3QgQmlkaUl0ZXJhdG9yJiBzdGFydCwgY29uc3QgQmlkaUl0ZXJh
dG9yJiBlbmQpOwotICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmpl
Y3QqIG9iaik7CisgICAgSW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVj
dCopOwogICAgIGludCB0YWJXaWR0aChib29sIGlzV2hpdGVzcGFjZVByZSk7Ci0gICAgdm9pZCBj
b21wdXRlSG9yaXpvbnRhbFBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwg
QmlkaVN0YXRlICZiaWRpKTsKKyAgICB2b2lkIGNvbXB1dGVIb3Jpem9udGFsUG9zaXRpb25zRm9y
TGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpU3RhdGUmIGJpZGkpOwogICAgIHZvaWQg
Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94KTsK
ICAgICB2b2lkIGNoZWNrTGluZXNGb3JPdmVyZmxvdygpOwogICAgIHZvaWQgZGVsZXRlRWxsaXBz
aXNMaW5lQm94ZXMoKTsKQEAgLTQ0Niw2ICs0NDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1f
dGFiV2lkdGg7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gUkVOREVSX0JMT0NLX0gKKyNlbmRpZiAvLyBSZW5kZXJCbG9ja19ICkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHJldmlzaW9uIDE1NjQ4KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAt
MjAsMTUgKzIwLDE0IEBACiAgKgogICovCiAKLSNpZm5kZWYgUkVOREVSX0ZMRVhJQkxFX0JPWF9I
Ci0jZGVmaW5lIFJFTkRFUl9GTEVYSUJMRV9CT1hfSAorI2lmbmRlZiBSZW5kZXJGbGV4aWJsZUJv
eF9ICisjZGVmaW5lIFJlbmRlckZsZXhpYmxlQm94X0gKIAogI2luY2x1ZGUgIlJlbmRlckJsb2Nr
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBw
dWJsaWMgUmVuZGVyQmxvY2sKLXsKK2NsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJl
bmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBSZW5kZXJGbGV4aWJsZUJveChOb2RlKik7CiAgICAg
dmlydHVhbCB+UmVuZGVyRmxleGlibGVCb3goKTsKQEAgLTQ0LDEzICs0MywxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRmxleGlibGVCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzRmxleGluZ0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9m
bGV4aW5nQ2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJldGNoaW5nQ2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBtX3N0cmV0Y2hpbmdDaGlsZHJlbjsgfQotICAgIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciAqcmVuZGVyTmFtZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Q7CiAKICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgaW50IHgsIGludCB5KTsKIAogcHJvdGVjdGVkOgotICAgIGludCBhbGxvd2Vk
Q2hpbGRGbGV4KFJlbmRlck9iamVjdCogY2hpbGQsIGJvb2wgZXhwYW5kaW5nLCB1bnNpZ25lZCBp
bnQgZ3JvdXApOworICAgIGludCBhbGxvd2VkQ2hpbGRGbGV4KFJlbmRlck9iamVjdCogY2hpbGQs
IGJvb2wgZXhwYW5kaW5nLCB1bnNpZ25lZCBncm91cCk7CiAKICAgICBib29sIGhhc011bHRpcGxl
TGluZXMoKSB7IHJldHVybiBzdHlsZSgpLT5ib3hMaW5lcygpID09IE1VTFRJUExFOyB9CiAgICAg
Ym9vbCBpc1ZlcnRpY2FsKCkgeyByZXR1cm4gc3R5bGUoKS0+Ym94T3JpZW50KCkgPT0gVkVSVElD
QUw7IH0KQEAgLTYwLDkgKzU5LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9zdHJldGNoaW5n
Q2hpbGRyZW4gOiAxOwogfTsKIAotfTsgLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBSRU5ERVJf
RkxFWElCTEVfQk9YX0gKLQotCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBS
ZW5kZXJGbGV4aWJsZUJveF9ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5oCShyZXZpc2lvbiAx
NTY0OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsOCArMjIsOCBAQAogICoKICAqLwogCi0jaWZuZGVmIFJFTkRFUl9GTE9XX0gKLSNkZWZp
bmUgUkVOREVSX0ZMT1dfSAorI2lmbmRlZiBSZW5kZXJGbG93X0gKKyNkZWZpbmUgUmVuZGVyRmxv
d19ICiAKICNpbmNsdWRlICJSZW5kZXJDb250YWluZXIuaCIKIApAQCAtMzgsMTIgKzM4LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAqIGJlaGF2aW91ciBvZiB0ZXh0LCBzbyBwdXR0aW5nIHRo
ZSBsYXlvdXRpbmcgcm91dGluZXMgaW4gdGhlIGlubGluZQogICogZWxlbWVudHMgaXMgaW1wb3Nz
aWJsZS4KICAqLwotY2xhc3MgUmVuZGVyRmxvdyA6IHB1YmxpYyBSZW5kZXJDb250YWluZXIKLXsK
K2NsYXNzIFJlbmRlckZsb3cgOiBwdWJsaWMgUmVuZGVyQ29udGFpbmVyIHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJGbG93KE5vZGUqIG5vZGUpCi0gICAgICA6IFJlbmRlckNvbnRhaW5lcihub2RlKSwg
bV9saW5lSGVpZ2h0KC0xKQotICAgIHsgbV9jb250aW51YXRpb24gPSAwOyBtX2ZpcnN0TGluZUJv
eCA9IDA7IG1fbGFzdExpbmVCb3ggPSAwO30KKyAgICAgICAgOiBSZW5kZXJDb250YWluZXIobm9k
ZSkKKyAgICAgICAgLCBtX2NvbnRpbnVhdGlvbigwKQorICAgICAgICAsIG1fZmlyc3RMaW5lQm94
KDApCisgICAgICAgICwgbV9sYXN0TGluZUJveCgwKQorICAgICAgICAsIG1fbGluZUhlaWdodCgt
MSkKKyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCBSZW5kZXJGbG93KiBjb250aW51YXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvbnRpbnVhdGlvbjsgfQogICAgIHZvaWQgc2V0Q29udGludWF0
aW9uKFJlbmRlckZsb3cqIGMpIHsgbV9jb250aW51YXRpb24gPSBjOyB9CkBAIC0xMDMsNyArMTA3
LDYgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgc2hvcnQgbV9saW5lSGVpZ2h0OwogfTsKIAot
ICAgIAotfTsgLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisj
ZW5kaWYgLy8gUmVuZGVyRmxvd19ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNTY0OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNCArNTYsNCBAQCB2b2lkIFJlbmRlckZyYW1lOjp2aWV3Q2xlYXJl
ZCgpCiAgICAgfQogfQogCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9iaWRpLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0aGUgbm9y
bWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCosIHNpemVfdCk7CiAKLXByaXZhdGU6CisgICAgcHJpdmF0ZToKICAgICAgICAgLy8g
VGhlIG5vcm1hbCBvcGVyYXRvciBuZXcgaXMgZGlzYWxsb3dlZC4KICAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCkgdGhyb3coKTsKIAotcHVibGljOgorICAgIHB1YmxpYzoKICAgICAg
ICAgaW50IHN0YXJ0OwogICAgICAgICBpbnQgc3RvcDsKIApAQCAtMTE0LDYgKzExNCw2IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQmlkaUl0ZXJhdG9yOwogICAgIHN0cnVjdCBCaWRpU3RhdGU7CiAK
LX07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEJJRElfSApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAkocmV2aXNpb24gMTU2NDgpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDQgKzcy
LDQgQEAgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbihjb25zdCBVQ2hhciogcwogICAgIHJldHVy
biBpOwogfQogCi19OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY2NikKKysr
IFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwNi0w
Ny0yOCAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODAKKyAgICAgICAgICBBZG9w
dCBwZWRhbnRpYyBjaGFuZ2VzIGZyb20gdGhlIFVuaXR5IHByb2plY3QgdG8gaW1wcm92ZSAKKyAg
ICAgICAgICBjcm9zcy1jb21waWxlciBjb21wYXRhYmlsaXR5CisKKyAgICAgICAgICBDaGFuZ2Vz
IGluY2x1ZGU6CisgICAgICAgICAgKiBBZGRpbmcgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBlbmQg
b2YgdGhlIGZpbGUuCisgICAgICAgICAgKiBUdXJuaW5nIG9uIGdjYyB3YXJuaW5nIGZvciBtaXNz
aW5nIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiBhIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAoR0ND
X1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FIGluIFhjb2RlLCAtV25ld2xpbmUgaW4gZ2NjKS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUmVzb3VyY2VQcml2YXRlLmg6CisKIDIwMDYtMDctMjUgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWosIGlu
c3BpcmVkIGJ5IEpvaG4uCkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw2ICsxODcxLDcgQEAKIAkJCQlHQ0NfUFJF
Q09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1Mg
PSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RP
UiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtMTkxMCw2
ICsxOTExLDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJ
CUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNf
RVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsK
IAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dB
Uk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC40OwpAQCAtMTk0OSw2ICsxOTUxLDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9Q
UkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJ
CQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RP
VFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsK
IAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlJlc291cmNl
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlJlc291cmNlUHJpdmF0
ZS5oCShyZXZpc2lvbiAxNTY0OCkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlJlc291cmNlUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw0ICs1MCw0IEBACiAtIChOU1VSTFJlc3BvbnNlICop
X3Jlc3BvbnNlOwogLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWU7CiAKLUBlbmQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCitAZW5kCg==
</data>
<flag name="review"
          id="2987"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9757</attachid>
            <date>2006-07-29 14:28:10 -0700</date>
            <delta_ts>2006-07-29 15:37:21 -0700</delta_ts>
            <desc>patch 4</desc>
            <filename>pedantic4.diff</filename>
            <type>text/plain</type>
            <size>210646</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjkzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMDYtMDctMjkgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAgQWRvcHQgcGVkYW50aWMgY2hh
bmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCisgICAgICAgICAgY3Jvc3Mt
Y29tcGlsZXIgY29tcGF0aWJpbGl0eQorCisgICAgICAgICAgQ2hhbmdlcyBpbmNsdWRlOgorICAg
ICAgICAgICogUmVtb3ZpbmcgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gbmFtZXNwYWNlIGJyYWNl
cy4KKyAgICAgICAgICAqIFJlbW92aW5nIHRyYWlsaW5nIGNvbW1hIGZyb20gbGFzdCBlbnVtIGRl
Y2xhcmF0aW9uLgorICAgICAgICAgICogVXBkYXRpbmcgdG8gbWF0Y2ggc3R5bGUgZ3VpZGVsaW5l
cy4KKyAgICAgICAgICAqIEFkZGluZyBtaXNzaW5nIG5ld2xpbmUgdG8gdGhlIGVuZCBvZiB0aGUg
ZmlsZS4KKyAgICAgICAgICAqIFR1cm5pbmcgb24gZ2NjIHdhcm5pbmcgZm9yIG1pc3NpbmcgbmV3
bGluZSBhdCB0aGUgZW5kIG9mIGEgc291cmNlIGZpbGUKKyAgICAgICAgICAgIChHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX05FV0xJTkUgaW4gWGNvZGUsIC1XbmV3bGluZSBpbiBnY2MpLgorICAgICAg
ICAgICogQWxwaGFiZXRpY2FsIHNvcnRpbmcgb2YgWGNvZGUgc291cmNlIGxpc3QgZmlsZXMuIAor
ICAgICAgICAgICogUmVwbGFjZSB1c2Ugb2Ygbm9uLXBvcnRhYmxlIHZhcmlhYmxlLXNpemUgYXJy
YXkgd2l0aCBWZWN0b3IuCisgICAgICAgICAgKiBVc2UgQy1zdHlsZSBjb21tZW50cyBpbnN0ZWFk
IG9mIEMrKyBjb21tZW50cyBpbiBmaWxlcyB0aGF0IG1pZ2h0CisgICAgICAgICAgICBiZSBpbmNs
dWRlZCBieSBlaXRoZXIgQyBvciBDKysgZmlsZXMuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoS0pTOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5jcHA6CisgICAgICAgIChLSlM6OkpTQ2FsbGJhY2tPYmplY3Q6
OmNvbnN0cnVjdCk6CisgICAgICAgIChLSlM6OkpTQ2FsbGJhY2tPYmplY3Q6OmNhbGxBc0Z1bmN0
aW9uKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlUHJlZml4Lmg6CisgICAgICAgICogYmluZGluZ3Mv
am5pL2puaV9jbGFzcy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFtZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2puaS9qbmlfY2xhc3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qbmkv
am5pX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEphdmFJbnN0YW5jZTo6SmF2YUluc3RhbmNlKToK
KyAgICAgICAgKEphdmFJbnN0YW5jZTo6dmFsdWVPZik6CisgICAgICAgICogYmluZGluZ3Mvam5p
L2puaV9vYmpjLm1tOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6ZGlzcGF0Y2hKTklDYWxsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX3J1bnRpbWUuY3BwOgorICAgICAgICAoSmF2YVBh
cmFtZXRlcjo6SmF2YVBhcmFtZXRlcik6CisgICAgICAgIChKYXZhQXJyYXk6OkphdmFBcnJheSk6
CisgICAgICAgICogYmluZGluZ3Mvam5pL2puaV9ydW50aW1lLmg6CisgICAgICAgICogYmluZGlu
Z3Mvam5pL2puaV91dGlsaXR5Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9vYmpjX2luc3Rh
bmNlLmg6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGtq
cy9jb2xsZWN0b3IuaDoKKyAgICAgICAgKiBranMvY29uZmlnLmg6CisgICAgICAgICoga2pzL3Vz
dHJpbmcuY3BwOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA2LTA3LTI5ICBNaWtl
IEVtbWVsICA8bWlrZS5lbW1lbEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlUHJlZml4LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVQcmVmaXguaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIAotLy8gV29yayBh
cm91bmQgYnVnIDM1NTMzMDkgYnkgcmUtaW5jbHVkaW5nIDxjdHlwZS5oPi4KKy8qIFdvcmsgYXJv
dW5kIGJ1ZyAzNTUzMzA5IGJ5IHJlLWluY2x1ZGluZyA8Y3R5cGUuaD4uICovCiAjaW5jbHVkZSA8
Y2N0eXBlPgogI2RlZmluZSBpc2FsbnVtKGMpICAgICAgX19pc3R5cGUoKGMpLCAoX0NUWVBFX0F8
X0NUWVBFX0QpKQogI2RlZmluZSBpc2FscGhhKGMpICAgICAgX19pc3R5cGUoKGMpLCBfQ1RZUEVf
QSkKQEAgLTQ5LDYgKzQ5LDYgQEAKIAogI2VuZGlmCiAKLS8vIFdvcmsgYXJvdW5kIGJ1ZyB3aXRo
IEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24g
c3VwcG9ydCBpcyBkaXNhYmxlZC4KKy8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5
IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBk
aXNhYmxlZC4gKi8KICN1bmRlZiB0cnkKICN1bmRlZiBjYXRjaApJbmRleDogSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE1NjkzKQorKysg
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmgiCisKICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgS0pTIHsKIApAQCAtNjMsNyArNjUsNyBAQCBKU09iamVjdCogSlNDYWxsYmFj
a0NvbnN0cnVjdG9yOjpjb25zdHJ1CiAKICAgICBpZiAobV9jYWxsYmFjaykgewogICAgICAgICBz
aXplX3QgYXJndW1lbnRDb3VudCA9IGFyZ3Muc2l6ZSgpOwotICAgICAgICBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1thcmd1bWVudENvdW50XTsKKyAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBh
cmd1bWVudHMoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJndW1lbnRDb3VudDsgaSsrKQogICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdG9SZWYoYXJn
c1tpXSk7CiAgICAgICAgIHJldHVybiB0b0pTKG1fY2FsbGJhY2soY3R4LCB0aGlzUmVmLCBhcmd1
bWVudENvdW50LCBhcmd1bWVudHMsIHRvUmVmKGV4ZWMtPmV4Y2VwdGlvblNsb3QoKSkpKTsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAx
NTY5MykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwxMSBAQAogICovCiAKICNpbmNsdWRlICJKU0NhbGxiYWNr
RnVuY3Rpb24uaCIKKwogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJmdW5jdGlvbi5o
IgogI2luY2x1ZGUgImZ1bmN0aW9uX29iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTUyLDcgKzU0LDcgQEAgSlNWYWx1ZSogSlNDYWxsYmFj
a0Z1bmN0aW9uOjpjYWxsQXNGdW5jdAogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1Jl
Zih0aGlzT2JqKTsKIAogICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gYXJncy5zaXplKCk7Ci0g
ICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbYXJndW1lbnRDb3VudF07CisgICAgVmVjdG9yPEpTVmFs
dWVSZWYsIDE2PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHRvUmVm
KGFyZ3NbaV0pOwogICAgIHJldHVybiB0b0pTKG1fY2FsbGJhY2soZXhlY1JlZiwgdGhpc1JlZiwg
dGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCB0b1JlZihleGVjLT5leGNlcHRp
b25TbG90KCkpKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3Bw
CShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDE2IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorCiAjaW5jbHVkZSAiQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJh
Y2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1ZGUgIkpTQ2xhc3NS
ZWYuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgotI2luY2x1ZGUgImludGVybmFsLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgor
I2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgS0pTIHsKIApAQCAtMjIzLDcgKzIyNSw3IEBAIEpTT2JqZWN0KiBKU0NhbGxiYWNrT2JqZWN0
Ojpjb25zdHJ1Y3QoRXgKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IG1fY2xhc3M7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNP
YmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVjdG9yID0ganNDbGFz
cy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKICAgICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50
ID0gYXJncy5zaXplKCk7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1thcmd1bWVu
dENvdW50XTsKKyAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzKGFy
Z3VtZW50Q291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVu
dENvdW50OyBpKyspCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gdG9SZWYoYXJnc1tp
XSk7CiAgICAgICAgICAgICByZXR1cm4gdG9KUyhjYWxsQXNDb25zdHJ1Y3RvcihleGVjUmVmLCB0
aGlzUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIHRvUmVmKGV4ZWMtPmV4Y2VwdGlvblNs
b3QoKSkpKTsKQEAgLTI3NSw3ICsyNzcsNyBAQCBKU1ZhbHVlKiBKU0NhbGxiYWNrT2JqZWN0Ojpj
YWxsQXNGdW5jdGlvCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBtX2NsYXNzOyBqc0Ns
YXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2Jq
ZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxB
c0Z1bmN0aW9uKSB7CiAgICAgICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGFyZ3Muc2l6
ZSgpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbYXJndW1lbnRDb3VudF07Cisg
ICAgICAgICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50
KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsr
KQogICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IHRvUmVmKGFyZ3NbaV0pOwogICAgICAg
ICAgICAgcmV0dXJuIHRvSlMoY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgdGhpc1JlZiwgdGhpc09i
alJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCB0b1JlZihleGVjLT5leGNlcHRpb25TbG90
KCkpKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjkzKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNzg4LDcgKzc4OCw2IEBACiAJCTY1MTYyRUYxMDhFNkEyMUMwMDc1NTZDRCAvKiB3
dGYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDRjY1
NTNCMEEyMDQ4REUwMDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi8sCiAJCQkJRTE5NTY3OEQwOUU3
Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3
IC8qIEFsd2F5c0lubGluZS5oICovLAogCQkJCTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBB
c3NlcnRpb25zLmNwcCAqLywKQEAgLTgwNSw2ICs4MDQsNyBAQAogCQkJCTY1REZDOTJFMDhFQTE3
M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzkyRjA4RUExNzNBMDBGNzMw
MEIgLyogSGFzaFRyYWl0cy5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBM
aXN0UmVmUHRyLmggKi8sCisJCQkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRy
YXMuaCAqLywKIAkJCQk5MzAzRjU2OTA5OTExOTAwMDBBRDcxQjggLyogTm9uY29weWFibGUuaCAq
LywKIAkJCQk5MzAzRjVBNDA5OTExQTU4MDBBRDcxQjggLyogT3duQXJyYXlQdHIuaCAqLywKIAkJ
CQk5MzAzRjU2NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8sCkBAIC0xMjE1LDEzICsx
MjE1LDEwIEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgMi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJbWFpbkdy
b3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRDb3JlICovOwogCQkJ
cHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICov
OwogCQkJcHJvamVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7Ci0JCQlzaG91
bGRDaGVja0NvbXBhdGliaWxpdHkgPSAxOwogCQkJdGFyZ2V0cyA9ICgKIAkJCQk5MzJGNUIzRTA4
MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUgKi8sCiAJCQkJOTM1RjY5RjUwODI0NEZF
QTAwM0QxQTQ1IC8qIGRmdGFibGVzICovLApAQCAtMTc0OCw2ICsxNzQ1LDcgQEAKIAkJCQlHQ0Nf
U1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsK
IAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BS
T1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlF
UzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtMTc4NSw2ICsxNzgz
LDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZF
X1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxf
REVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpA
QCAtMTgyMiw2ICsxODIxLDcgQEAKIAkJCQlHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwogCQkJ
CUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNf
RVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsK
IAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dB
Uk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9hcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgQmluZGluZ3M6OkFycmF5ICpf
YXJyYXk7CiB9OwogICAgIAotfTsgLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgS0pT
CiAKLSNlbmRpZgorI2VuZGlmIC8vIFJVTlRJTUVfQVJSQVlfSF8KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2puaS9qbmlfY2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2puaS9qbmlfY2xhc3MuY3BwCShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNyArMTEyLDcgQEAgRmllbGQgKkphdmFDbGFzczo6ZmllbGROYW1lZChjb25zdCBjaGFyIAog
ICAgIEZpZWxkICphRmllbGQgPSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShfZmllbGRz
LCBmaWVsZE5hbWUpOwogICAgIENGUmVsZWFzZSAoZmllbGROYW1lKTsKICAgICByZXR1cm4gYUZp
ZWxkOwotfTsKK30KIAogYm9vbCBKYXZhQ2xhc3M6OmlzTnVtYmVyQ2xhc3MoKSBjb25zdAogewpJ
bmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9jbGFzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfY2xhc3MuaAkocmV2aXNpb24gMTU2
OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2NsYXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDggKzMyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKLWNsYXNzIEphdmFDbGFzcyA6IHB1YmxpYyBDbGFzcwoteworY2xhc3MgSmF2YUNs
YXNzIDogcHVibGljIENsYXNzIHsKIHB1YmxpYzoKICAgICBKYXZhQ2xhc3MgKGpvYmplY3QgYW5J
bnN0YW5jZSk7CiAgICAgfkphdmFDbGFzcyAoKTsKQEAgLTcwLDQgKzY5LDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKyNlbmRpZiAvLyBKTklfQ0xBU1NfSF8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2puaS9qbmlfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2puaS9qbmlfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL2puaS9qbmlfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIEphdmFJbnN0YW5jZTo6SmF2YUluc3RhbmNlIChqb2JqZWN0IGluc3QKICAgICBf
aW5zdGFuY2UgPSBuZXcgSk9iamVjdFdyYXBwZXIgKGluc3RhbmNlKTsKICAgICBfY2xhc3MgPSAw
OwogICAgIHNldEV4ZWN1dGlvbkNvbnRleHQgKHIpOwotfTsKK30KIAogSmF2YUluc3RhbmNlOjp+
SmF2YUluc3RhbmNlICgpIAogewpAQCAtMzI0LDcgKzMyNCw3IEBAIEpTVmFsdWUgKkphdmFJbnN0
YW5jZTo6ZGVmYXVsdFZhbHVlIChKU1QKIEpTVmFsdWUgKkphdmFJbnN0YW5jZTo6dmFsdWVPZigp
IGNvbnN0IAogewogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwotfTsKK30KIAogSk9iamVjdFdy
YXBwZXI6OkpPYmplY3RXcmFwcGVyKGpvYmplY3QgaW5zdGFuY2UpCiA6IF9yZWZDb3VudCgwKQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9vYmpjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfb2JqYy5tbQkocmV2aXNpb24gMTU2
OTMpCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX29iamMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDQgKzY0LDQgQEAgYm9vbCBLSlM6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNh
bGwgKGNvbgogCiAgICAgYnplcm8gKCZyZXN1bHQsIHNpemVvZihqdmFsdWUpKTsKICAgICByZXR1
cm4gZmFsc2U7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX3J1bnRpbWUuY3BwCShyZXZpc2lvbiAxNTY5MykK
KysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfcnVudGltZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgSmF2YVBhcmFtZXRlcjo6SmF2YVBhcmFtZXRlciAoSk5J
RW52ICplbgogewogICAgIF90eXBlID0gSmF2YVN0cmluZyAoZW52LCB0eXBlKTsKICAgICBfSk5J
VHlwZSA9IEpOSVR5cGVGcm9tQ2xhc3NOYW1lIChfdHlwZS5VVEY4U3RyaW5nKCkpOwotfTsKK30K
IAogSmF2YUZpZWxkOjpKYXZhRmllbGQgKEpOSUVudiAqZW52LCBqb2JqZWN0IGFGaWVsZCkKIHsK
QEAgLTM3Miw3ICszNzIsNyBAQCBKYXZhQXJyYXk6OkphdmFBcnJheSAoam9iamVjdCBhLCBjb25z
dCBjCiAgICAgX2xlbmd0aCA9IGVudi0+R2V0QXJyYXlMZW5ndGgoKGphcnJheSlfYXJyYXktPl9p
bnN0YW5jZSk7CiAgICAgX3R5cGUgPSBzdHJkdXAodCk7CiAgICAgX3Jvb3QgPSByOwotfTsKK30K
IAogSmF2YUFycmF5Ojp+SmF2YUFycmF5ICgpIAogewpAQCAtMzg0LDcgKzM4NCw3IEBAIEphdmFB
cnJheTo6SmF2YUFycmF5IChjb25zdCBKYXZhQXJyYXkgJm8KIHsKICAgICBfYXJyYXkgPSBvdGhl
ci5fYXJyYXk7CiAgICAgX3R5cGUgPSBzdHJkdXAob3RoZXIuX3R5cGUpOwotfTsKK30KIAogdm9p
ZCBKYXZhQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQgaW5k
ZXgsIEpTVmFsdWUgKmFWYWx1ZSkgY29uc3QKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2puaS9qbmlfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2puaS9qbmlfcnVudGltZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL2puaS9qbmlfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2
LDggQEAgcHVibGljOgogICAgIEpOSVR5cGUgZ2V0Sk5JVHlwZSgpIGNvbnN0IHsgcmV0dXJuIF9K
TklUeXBlOyB9CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgSmF2YUZpZWxkOjpkaXNwYXRjaFNl
dFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5z
dGFuY2UsIGp2YWx1ZSBqYXZhVmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNp
ZykgY29uc3Q7Ci0gICAganZhbHVlIEphdmFGaWVsZDo6ZGlzcGF0Y2hWYWx1ZUZyb21JbnN0YW5j
ZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IGNo
YXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNpZywgSk5JVHlwZSByZXR1cm5UeXBlKSBjb25zdDsKKyAg
ICB2b2lkIGRpc3BhdGNoU2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3Qg
SmF2YUluc3RhbmNlICppbnN0YW5jZSwganZhbHVlIGphdmFWYWx1ZSwgY29uc3QgY2hhciAqbmFt
ZSwgY29uc3QgY2hhciAqc2lnKSBjb25zdDsKKyAgICBqdmFsdWUgZGlzcGF0Y2hWYWx1ZUZyb21J
bnN0YW5jZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEphdmFJbnN0YW5jZSAqaW5zdGFuY2UsIGNv
bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNpZywgSk5JVHlwZSByZXR1cm5UeXBlKSBjb25z
dDsKIAogICAgIEphdmFTdHJpbmcgX25hbWU7CiAgICAgSmF2YVN0cmluZyBfdHlwZTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCShyZXZpc2lvbiAxNTY5
MykKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxMSArNDMsMTAgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBkb3VibGVfdHlw
ZQogfSBKTklUeXBlOwogCi1uYW1lc3BhY2UgS0pTCi17CituYW1lc3BhY2UgS0pTIHsKKworbmFt
ZXNwYWNlIEJpbmRpbmdzIHsKIAotbmFtZXNwYWNlIEJpbmRpbmdzIAotewogY2xhc3MgSmF2YVBh
cmFtZXRlcjsKIAogY29uc3QgY2hhciAqZ2V0Q2hhcmFjdGVyc0Zyb21KU3RyaW5nKGpzdHJpbmcg
YUpTdHJpbmcpOwpAQCAtMTExLDQgKzExMCw0IEBAIGJvb2wgZGlzcGF0Y2hKTklDYWxsKGNvbnN0
IHZvaWQgKnRhcmdldEEKIAogfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZiAvLyBfSk5JX1VUSUxJVFlfSF8KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCShyZXZpc2lvbiAxNTY5
MykKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw4ICszNSw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNz
IE9iamNDbGFzczsKIAotY2xhc3MgT2JqY0luc3RhbmNlIDogcHVibGljIEluc3RhbmNlCi17Citj
bGFzcyBPYmpjSW5zdGFuY2UgOiBwdWJsaWMgSW5zdGFuY2UgewogcHVibGljOgogICAgIE9iamNJ
bnN0YW5jZShPYmplY3RTdHJ1Y3RQdHIgaW5zdGFuY2UpOwogICAgICAgICAKQEAgLTYzLDcgKzYy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhl
Y1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eSwgSlNWYWx1ZSAqYVZhbHVl
KTsKICAgICAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgKk9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZkZp
ZWxkKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRmllbGQgKmFGaWVsZCkgY29uc3Q7CisgICAgdmly
dHVhbCBKU1ZhbHVlICpnZXRWYWx1ZU9mRmllbGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBGaWVs
ZCAqYUZpZWxkKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgKmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5LCBKU1R5
cGUgaGludCkgY29uc3Q7CiAKICAgICBPYmplY3RTdHJ1Y3RQdHIgZ2V0T2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gX2luc3RhbmNlOyB9CkBAIC04Myw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0gLy8g
bmFtZXNwYWNlIEtKUwogCi0jZW5kaWYKKyNlbmRpZiAvLyBCSU5ESU5HU19PQkpDX0lOU1RBTkNF
X0hfCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsOCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICBzdGF0aWMgdm9pZCBmaW5hbENoZWNrKCk7CiAjZW5kaWYK
IAotICAgIHN0YXRpYyB2b2lkIHByb3RlY3QoSlNWYWx1ZSAqKTsKLSAgICBzdGF0aWMgdm9pZCB1
bnByb3RlY3QoSlNWYWx1ZSAqKTsKKyAgICBzdGF0aWMgdm9pZCBwcm90ZWN0KEpTVmFsdWUqKTsK
KyAgICBzdGF0aWMgdm9pZCB1bnByb3RlY3QoSlNWYWx1ZSopOwogCiAgICAgc3RhdGljIHNpemVf
dCBudW1JbnRlcnByZXRlcnMoKTsKICAgICBzdGF0aWMgc2l6ZV90IG51bVByb3RlY3RlZE9iamVj
dHMoKTsKQEAgLTY1LDEzICs2NSwxMyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIHN0YXRpYyB2
b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKCk7CiAgICAgc3RhdGljIHZvaWQgbWFya0N1cnJlbnRU
aHJlYWRDb25zZXJ2YXRpdmVseSgpOwotICAgIHN0YXRpYyB2b2lkIG1hcmtPdGhlclRocmVhZENv
bnNlcnZhdGl2ZWx5KFRocmVhZCAqdGhyZWFkKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrT3RoZXJU
aHJlYWRDb25zZXJ2YXRpdmVseShUaHJlYWQqIHRocmVhZCk7CiAgICAgc3RhdGljIHZvaWQgbWFy
a1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KCk7Ci0gICAgc3RhdGljIHZvaWQgbWFya1N0YWNr
T2JqZWN0c0NvbnNlcnZhdGl2ZWx5KHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOworICAgIHN0YXRp
YyB2b2lkIG1hcmtTdGFja09iamVjdHNDb25zZXJ2YXRpdmVseSh2b2lkKiBzdGFydCwgdm9pZCog
ZW5kKTsKIAogICAgIHN0YXRpYyBib29sIG1lbW9yeUZ1bGw7CiAgIH07CiAKLX07Cit9IC8vIG5h
bWVzcGFjZSBLSlMKIAotI2VuZGlmIC8qIF9LSlNDT0xMRUNUT1JfSF8gKi8KKyNlbmRpZiAvKiBL
SlNDT0xMRUNUT1JfSF8gKi8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgJKHJldmlzaW9uIDE1NjkzKQor
KysgSmF2YVNjcmlwdENvcmUva2pzL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
Myw3IEBACiAKICNlbHNlCiAKLS8vIEZJWE1FOiBpcyB0aGlzIGFjdHVhbGx5IHVzZWQgb3IgZG8g
b3RoZXIgcGxhdGZvcm1zIGdlbmVyYXRlIHRoZWlyCi0vLyBvd24gY29uZmlnLmg/CisvKiBGSVhN
RTogaXMgdGhpcyBhY3R1YWxseSB1c2VkIG9yIGRvIG90aGVyIHBsYXRmb3JtcyBnZW5lcmF0ZSB0
aGVpciBvd24gY29uZmlnLmg/ICovCiAKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKICNkZWZpbmUg
SEFWRV9GVU5DX0lTSU5GIDEKQEAgLTM5LDcgKzM4LDcgQEAKIAogI2RlZmluZSBIQVZFX1BDUkVQ
T1NJWCAxCiAKLS8vIEZJWE1FOiBpZiBhbGwgcGxhdGZvcm1zIGhhdmUgdGhlc2UsIGRvIHRoZXkg
cmVhbGx5IG5lZWQgI2RlZmluZXM/CisvKiBGSVhNRTogaWYgYWxsIHBsYXRmb3JtcyBoYXZlIHRo
ZXNlLCBkbyB0aGV5IHJlYWxseSBuZWVkICNkZWZpbmVzPyAqLwogI2RlZmluZSBIQVZFX1NURElO
VF9IIDEKICNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy91c3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5j
cHAJKHJldmlzaW9uIDE1NjkzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAj
ZW5kaWYKIAotI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJkdG9hLmgiCiAjaW5j
bHVkZSAiaWRlbnRpZmllci5oIgorI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlIDxm
bG9hdC5oPgogI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlICJkdG9hLmgiCi0KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIHN0ZDo6bWF4OwpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHJldmlzaW9uIDE1NjkzKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9m
ZnNldDogNCAtKi0KKy8qIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLSAqLwog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCkBAIC0yNywzMiArMjcsMzIgQEAKICNpZm5kZWYgS1hNTENPUkVfUExB
VEZPUk1fSAogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9ICiAKLS8vIFBMQVRGT1JNIGhhbmRs
ZXMgT1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCwgZ3JhcGhpY3MgQVBJLCBhbmQgQ1BVCisvKiBQ
TEFURk9STSBoYW5kbGVzIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIGdyYXBoaWNzIEFQSSwg
YW5kIENQVSAqLwogI2RlZmluZSBQTEFURk9STShLWF9GRUFUVVJFKSAoZGVmaW5lZCggS1hNTENP
UkVfUExBVEZPUk1fIyNLWF9GRUFUVVJFICkgJiYgS1hNTENPUkVfUExBVEZPUk1fIyNLWF9GRUFU
VVJFKQogI2RlZmluZSBDT01QSUxFUihLWF9GRUFUVVJFKSAoZGVmaW5lZCggS1hNTENPUkVfQ09N
UElMRVJfIyNLWF9GRUFUVVJFICkgJiYgS1hNTENPUkVfQ09NUElMRVJfIyNLWF9GRUFUVVJFKQog
I2RlZmluZSBIQVZFKEtYX0ZFQVRVUkUpIChkZWZpbmVkKCBIQVZFXyMjS1hfRkVBVFVSRSApICYm
IEhBVkVfIyNLWF9GRUFUVVJFKQogI2RlZmluZSBVU0UoS1hfRkVBVFVSRSkgKGRlZmluZWQoIEtY
TUxDT1JFX1VTRV8jI0tYX0ZFQVRVUkUgKSAmJiBLWE1MQ09SRV9VU0VfIyNLWF9GRUFUVVJFKQog
Ci0vLyBPcGVyYXRpbmcgc3lzdGVtcyAtIGxvdy1sZXZlbCBkZXBlbmRlbmNpZXMKKy8qIE9wZXJh
dGluZyBzeXN0ZW1zIC0gbG93LWxldmVsIGRlcGVuZGVuY2llcyAqLwogCi0vLyBQTEFURk9STShE
QVJXSU4pCi0vLyBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgTWFjIE9T
IFggLyBEYXJ3aW4gdGhhdCBzaG91bGQKLS8vIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRp
bmcgZW52aXJvbm1lbnQKKy8qIFBMQVRGT1JNKERBUldJTikgKi8KKy8qIE9wZXJhdGluZyBzeXN0
ZW0gbGV2ZWwgZGVwZW5kZW5jaWVzIGZvciBNYWMgT1MgWCAvIERhcndpbiB0aGF0IHNob3VsZCAq
LworLyogYmUgdXNlZCByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLwogI2lm
ZGVmIF9fQVBQTEVfXwogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9EQVJXSU4gMQogI2VuZGlm
CiAKLS8vIFBMQVRGT1JNKFdJTl9PUykKLS8vIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVwZW5k
ZW5jaWVzIGZvciBXaW5kb3dzIHRoYXQgc2hvdWxkIGJlIHVzZWQKLS8vIHJlZ2FyZGxlc3Mgb2Yg
b3BlcmF0aW5nIGVudmlyb25tZW50CisvKiBQTEFURk9STShXSU5fT1MpICovCisvKiBPcGVyYXRp
bmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgV2luZG93cyB0aGF0IHNob3VsZCBiZSB1
c2VkICovCisvKiByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLwogI2lmIGRl
ZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9S
TV9XSU5fT1MgMQogI2VuZGlmCiAKLS8vIFBMQVRGT1JNKFVOSVgpCi0vLyBPcGVyYXRpbmcgc3lz
dGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgVW5peC1saWtlIHN5c3RlbXMgdGhhdAotLy8gc2hv
dWxkIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQKLS8vIChpbmNs
dWRlcyBQTEFURk9STShEQVJXSU4pKQorLyogUExBVEZPUk0oVU5JWCkgKi8KKy8qIE9wZXJhdGlu
ZyBzeXN0ZW0gbGV2ZWwgZGVwZW5kZW5jaWVzIGZvciBVbml4LWxpa2Ugc3lzdGVtcyB0aGF0ICov
CisvKiBzaG91bGQgYmUgdXNlZCByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAq
LworLyogKGluY2x1ZGVzIFBMQVRGT1JNKERBUldJTikpICovCiAjaWYgICBkZWZpbmVkKF9fQVBQ
TEVfXykgICBcCiAgICB8fCBkZWZpbmVkKHVuaXgpICAgICAgICBcCiAgICB8fCBkZWZpbmVkKF9f
dW5peCkgICAgICBcCkBAIC02MiwxMyArNjIsMTMgQEAKICNkZWZpbmUgS1hNTENPUkVfUExBVEZP
Uk1fVU5JWCAxCiAjZW5kaWYKIAotLy8gT3BlcmF0aW5nIGVudmlyb25tZW50cworLyogT3BlcmF0
aW5nIGVudmlyb25tZW50cyAqLwogCi0vLyBJIG1hZGUgdGhlIEJVSUxESU5HX0tERV9fIG1hY3Jv
IHVwIGZvciB0aGUgS0RFIGJ1aWxkIHN5c3RlbSB0byBkZWZpbmUKKy8qIEkgbWFkZSB0aGUgQlVJ
TERJTkdfS0RFX18gbWFjcm8gdXAgZm9yIHRoZSBLREUgYnVpbGQgc3lzdGVtIHRvIGRlZmluZSAq
LwogCi0vLyBQTEFURk9STShLREUpCi0vLyBQTEFURk9STShNQUMpCi0vLyBQTEFURk9STShXSU4p
CisvKiBQTEFURk9STShLREUpICovCisvKiBQTEFURk9STShNQUMpICovCisvKiBQTEFURk9STShX
SU4pICovCiAjaWYgZGVmaW5lZChCVUlMRElOR19LREVfXykKICNkZWZpbmUgS1hNTENPUkVfUExB
VEZPUk1fS0RFIDEKICNlbGlmIFBMQVRGT1JNKERBUldJTikKQEAgLTgxLDkgKzgxLDkgQEAKICNl
bmRpZgogCiAKLS8vIENQVQorLyogQ1BVICovCiAKLS8vIFBMQVRGT1JNKFBQQykKKy8qIFBMQVRG
T1JNKFBQQykgKi8KICNpZiAgIGRlZmluZWQoX19wcGNfXykgICAgIFwKICAgIHx8IGRlZmluZWQo
X19QUENfXykgICAgIFwKICAgIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIFwKQEAgLTk1LDcgKzk1
LDcgQEAKICNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fQklHX0VORElBTiAxCiAjZW5kaWYKIAot
Ly8gUExBVEZPUk0oUFBDNjQpCisvKiBQTEFURk9STShQUEM2NCkgKi8KICNpZiAgIGRlZmluZWQo
X19wcGM2NF9fKSBcCiAgICB8fCBkZWZpbmVkKF9fUFBDNjRfXykKICNkZWZpbmUgS1hNTENPUkVf
UExBVEZPUk1fUFBDNjQgMQpAQCAtMTA3LDcgKzEwNyw3IEBACiAjZGVmaW5lIEtYTUxDT1JFX1BM
QVRGT1JNX01JRERMRV9FTkRJQU4gMQogI2VuZGlmCiAKLS8vIFBMQVRGT1JNKFg4NikKKy8qIFBM
QVRGT1JNKFg4NikgKi8KICNpZiAgIGRlZmluZWQoX19pMzg2X18pIFwKICAgIHx8IGRlZmluZWQo
aTM4NikgICAgIFwKICAgIHx8IGRlZmluZWQoX01fSVg4NikgIFwKQEAgLTExNiw0NiArMTE2LDQ2
IEBACiAjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX1g4NiAxCiAjZW5kaWYKIAotLy8gUExBVEZP
Uk0oWDg2XzY0KQorLyogUExBVEZPUk0oWDg2XzY0KSAqLwogI2lmICAgZGVmaW5lZChfX3g4Nl82
NF9fKSBcCiAgICB8fCBkZWZpbmVkKF9faWE2NF9fKQogI2RlZmluZSBLWE1MQ09SRV9QTEFURk9S
TV9YODZfNjQgMQogI2VuZGlmCiAKLS8vIENvbXBpbGVyCisvKiBDb21waWxlciAqLwogCi0vLyBD
T01QSUxFUihNU1ZDKQorLyogQ09NUElMRVIoTVNWQykgKi8KICNpZiBkZWZpbmVkKF9NU0NfVkVS
KQogI2RlZmluZSBLWE1MQ09SRV9DT01QSUxFUl9NU1ZDIDEKICNlbmRpZgogCi0vLyBDT01QSUxF
UihHQ0MpCisvKiBDT01QSUxFUihHQ0MpICovCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNkZWZp
bmUgS1hNTENPUkVfQ09NUElMRVJfR0NDIDEKICNlbmRpZgogCi0vLyBDT01QSUxFUihCT1JMQU5E
KQotLy8gbm90IHJlYWxseSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50IGFueSBt
b3JlPworLyogQ09NUElMRVIoQk9STEFORCkgKi8KKy8qIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9y
dGVkIC0gaXMgdGhpcyByZWxldmFudCBhbnkgbW9yZT8gKi8KICNpZiBkZWZpbmVkKF9fQk9STEFO
RENfXykKICNkZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfQk9STEFORCAxCiAjZW5kaWYKIAotLy8g
Q09NUElMRVIoQ1lHV0lOKQotLy8gbm90IHJlYWxseSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlz
IHJlbGV2YW50IGFueSBtb3JlPworLyogQ09NUElMRVIoQ1lHV0lOKSAqLworLyogbm90IHJlYWxs
eSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50IGFueSBtb3JlPyAqLwogI2lmIGRl
ZmluZWQoX19DWUdXSU5fXykKICNkZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfQ1lHV0lOIDEKICNl
bmRpZgogCi0vLyBtdWx0aXBsZSB0aHJlYWRzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYyBmb3Igbm93
CisvKiBtdWx0aXBsZSB0aHJlYWRzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYyBmb3Igbm93ICovCiAj
aWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBLWE1MQ09SRV9VU0VfTVVMVElQTEVfVEhSRUFEUyAx
CiAjZW5kaWYKIAotLy8gZm9yIFVuaWNvZGUsIEtERSB1c2VzIFF0LCBldmVyeXRoaW5nIGVsc2Ug
dXNlcyBJQ1UKKy8qIGZvciBVbmljb2RlLCBLREUgdXNlcyBRdCwgZXZlcnl0aGluZyBlbHNlIHVz
ZXMgSUNVICovCiAjaWYgUExBVEZPUk0oS0RFKQogI2RlZmluZSBLWE1MQ09SRV9VU0VfUVQ0X1VO
SUNPREUgMQogI2Vsc2UKICNkZWZpbmUgS1hNTENPUkVfVVNFX0lDVV9VTklDT0RFIDEKICNlbmRp
ZgogCi0jZW5kaWYgLy8gS1hNTENPUkVfUExBVEZPUk1fSAorI2VuZGlmIC8qIEtYTUxDT1JFX1BM
QVRGT1JNX0ggKi8KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjkzKQorKysgSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDct
MjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemls
bGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAgICAgQWRvcHQg
cGVkYW50aWMgY2hhbmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJvdmUgCisgICAg
ICAgICAgY3Jvc3MtY29tcGlsZXIgY29tcGF0aWJpbGl0eQorCisgICAgICAgICAgQ2hhbmdlcyBp
bmNsdWRlOgorICAgICAgICAgICogVHVybmluZyBvbiBnY2Mgd2FybmluZyBmb3IgbWlzc2luZyBu
ZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBzb3VyY2UgZmlsZQorICAgICAgICAgICAgKEdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfTkVXTElORSBpbiBYY29kZSwgLVduZXdsaW5lIGluIGdjYykuCisKKyAg
ICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiA9PT0g
U2FmYXJpLTUyMS4xOSA9PT0KIAogMjAwNi0wNy0xOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0
R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY5MykKKysrIEphdmFT
Y3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTQyNCw2ICs0MjQsNyBAQAogCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9I
RUFERVIgPSBZRVM7CiAJCQkJR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POwogCQkJCUdDQ19U
UkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19ORVdMSU5FID0gWUVTOwogCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKIAkJCQlHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVTOwogCQkJCU1B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjQ7CkBAIC00NjAsNiArNDYxLDcgQEAKIAkJCQlH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gIiI7CiAJCQkJR0NDX1RIUkVBRFNBRkVfU1RB
VElDUyA9IE5POwogCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0gWUVTOwogCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNU
UlVDVE9SID0gWUVTOwogCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjQ7CkBAIC00
OTUsNiArNDk3LDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwog
CQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1Nf
QVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlF
UzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0ND
X1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9
ICgKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjc5IEBACisyMDA2LTA3LTI5ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDA4MAorICAgICAgICAgIEFkb3B0IHBlZGFudGljIGNoYW5nZXMgZnJvbSB0aGUgVW5p
dHkgcHJvamVjdCB0byBpbXByb3ZlIAorICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIGNvbXBhdGli
aWxpdHkKKworICAgICAgICAgIENoYW5nZXMgaW5jbHVkZToKKyAgICAgICAgICAqIFJlbW92aW5n
IHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIG5hbWVzcGFjZSBicmFjZXMuCisgICAgICAgICAgKiBS
ZW1vdmluZyB0cmFpbGluZyBjb21tYSBmcm9tIGxhc3QgZW51bSBkZWNsYXJhdGlvbi4KKyAgICAg
ICAgICAqIFVwZGF0aW5nIHRvIG1hdGNoIHN0eWxlIGd1aWRlbGluZXMuCisgICAgICAgICAgKiBB
ZGRpbmcgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisgICAgICAgICAg
KiBUdXJuaW5nIG9uIGdjYyB3YXJuaW5nIGZvciBtaXNzaW5nIG5ld2xpbmUgYXQgdGhlIGVuZCBv
ZiBhIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAoR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdM
SU5FIGluIFhjb2RlLCAtV25ld2xpbmUgaW4gZ2NjKS4KKyAgICAgICAgICAqIEFscGhhYmV0aWNh
bCBzb3J0aW5nIG9mIFhjb2RlIHNvdXJjZSBsaXN0IGZpbGVzLgorICAgICAgICAgICogVXNlIGFi
cygpIGZ1bmN0aW9uIGZyb20gPG1hdGguaD4gaW5zdGVhZCBvZiBBQlMoKSBtYWNyby4KKyAgICAg
ICAgICAqIFVzZSBDLXN0eWxlIGNvbW1lbnRzIGluc3RlYWQgb2YgQysrIGNvbW1lbnRzIGluIGZp
bGVzIHRoYXQgbWlnaHQKKyAgICAgICAgICAgIGJlIGluY2x1ZGVkIGJ5IGVpdGhlciBDIG9yIEMr
KyBmaWxlcy4KKyAgICAgICAgICAqIFVzZSAtbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSBpbnN0ZWFkIG9mIC1IVUdFX1ZBTC4KKworICAgICAgICAqIFdlYkNvcmUrU1ZHL0RPTUxp
c3QuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViQ29yZVByZWZpeC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQ
cm9jZXNzb3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5oOgorICAgICAg
ICAoS0pTOjpET01Ob2RlOjopOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLmg6Cisg
ICAgICAgICgtW0RPTUNTU1ZhbHVlIGVudW1dKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TUNvcmUuaDoKKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnQ6Ojpd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAgICAgICAoLVtET01P
dmVyZmxvd0V2ZW50IGVudW1dKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmg6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01UcmF2ZXJzYWwuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVhQYXRoLmg6CisgICAgICAgICgtW0RPTVhQYXRoTlNSZXNvbHZlciBsb29r
dXBOYW1lc3BhY2VVUkk6XSk6CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UuaDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVLZXlib2FyZEFjY2Vzcy5oOgorICAg
ICAgICAqIGNzcy9tYWtlcHJvcDoKKyAgICAgICAgKiBjc3MvbWFrZXZhbHVlczoKKyAgICAgICAg
KiBkb20vQ2hpbGROb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9Eb2NQdHIuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjopOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjopOgorICAgICAgICAqIGRvbS9OYW1lTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6cm9vdE5vZGVDaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Oik6CisgICAgICAgICogZWRpdGluZy9VbmxpbmtDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3Jl
OjpVbmxpbmtDb21tYW5kOjplZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKiBodG1sL0Zvcm1EYXRh
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFMaXN0SXRlbTo6Rm9ybURhdGFMaXN0
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUxpc3Q6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIGh0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
RGl2RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MSFJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSGVhZGluZ0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFRva2VuaXplci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6U3RhdGU6
Oik6CisgICAgICAgICogaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIGljb24vU1FM
U3RhdGVtZW50LmNwcDoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmg6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc1BvaW50M0Y6OktDYW52
YXNQb2ludDNGKToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGaWx0ZXI6OktDYW52YXNGaWx0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZpbHRlcjo6fktDYW52YXNGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZpbHRlckVmZmVjdDo6fktDYW52YXNGaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uOjpLQ0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFQ29u
dm9sdmVNYXRyaXg6OktDYW52YXNGRUNvbnZvbHZlTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OktDTGlnaHRTb3VyY2U6OktDTGlnaHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6S0NEaXN0
YW50TGlnaHRTb3VyY2U6OktDRGlzdGFudExpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OktDUG9pbnRMaWdodFNvdXJjZTo6S0NQb2ludExpZ2h0U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OktDU3BvdExpZ2h0U291cmNlOjpLQ1Nwb3RMaWdodFNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmc6OktDYW52YXNGRURpZmZ1c2VMaWdodGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRkVEaXNwbGFjZW1lbnRNYXA6OktDYW52YXNGRURp
c3BsYWNlbWVudE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRkVJbWFnZTo6S0NhbnZh
c0ZFSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFU3BlY3VsYXJMaWdodGluZzo6
S0NhbnZhc0ZFU3BlY3VsYXJMaWdodGluZyk6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJTVkdJ
bWFnZS5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNl
UXVhcnR6Lmg6CisgICAgICAgICoga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Oik6CisgICAgICAgICog
a3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKiBrc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50Lmg6CisgICAgICAgICoga3N2ZzIva3N2
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tDYW52YXNS
ZW5kZXJpbmdTdHlsZS5oOgorICAgICAgICAqIGtzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuaDoK
KyAgICAgICAgKiBrc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGw6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuZ2xlLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0FuaW1hdGVkUmVjdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFN0
cmluZy5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZUl0ZW0pOgorICAgICAgICAoU1ZHQW5pbWF0aW9u
RWxlbWVudDo6Y2FsY3VsYXRlUmVsYXRpdmVUaW1lUGVyY2VudGFnZSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NvbG9yLmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVm
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpzdmdfZHluYW1pY19jYXN0KToKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZUxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHRkVGdW5jQUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jQkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
R0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0xhbmdTcGFjZS5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMZW5ndGguaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdM
aW5lRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdMb2NhdGFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdNYXRyaXguaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyLmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
UGFpbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZy5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXRoU2Vn
QXJjLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdMaW5ldG8uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWwuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1BhdGhTZWdNb3ZldG8uaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUG9pbnQuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvbHlnb25FbGVtZW50Lmg6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSZWN0Lmg6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTZXRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0
b3BFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5
bGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGVz
dHMuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGl0bGVF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVVJJUmVmZXJlbmNlLmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9zdmdwYXRocGFyc2VyLmg6CisgICAgICAgICogcGFnZS9GcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9BZmZpbmVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5OjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkp
OgorICAgICAgICAqIHBsYXRmb3JtL0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhOjpGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRm9udERhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9UZXh0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94OjopOgor
ICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6aGVhcFBvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZvbnRDYWNoZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvR2x5cGhNYXBNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJGb250Q2FjaGUubW06CisgICAgICAgIChiZXR0ZXJDaG9pY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRSZW5kZXJTZWxlY3Q6OnNldFdpZGdldFdyaXRpbmdEaXJlY3Rpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCUi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQlI6OnJlbmRlck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQlI6OndpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3cuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6OlJlbmRlckZsb3cpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL2JpZGkuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwOgorCiAyMDA2LTA3LTI5ICBSb2IgQnVpcyAgPGJ1
aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZi4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZVByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShy
ZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvV2ViQ29yZVByZWZpeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOCwxMyArMTgsMTUgQEAKICAqCiAgKi8KIAotLy8gVGhpcyBwcmVmaXggZmlsZSBpcyBm
b3IgdXNlIG9uIE1hYyBPUyBYIG9ubHkuIEl0IHNob3VsZCBjb250YWluIG9ubHk6Ci0vLyAgICAx
KSBmaWxlcyB0byBwcmVjb21waWxlIG9uIE1hYyBPUyBYIGZvciBmYXN0ZXIgYnVpbGRzCi0vLyAg
ICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVjaWZpYyBwZXJmb3JtYW5jZSBidWcg
d29ya2Fyb3VuZHMKLS8vICAgIDMpIHRoZSBzcGVjaWFsIHRyaWNrIHRvIGNhdGNoIHVzIHVzaW5n
IG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNvbmZpZy5oIgotLy8gVGhlIHByb2pl
Y3Qgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQgd2l0aG91dCB0aGlzIGhlYWRlciwgYWx0aG91Z2gg
d2UgcmFyZWx5IHRlc3QgdGhhdC4KKy8qIFRoaXMgcHJlZml4IGZpbGUgaXMgZm9yIHVzZSBvbiBN
YWMgT1MgWCBvbmx5LiBJdCBzaG91bGQgY29udGFpbiBvbmx5OgorICogICAgMSkgZmlsZXMgdG8g
cHJlY29tcGlsZSBvbiBNYWMgT1MgWCBmb3IgZmFzdGVyIGJ1aWxkcworICogICAgMikgaW4gb25l
IGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9ybWFuY2UgYnVnIHdvcmthcm91bmRz
CisgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRjaCB1cyB1c2luZyBuZXcgb3IgZGVs
ZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKKyAqIFRoZSBwcm9qZWN0IHNob3VsZCBi
ZSBhYmxlIHRvIGJ1aWxkIHdpdGhvdXQgdGhpcyBoZWFkZXIsIGFsdGhvdWdoIHdlIHJhcmVseSB0
ZXN0IHRoYXQuCisgKi8KKwogCi0vLyBUaGluZ3MgdGhhdCBuZWVkIHRvIGJlIGRlZmluZWQgZ2xv
YmFsbHkgc2hvdWxkIGdvIGludG8gImNvbmZpZy5oIi4KKy8qIFRoaW5ncyB0aGF0IG5lZWQgdG8g
YmUgZGVmaW5lZCBnbG9iYWxseSBzaG91bGQgZ28gaW50byAiY29uZmlnLmgiLiAqLwogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKICNkZWZpbmUgTlVMTCBfX251bGwKQEAgLTU0LDcgKzU2LDcgQEAKICNp
bmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPG5ldz4KIAotLy8gV29yayBhcm91bmQgYnVnIDM1
NTMzMDkgYnkgcmUtaW5jbHVkaW5nIDxjdHlwZS5oPi4KKy8qIFdvcmsgYXJvdW5kIGJ1ZyAzNTUz
MzA5IGJ5IHJlLWluY2x1ZGluZyA8Y3R5cGUuaD4uICovCiAjaW5jbHVkZSA8Y2N0eXBlPgogI2Rl
ZmluZSBpc2FsbnVtKGMpICAgICAgX19pc3R5cGUoKGMpLCAoX0NUWVBFX0F8X0NUWVBFX0QpKQog
I2RlZmluZSBpc2FscGhhKGMpICAgICAgX19pc3R5cGUoKGMpLCBfQ1RZUEVfQSkKQEAgLTk0LDYg
Kzk2LDYgQEAKICNkZWZpbmUgZGVsZXRlICgiaWYgeW91IHVzZSBuZXcvZGVsZXRlIG1ha2Ugc3Vy
ZSB0byBpbmNsdWRlIGNvbmZpZy5oIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUiKCkpIAogI2VuZGlm
CiAKLS8vIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9i
amVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4KKy8qIFdvcmsg
YXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysg
d2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4gKi8KICN1bmRlZiB0cnkKICN1bmRl
ZiBjYXRjaApJbmRleDogV2ViQ29yZS9XZWJDb3JlK1NWRy9ET01MaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlK1NWRy9ET01MaXN0LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2Vi
Q29yZS9XZWJDb3JlK1NWRy9ET01MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywx
MCBAQAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRQdHJMaXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVkLmgi
CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICB0ZW1w
bGF0ZTxjbGFzcyBUPgotICAgIGNsYXNzIERPTUxpc3QgOiBwdWJsaWMgU2hhcmVkPERPTUxpc3Q8
VD4gPgotICAgIHsKKyAgICBjbGFzcyBET01MaXN0IDogcHVibGljIFNoYXJlZDxET01MaXN0PFQ+
ID4gewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NTGlzdCgpIDogU2hhcmVkPERPTUxpc3Q8VD4g
PigpIHsgbV9pbXBsLnNldEF1dG9EZWxldGUoZmFsc2UpOyB9CiAgICAgICAgIERPTUxpc3QoY29u
c3QgRE9NTGlzdCAmb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQpAQCAtMTE5LDkgKzExOCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIERlcHJlY2F0ZWRQdHJM
aXN0PFQ+IG1faW1wbDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtET01fRE9NTGlzdF9ICiAK
IC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDggQEAKIAkJODU0
RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MkQwQTIyOTdCRTAwNThEN0FEIC8qIFRy
YXZlcnNhbC5oICovOyB9OwogCQk4NTRGRTczODBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRG
RTcyRTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5jcHAgKi87IH07CiAJCTg1NEZFNzM5
MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdh
bGtlci5oICovOyB9OworCQk4NUVDOUFGQTBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY4MEE3
MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovOyB9OworCQk4NUVDOUFGQjBBNzFBMkM2MDBF
RUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovOyB9Owog
CQk5MzAzMkNDODA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDMyQ0M3MDlBRUMzNDMwMEY4MkExOCAv
KiBQYXRoQ0cuY3BwICovOyB9OwogCQk5MzAzMkNDQTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwMzJDQzkw
OUFFQzM0QjAwRjgyQTE4IC8qIFBhdGguaCAqLzsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4
ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgfTsKQEAgLTE1OTgs
MjMgKzE2MDAsNiBAQAogCQlGQUUwNDE5MDA5NzU5NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTA0
MThFMDk3NTk2QzkwMDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oICovOyB9OwogLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKLS8qIEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAq
LwotCQlEMDNERkYwRDBBN0FCRTQzMDA0QzhGMTggLyogRGV2ZWxvcG1lbnQgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhCdWlsZFN0eWxlOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNF
X1NUUklQID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9IERldmVsb3BtZW50OwotCQl9OwotCQlEMDNE
RkYwRTBBN0FCRTQzMDA0QzhGMTggLyogRGVwbG95bWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1
aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7Ci0JCQl9OwotCQkJbmFtZSA9IERlcGxveW1lbnQ7Ci0JCX07Ci0vKiBFbmQgUEJYQnVpbGRT
dHlsZSBzZWN0aW9uICovCi0KIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCiAJCUREMDQxRkYwMDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CkBAIC0yMDU3LDYgKzIwNDIs
OCBAQAogCQk4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODU0RkU3MkUwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyZWVXYWxrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJl
ZVdhbGtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJlZVdhbGtlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUVDOUFGODBBNzFBMkM2MDBFRUVBRUQg
LyogRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RUM5QUY5MEE3MUEyQzYwMEVFRUFF
RCAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3Vh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMzJDQzcwOUFFQzM0MzAwRjgy
QTE4IC8qIFBhdGhDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YXRoQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAzMkNDOTA5QUVDMzRC
MDBGODJBMTggLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1
NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0MCw3ICs0MTI3LDYgQEAKIAkJOTNFRUMx
RUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCUJDQ0Q3NERCMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1MVmlld1Nv
dXJjZURvY3VtZW50LmggKi8sCiAJCQkJOTNFRUMxRjAwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZh
c0dyYWRpZW50LmNwcCAqLywKIAkJCQk5M0VFQzFGMTA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFz
R3JhZGllbnQuaCAqLywKIAkJCQk5MzBDQUI4ODA5QzQ5RUZBMDAyMjlDMDQgLyogQ2FudmFzR3Jh
ZGllbnQuaWRsICovLApAQCAtNDM0Miw2ICs0MzI4LDcgQEAKIAkJCQlBOEVBNzlFNjBBMTkxNkRG
MDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5oICovLAogCQkJCTFBODVCMUQ1MEExQjIzNkMw
MEQ4Qzg3QyAvKiBIVE1MVUxpc3RFbGVtZW50LmlkbCAqLywKIAkJCQlCQ0NENzRFNDBBNEM4RERG
MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgKi8sCisJCQkJQkNDRDc0REIw
QTRDOEQzNTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gaHRtbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01MTUxLDYgKzUx
MzgsNyBAQAogCQkJCUJDNkRBQkYyMEExOTAxNTcwMEU1Q0QxNCAvKiBGb250Q2FjaGUuY3BwICov
LAogCQkJCUJDRjdDMEI3MEExNjg3Q0MwMDMyRjc1QiAvKiBGb250Q2FjaGUuaCAqLywKIAkJCQlC
Q0MwODkxOTBBMUM0NjUyMDA2MTg5QTYgLyogRm9udERhdGEuY3BwICovLAorCQkJCTg1RUM5QUY4
MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovLAogCQkJCUJDQzQ3RTZBMDlBM0ZFNDcw
MEFEQjc3MSAvKiBGb250RGVzY3JpcHRpb24uaCAqLywKIAkJCQlCQ0Y3QzA3NzBBMTY4MEMwMDAz
MkY3NUIgLyogRm9udEZhbGxiYWNrTGlzdC5jcHAgKi8sCiAJCQkJQkNFQjM3NzUwOUI3QkIwRDAw
Q0IzOEIxIC8qIEZvbnRGYWxsYmFja0xpc3QuaCAqLywKQEAgLTUxNzUsNiArNTE2Myw3IEBACiAJ
CQkJQkNGMUE1RUYwOTc4Mzk2MDAwNjFBMTIzIC8qIEludFNpemUuaCAqLywKIAkJCQk2NTkzOTIz
NTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi8sCiAJCQkJNjU5MzkyMzYwOUFFNDM0NjAw
MkM1MzFGIC8qIEtVUkwuaCAqLywKKwkJCQk4NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFu
Z3VhZ2UuaCAqLywKIAkJCQlGNTg3ODUxMzAyREUzNzU5MDFFQTQxMjIgLyogTGlzdEJveC5oICov
LAogCQkJCTkzNTIwN0JEMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi8s
CiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwICovLApAQCAtNTI1
MywxNCArNTI0Miw2IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTRFMTk1OTIzMEEzOURB
Q0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmNwcCAqLywKLQkJCQk0RTE5NTkyNDBBMzlEQUNDMDAy
MjBGRTUgLyogTWVkaWFRdWVyeS5oICovLAotCQkJCTRFMTk1OTI1MEEzOURBQ0MwMDIyMEZFNSAv
KiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLywKLQkJCQk0RTE5NTkyNjBBMzlEQUNDMDAyMjBG
RTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAotCQkJCTRFMTk1OTI3MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLywKLQkJCQk0RTE5NTkyODBBMzlEQUNDMDAyMjBG
RTUgLyogTWVkaWFRdWVyeUV4cC5oICovLAotCQkJCTRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAv
KiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8sCi0JCQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1
IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1
IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRl
ci5pZGwgKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRlckltYWdl
VmFsdWUuY3BwICovLApAQCAtNTMzMSw4ICs1MzEyLDE2IEBACiAJCQkJOTNDQTRDOUIwOURGOTNG
QTAwREY4Njc3IC8qIG1ha2Vwcm9wICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAv
KiBtYWtldG9rZW5pemVyICovLAogCQkJCTkzQ0E0QzlEMDlERjkzRkEwMERGODY3NyAvKiBtYWtl
dmFsdWVzICovLAorCQkJCTRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVO
YW1lcy5jcHAgKi8sCisJCQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVy
ZU5hbWVzLmggKi8sCiAJCQkJQThFQTgwMDEwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5j
cHAgKi8sCiAJCQkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oICovLAor
CQkJCTRFMTk1OTIzMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmNwcCAqLywKKwkJCQk0
RTE5NTkyNDBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeS5oICovLAorCQkJCTRFMTk1OTI1
MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLywKKwkJCQk0RTE5
NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAorCQkJCTRF
MTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLywKKwkJCQk0RTE5
NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovLAogCQkJCUE4MEU2Q0Qx
MEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggKi8sCiAJCQkJOTNDQTRDOUYwOURGOTNGQTAwREY4
Njc3IC8qIHF1aXJrcy5jc3MgKi8sCiAJCQkJQTgwRTc5OTYwQTE5QkQyMTAwN0ZCOEM1IC8qIFJl
Y3QuaWRsICovLApAQCAtNTM1NywxNCArNTM0Niw2IEBACiAJCUY1MjNEMkYzMDJERTQ0M0IwMTg2
MzVDQSAvKiByZW5kZXJpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUFCRERGRTczMEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAg
Ki8sCi0JCQkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8s
Ci0JCQkJQUJEREZFNzUwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVwTWVudS5jcHAgKi8s
Ci0JCQkJQUJEREZFNzYwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVwTWVudS5oICovLAot
CQkJCUFCRERGRTc3MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1cE1lbnVNYWMuaCAqLywK
LQkJCQlBQkRERkU3ODBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBNZW51TWFjLm1tICov
LAotCQkJCUFCRTdCNTIxMEE0ODlGODMwMDMxODgxQyAvKiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0
LmNwcCAqLywKLQkJCQlBQkU3QjUyMjBBNDg5RjgzMDAzMTg4MUMgLyogRGVwcmVjYXRlZFJlbmRl
clNlbGVjdC5oICovLAogCQkJCUE4Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVM
YXlvdXQuY3BwICovLAogCQkJCUE4Q0ZGMDQ5MEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVM
YXlvdXQuaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogYmlkaS5jcHAgKi8s
CkBAIC01MzcyLDYgKzUzNTMsOCBAQAogCQkJCUJDRUE0ODE1MDk3RDkzMDIwMDk0QzlFNCAvKiBi
cmVha19saW5lcy5jcHAgKi8sCiAJCQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFr
X2xpbmVzLmggKi8sCiAJCQkJQkNFQTQ4MTcwOTdEOTMwMjAwOTRDOUU0IC8qIERhdGFSZWYuaCAq
LywKKwkJCQlBQkU3QjUyMTBBNDg5RjgzMDAzMTg4MUMgLyogRGVwcmVjYXRlZFJlbmRlclNlbGVj
dC5jcHAgKi8sCisJCQkJQUJFN0I1MjIwQTQ4OUY4MzAwMzE4ODFDIC8qIERlcHJlY2F0ZWRSZW5k
ZXJTZWxlY3QuaCAqLywKIAkJCQlCQzkyRjFEQjBBNDBBRUEzMDBBQzA3NDYgLyogRGVwcmVjYXRl
ZFNsaWRlci5jcHAgKi8sCiAJCQkJQkM5MkYxREMwQTQwQUVBMzAwQUMwNzQ2IC8qIERlcHJlY2F0
ZWRTbGlkZXIuaCAqLywKIAkJCQlBOENGRjZDQTBBMTU2MUNEMDAwQTQyMzQgLyogRWxsaXBzaXNC
b3guY3BwICovLApAQCAtNTM4OSw4ICs1MzcyLDYgQEAKIAkJCQk5MzVDNDc2MDA5QUM0Q0QxMDBB
NkFBQjQgLyogTGVuZ3RoLmggKi8sCiAJCQkJQThFQTdBNEQwQTE5MUE1MjAwQThFRjVGIC8qIExp
c3RNYXJrZXJCb3guY3BwICovLAogCQkJCUE4RUE3QTQ5MEExOTFBNTIwMEE4RUY1RiAvKiBMaXN0
TWFya2VyQm94LmggKi8sCi0JCQkJQkNFQTQ4NDQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclN0
eWxlLmNwcCAqLywKLQkJCQlCQ0VBNDg0NTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyU3R5bGUu
aCAqLywKIAkJCQlCQ0VBNDgxQzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXBwbGV0LmNwcCAq
LywKIAkJCQlCQ0VBNDgxRDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXBwbGV0LmggKi8sCiAJ
CQkJQkNFQTQ4MUUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmNwcCAqLywKQEAgLTU0
NDEsMTQgKzU0MjIsMjIgQEAKIAkJCQlBOEVBN0E0QzBBMTkxQTUyMDBBOEVGNUYgLyogUmVuZGVy
TGlzdEl0ZW0uaCAqLywKIAkJCQlBOEVBN0E0QjBBMTkxQTUyMDBBOEVGNUYgLyogUmVuZGVyTGlz
dE1hcmtlci5jcHAgKi8sCiAJCQkJQThFQTdBNEEwQTE5MUE1MjAwQThFRjVGIC8qIFJlbmRlckxp
c3RNYXJrZXIuaCAqLywKKwkJCQlBQkRERkU3MzBBNUM2RTZGMDBBM0UxMUQgLyogUmVuZGVyTWVu
dUxpc3QuY3BwICovLAorCQkJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51
TGlzdC5oICovLAogCQkJCUJDRUE0ODQwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3Qu
Y3BwICovLAogCQkJCUJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCAq
LywKIAkJCQlBODcxREVDODBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydC5jcHAgKi8sCiAJ
CQkJQTg3MURFQ0YwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnQuaCAqLywKIAkJCQlBODcx
REVDRTBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydE9iamVjdC5jcHAgKi8sCiAJCQkJQTg3
MURFQ0QwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnRPYmplY3QuaCAqLywKKwkJCQlBQkRE
RkU3NTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBNZW51LmNwcCAqLywKKwkJCQlBQkRE
RkU3NjBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyUG9wdXBNZW51LmggKi8sCisJCQkJQUJEREZF
NzcwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlclBvcHVwTWVudU1hYy5oICovLAorCQkJCUFCRERG
RTc4MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJQb3B1cE1lbnVNYWMubW0gKi8sCiAJCQkJQTg3
MURGREUwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmNwcCAqLywKIAkJCQlBODcx
REZERjBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuaCAqLywKKwkJCQlCQ0VBNDg0
NDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyU3R5bGUuY3BwICovLAorCQkJCUJDRUE0ODQ1MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJTdHlsZS5oICovLAogCQkJCUE4REY0QUUyMDk4MEM0MkMw
MDUyOTgxQiAvKiBSZW5kZXJUYWJsZS5jcHAgKi8sCiAJCQkJQThERjRBRTEwOTgwQzQyQzAwNTI5
ODFCIC8qIFJlbmRlclRhYmxlLmggKi8sCiAJCQkJQThERjRBRTAwOTgwQzQyQzAwNTI5ODFCIC8q
IFJlbmRlclRhYmxlQ2VsbC5jcHAgKi8sCkBAIC02NDE5LDYgKzY0MDgsOCBAQAogCQkJCUUxNDg0
MzJGMEE2NzRGQzIwMDdFNEQzOSAvKiBTdHJlYW1pbmdUZXh0RGVjb2Rlck1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjM0ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RUM5QUZBMEE3MUEyQzYwMEVF
RUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVFQzlBRkIwQTcxQTJDNjAw
RUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTY0NTIsMTIgKzY0NDMsNiBA
QAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQz
MDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2pl
Y3QgIldlYkNvcmUiICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQlidWlsZFN0
eWxlcyA9ICgKLQkJCQlEMDNERkYwRDBBN0FCRTQzMDA0QzhGMTggLyogRGV2ZWxvcG1lbnQgKi8s
Ci0JCQkJRDAzREZGMEUwQTdBQkU0MzAwNEM4RjE4IC8qIERlcGxveW1lbnQgKi8sCi0JCQkpOwog
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJ
RW5nbGlzaCwKQEAgLTc0MjQsNiArNzQwOSw3IEBACiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklY
X0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiAJCQkJR0ND
X1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNDsKQEAgLTc0NjAsNiArNzQ0Niw3IEBACiAJ
CQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FG
RV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5f
QUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwogCQkJCUdDQ19XQVJOX05PTl9WSVJUVUFM
X0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNDsK
QEAgLTc0OTYsNiArNzQ4Myw3IEBACiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9
IFlFUzsKIAkJCQlHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiAJCQkJR0NDX1RSRUFUX1dB
Uk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJ
TkUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwog
CQkJCUdDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CiAJCQkJV0FSTklOR19D
RkxBR1MgPSAoCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIgogCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJD
YW52YXNQYXR0ZXJuLmgiCkBAIC0yOCw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJKU0NhbnZh
c1BhdHRlcm4uaCIKLSNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogI2lu
Y2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJranNfaHRtbC5oIgpAQCAtMzI2LDQgKzMyNiw0IEBAIEpTVmFsdWUq
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmUKICAgICByZXR1cm4gMDsKIH0KIAotfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuaAkocmV2aXNpb24gMTU2OTMpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBYU0xUUHJvY2Vz
c29yOwotfTsKK30KIAogLy8gRXZlbnR1YWxseSB3ZSBzaG91bGQgaW1wbGVtZW50IFhTTFRFeGNl
cHRpb246CiAvLyBodHRwOi8vbHhyLm1vemlsbGEub3JnL3NlYW1vbmtleS9zb3VyY2UvY29udGVu
dC94c2wvcHVibGljL25zSVhTTFRFeGNlcHRpb24uaWRsCkBAIC02Myw4ICs2Myw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEpTT2JqZWN0ICpjb25zdHJ1Y3QoRXhlY1N0YXRlICpleGVjLCBjb25z
dCBMaXN0ICZhcmdzKSB7IHJldHVybiBuZXcgSlNYU0xUUHJvY2Vzc29yKGV4ZWMpOyB9CiB9Owog
Ci19OworfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgorI2VuZGlmIC8vIFhTTFRQcm9jZXNz
b3JfSAogCiAjZW5kaWYgLy8gS0hUTUxfWFNMVApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfZG9tbm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbW5v
ZGUuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19kb21ub2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBBdHRy
aWJ1dGVzLCBOYW1lc3BhY2VVUkksIFByZWZpeCwgTG9jYWxOYW1lLCBPd25lckRvY3VtZW50LCBJ
bnNlcnRCZWZvcmUsCiAgICAgICAgIFJlcGxhY2VDaGlsZCwgUmVtb3ZlQ2hpbGQsIEFwcGVuZENo
aWxkLCBIYXNBdHRyaWJ1dGVzLCBIYXNDaGlsZE5vZGVzLAogICAgICAgICBDbG9uZU5vZGUsIE5v
cm1hbGl6ZSwgSXNTdXBwb3J0ZWQsIENvbnRhaW5zLCBJc1NhbWVOb2RlLCBJc0VxdWFsTm9kZSwg
VGV4dENvbnRlbnQsCi0gICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNl
VVJJLCBMb29rdXBQcmVmaXgsCisgICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFt
ZXNwYWNlVVJJLCBMb29rdXBQcmVmaXgKICAgICB9OwogICAgIAogcHJvdGVjdGVkOgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DU1MuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ1NTLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZW51bSB7CiAg
ICAgRE9NX0lNUE9SVF9SVUxFICAgICAgICAgICAgICAgID0gMywKICAgICBET01fTUVESUFfUlVM
RSAgICAgICAgICAgICAgICAgPSA0LAogICAgIERPTV9GT05UX0ZBQ0VfUlVMRSAgICAgICAgICAg
ICA9IDUsCi0gICAgRE9NX1BBR0VfUlVMRSAgICAgICAgICAgICAgICAgID0gNiwKKyAgICBET01f
UEFHRV9SVUxFICAgICAgICAgICAgICAgICAgPSA2CiB9OwogCiBAaW50ZXJmYWNlIERPTUNTU1J1
bGUgOiBET01PYmplY3QKQEAgLTExMSw3ICsxMTEsNyBAQCBlbnVtIHsKICAgICBET01fQ1NTX0lO
SEVSSVQgPSAwLAogICAgIERPTV9DU1NfUFJJTUlUSVZFX1ZBTFVFID0gMSwKICAgICBET01fQ1NT
X1ZBTFVFX0xJU1QgPSAyLAotICAgIERPTV9DU1NfQ1VTVE9NID0gMywKKyAgICBET01fQ1NTX0NV
U1RPTSA9IDMKIH07CiAKIEBpbnRlcmZhY2UgRE9NQ1NTVmFsdWUgOiBET01PYmplY3QKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBlbnVtIHsKICAgICBET01fQ1NTX0FUVFIgICAgICAgICAgICAgICAgICAg
ICAgID0gMjIsCiAgICAgRE9NX0NTU19DT1VOVEVSICAgICAgICAgICAgICAgICAgICA9IDIzLAog
ICAgIERPTV9DU1NfUkVDVCAgICAgICAgICAgICAgICAgICAgICAgPSAyNCwKLSAgICBET01fQ1NT
X1JHQkNPTE9SICAgICAgICAgICAgICAgICAgID0gMjUsCisgICAgRE9NX0NTU19SR0JDT0xPUiAg
ICAgICAgICAgICAgICAgICA9IDI1CiB9OwogCiBAaW50ZXJmYWNlIERPTUNTU1ByaW1pdGl2ZVZh
bHVlIDogRE9NQ1NTVmFsdWUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw3IEBAIGVudW0gewogICAgIERPTV9TWU5UQVhfRVJSICAgICAgICAgICAg
ICAgICAgICA9IDEyLAogICAgIERPTV9JTlZBTElEX01PRElGSUNBVElPTl9FUlIgICAgICA9IDEz
LAogICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAgICAgICA9IDE0LAotICAgIERPTV9J
TlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1LAorICAgIERPTV9JTlZBTElEX0FDQ0VT
U19FUlIgICAgICAgICAgICA9IDE1CiB9OwogCiBAaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9u
IDogRE9NT2JqZWN0CkBAIC04NSw3ICs4NSw3IEBAIGVudW0gewogICAgIERPTV9ET0NVTUVOVF9O
T0RFICAgICAgICAgICAgICAgICA9IDksCiAgICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAg
ICAgICAgID0gMTAsCiAgICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEs
Ci0gICAgRE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIsCisgICAgRE9NX05P
VEFUSU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKIH07CiAKIEBpbnRlcmZhY2UgRE9NTm9k
ZSA6IERPTU9iamVjdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNCwxMyArMTE0LDEzIEBAIGVudW0gewogLSAodW5zaWduZWQgc2hvcnQpb3JpZW50
OwogLSAoQk9PTClob3Jpem9udGFsT3ZlcmZsb3c7CiAtIChCT09MKXZlcnRpY2FsT3ZlcmZsb3c7
Ci1AZW5kOworQGVuZAogCiBlbnVtIHsKICAgICBET01fS0VZX0xPQ0FUSU9OX1NUQU5EQVJEICAg
ICAgPSAweDAwLAogICAgIERPTV9LRVlfTE9DQVRJT05fTEVGVCAgICAgICAgICA9IDB4MDEsCiAg
ICAgRE9NX0tFWV9MT0NBVElPTl9SSUdIVCAgICAgICAgID0gMHgwMiwKLSAgICBET01fS0VZX0xP
Q0FUSU9OX05VTVBBRCAgICAgICAgPSAweDAzLAorICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFE
ICAgICAgICA9IDB4MDMKIH07CiAKIEBpbnRlcmZhY2UgRE9NS2V5Ym9hcmRFdmVudCA6IERPTVVJ
RXZlbnQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCShyZXZpc2lvbiAxNTY5MykKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIGVudW0gewogICAgIC8vIERPTSByYW5nZSBleGNlcHRpb24gY29kZXMKICAgICAv
LwogICAgIERPTV9CQURfQk9VTkRBUllQT0lOVFNfRVJSICAgICAgICA9IDEsCi0gICAgRE9NX0lO
VkFMSURfTk9ERV9UWVBFX0VSUiAgICAgICAgID0gMiwKKyAgICBET01fSU5WQUxJRF9OT0RFX1RZ
UEVfRVJSICAgICAgICAgPSAyCiB9OwogCiBlbnVtIHsKQEAgLTQyLDcgKzQyLDcgQEAgZW51bSB7
CiAgICAgRE9NX1NUQVJUX1RPX1NUQVJUICAgICAgICAgICAgICAgID0gMCwKICAgICBET01fU1RB
UlRfVE9fRU5EICAgICAgICAgICAgICAgICAgPSAxLAogICAgIERPTV9FTkRfVE9fRU5EICAgICAg
ICAgICAgICAgICAgICA9IDIsCi0gICAgRE9NX0VORF9UT19TVEFSVCAgICAgICAgICAgICAgICAg
ID0gMywKKyAgICBET01fRU5EX1RPX1NUQVJUICAgICAgICAgICAgICAgICAgPSAzCiB9OwogCiBA
aW50ZXJmYWNlIERPTVJhbmdlIDogRE9NT2JqZWN0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NVHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVRyYXZlcnNhbC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01UcmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBlbnVtIHsKICAg
ICAvLyBDb25zdGFudHMgcmV0dXJuZWQgYnkgYWNjZXB0Tm9kZQogICAgIERPTV9GSUxURVJfQUND
RVBUICAgICAgICAgICAgICAgICAgPSAxLAogICAgIERPTV9GSUxURVJfUkVKRUNUICAgICAgICAg
ICAgICAgICAgPSAyLAotICAgIERPTV9GSUxURVJfU0tJUCAgICAgICAgICAgICAgICAgICAgPSAz
LAorICAgIERPTV9GSUxURVJfU0tJUCAgICAgICAgICAgICAgICAgICAgPSAzCiB9OwogCiBlbnVt
IHsKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSB7CiAgICAgRE9NX1NIT1dfRE9DVU1FTlQgICAgICAg
ICAgICAgICAgICA9IDB4MDAwMDAxMDAsCiAgICAgRE9NX1NIT1dfRE9DVU1FTlRfVFlQRSAgICAg
ICAgICAgICA9IDB4MDAwMDAyMDAsCiAgICAgRE9NX1NIT1dfRE9DVU1FTlRfRlJBR01FTlQgICAg
ICAgICA9IDB4MDAwMDA0MDAsCi0gICAgRE9NX1NIT1dfTk9UQVRJT04gICAgICAgICAgICAgICAg
ICA9IDB4MDAwMDA4MDAsCisgICAgRE9NX1NIT1dfTk9UQVRJT04gICAgICAgICAgICAgICAgICA9
IDB4MDAwMDA4MDAKIH07CiAKIEBwcm90b2NvbCBET01Ob2RlRmlsdGVyIDxOU09iamVjdD4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IGVudW0gewogICAgIERPTV9VTk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFICAgPSA2LAogICAg
IERPTV9PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSAgICAgPSA3LAogICAgIERPTV9BTllfVU5P
UkRFUkVEX05PREVfVFlQRSAgICAgICAgPSA4LAotICAgIERPTV9GSVJTVF9PUkRFUkVEX05PREVf
VFlQRSAgICAgICAgPSA5LAorICAgIERPTV9GSVJTVF9PUkRFUkVEX05PREVfVFlQRSAgICAgICAg
PSA5CiB9OwogCiBAaW50ZXJmYWNlIERPTVhQYXRoUmVzdWx0IDogRE9NT2JqZWN0CkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNTY5MykKKysr
IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiBlbnVtIHsKICAgICBXZWJT
ZWxlY3Rpb25TdGF0ZU5vbmUsCiAgICAgV2ViU2VsZWN0aW9uU3RhdGVDYXJldCwKLSAgICBXZWJT
ZWxlY3Rpb25TdGF0ZVJhbmdlLAorICAgIFdlYlNlbGVjdGlvblN0YXRlUmFuZ2UKIH0gV2ViU2Vs
ZWN0aW9uU3RhdGU7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0xNTcsNyArMTU3LDcgQEAgdHlwZWRl
ZiBlbnVtIHsKICAgICBPYmplY3RFbGVtZW50Tm9uZSwKICAgICBPYmplY3RFbGVtZW50SW1hZ2Us
CiAgICAgT2JqZWN0RWxlbWVudEZyYW1lLAotICAgIE9iamVjdEVsZW1lbnRQbHVnaW4sCisgICAg
T2JqZWN0RWxlbWVudFBsdWdpbgogfSBPYmplY3RFbGVtZW50VHlwZTsKIAogQHByb3RvY29sIFdl
YkNvcmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA8TlNPYmplY3Q+CkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9tYWMvV2ViQ29yZUtleWJvYXJkQWNjZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2UvbWFjL1dlYkNvcmVLZXlib2FyZEFjY2Vzcy5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdl
YkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlS2V5Ym9hcmRBY2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNSArMjcsNSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdlYkNvcmVLZXlib2FyZEFjY2Vz
c0RlZmF1bHQgICAgID0gMHgwMDAwMDAwMCwKICAgICBXZWJDb3JlS2V5Ym9hcmRBY2Nlc3NGdWxs
ICAgICAgICA9IDB4MDAwMDAwMDEsCiAgICAgLy8gdGhpcyBmbGFnIG1heSBiZSBvcidlZCB3aXRo
IGVpdGhlciBvZiB0aGUgdHdvIGFib3ZlCi0gICAgV2ViQ29yZUtleWJvYXJkQWNjZXNzVGFic1Rv
TGlua3MgPSAweDEwMDAwMDAwLCAKKyAgICBXZWJDb3JlS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5r
cyA9IDB4MTAwMDAwMDAKIH0gV2ViQ29yZUtleWJvYXJkVUlNb2RlOwpJbmRleDogV2ViQ29yZS9j
c3MvbWFrZXByb3AKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvbWFrZXByb3AJKHJldmlzaW9u
IDE1NjkzKQorKysgV2ViQ29yZS9jc3MvbWFrZXByb3AJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYg
KzcxLDYgQEAgcHJpbnQgIiAgICBpZihpZCA+PSBDU1NfUFJPUF9UT1RBTCB8fCBpZAogcHJpbnQg
IiAgICAgIHJldHVybiBTdHJpbmcoKTsiO1wKIHByaW50ICIgICAgZWxzZSI7XAogcHJpbnQgIiAg
ICAgIHJldHVybiBTdHJpbmcocHJvcGVydHlMaXN0W2lkXSk7IjsgXAotcHJpbnQgIn07IjsgXAor
cHJpbnQgIn0iOyBcCiBwcmludCAiIjsgXAogfScgPj4gQ1NTUHJvcGVydHlOYW1lcy5jCkluZGV4
OiBXZWJDb3JlL2Nzcy9tYWtldmFsdWVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL21ha2V2
YWx1ZXMJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9jc3MvbWFrZXZhbHVlcwkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNiArNzAsNiBAQCBwcmludCAiICAgIGlmKGlkID49IENTU19WQUxfVE9U
QUwgfHwgaWQgCiBwcmludCAiICAgICAgcmV0dXJuIFN0cmluZygpOyI7XAogcHJpbnQgIiAgICBl
bHNlIjtcCiBwcmludCAiICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZUxpc3RbaWRdKTsiOyBcCi1w
cmludCAifTsiOyBcCitwcmludCAifSI7IFwKIHByaW50ICIiOyBcCiB9JyA+PiBDU1NWYWx1ZUtl
eXdvcmRzLmMKSW5kZXg6IFdlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNyArMjksMTcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGlsZE5vZGVMaXN0IDogcHVibGljIE5v
ZGVMaXN0Ci17CitjbGFzcyBDaGlsZE5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKIHB1Ymxp
YzoKLSAgICBDaGlsZE5vZGVMaXN0KCBOb2RlICpuKTsKKyAgICBDaGlsZE5vZGVMaXN0KE5vZGUq
KTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBO
b2RlICppdGVtICggdW5zaWduZWQgaW5kZXggKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29s
IG5vZGVNYXRjaGVzKCBOb2RlICp0ZXN0Tm9kZSApIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBu
b2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3Q7CiB9OwogCi19OyAvL25hbWVzcGFjZQot
I2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBET01fQ2hpbGROb2Rl
TGlzdEltcGxfaApJbmRleDogV2ViQ29yZS9kb20vRG9jUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jUHRyLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9kb20vRG9jUHRy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRG9jUHRyCi17Ci0gcHVibGljOgordGVtcGxh
dGUgPGNsYXNzIFQ+IGNsYXNzIERvY1B0ciB7CitwdWJsaWM6CiAgICAgRG9jUHRyKCkgOiBtX3B0
cigwKSB7fQogICAgIERvY1B0cihUICpwdHIpIDogbV9wdHIocHRyKSB7IGlmIChwdHIpIHB0ci0+
c2VsZk9ubHlSZWYoKTsgfQogICAgIERvY1B0cihjb25zdCBEb2NQdHIgJm8pIDogbV9wdHIoby5t
X3B0cikgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+c2VsZk9ubHlSZWZSZWYoKTsgfQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTU5PREVJTlNF
UlRFRElOVE9ET0NVTUVOVF9MSVNURU5FUiA9IDB4MTAsCiAgICAgICAgIERPTUFUVFJNT0RJRklF
RF9MSVNURU5FUiAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAgIERPTUNIQVJBQ1RFUkRBVEFN
T0RJRklFRF9MSVNURU5FUiAgICA9IDB4NDAsCi0gICAgICAgIE9WRVJGTE9XQ0hBTkdFRF9MSVNU
RU5FUiAgICAgICAgICAgICA9IDB4ODAsCisgICAgICAgIE9WRVJGTE9XQ0hBTkdFRF9MSVNURU5F
UiAgICAgICAgICAgICA9IDB4ODAKICAgICB9OwogCiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGUo
TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyByZXR1cm4gKG1fbGlzdGVuZXJUeXBl
cyAmIGxpc3RlbmVyVHlwZSk7IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAkocmV2aXNpb24gMTU2
OTMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwyNSArMjYsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQSByYW5nZSBvZiBhIG5v
ZGUgd2l0aGluIGEgZG9jdW1lbnQgdGhhdCBpcyAibWFya2VkIiwgc3VjaCBhcyBiZWluZyBtaXNz
cGVsbGVkCi1zdHJ1Y3QgRG9jdW1lbnRNYXJrZXIKLXsKK3N0cnVjdCBEb2N1bWVudE1hcmtlciB7
CisKICAgICBlbnVtIE1hcmtlclR5cGUgewotICAgICAgICBBbGxNYXJrZXJzID0gLTEsCi0gICAg
ICAgIFNwZWxsaW5nID0gMCwKLSAgICAgICAgVGV4dE1hdGNoLAorICAgICAgICBBbGxNYXJrZXJz
ICA9IC0xLAorICAgICAgICBTcGVsbGluZyAgICA9IDAsCisgICAgICAgIFRleHRNYXRjaCAgID0g
MQogICAgIH07Ci0gICAgCisKICAgICBlbnVtIE1hcmtlclR5cGUgdHlwZTsKLSAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OwotICAgIAotICAgIGJvb2wgb3BlcmF0b3IgPT0gKGNv
bnN0IERvY3VtZW50TWFya2VyICZvKSBjb25zdCB7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7
CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERv
Y3VtZW50TWFya2VyJiBvKSBjb25zdAorICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gby50
eXBlICYmIHN0YXJ0T2Zmc2V0ID09IG8uc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0ID09IG8uZW5k
T2Zmc2V0OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yICE9IChjb25zdCBEb2N1bWVudE1hcmtl
ciAmbykgY29uc3QgeworCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERvY3VtZW50TWFya2Vy
JiBvKSBjb25zdAorICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQog
fTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBET01f
RG9jdW1lbnRNYXJrZXJfaApJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXROb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnRUYXJnZXROb2RlLmgJKHJldmlzaW9uIDE1Njkz
KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MSw2ICsxMjEsNiBAQCBpbmxpbmUgdm9pZCBhbGxvd0V2ZW50RGlzcGF0Y2goKSB7IH0KIAogI2Vu
ZGlmIC8vIE5ERUJVRyAKIAotfSAvL25hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIERPTV9FdmVudFRhcmdldE5vZGVJbXBsX2gKSW5k
ZXg6IFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fU1RBTkRBUkQgICAgICA9IDB4MDAs
CiAgICAgICAgICAgICBET01fS0VZX0xPQ0FUSU9OX0xFRlQgICAgICAgICAgPSAweDAxLAogICAg
ICAgICAgICAgRE9NX0tFWV9MT0NBVElPTl9SSUdIVCAgICAgICAgID0gMHgwMiwKLSAgICAgICAg
ICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEICAgICAgICA9IDB4MDMsCisgICAgICAgICAgICBE
T01fS0VZX0xPQ0FUSU9OX05VTVBBRCAgICAgICAgPSAweDAzCiAgICAgICAgIH07CiAgICAgICAg
IAogICAgICAgICBLZXlib2FyZEV2ZW50KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lTm9kZUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMjUgKzMzLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8qKgogICogTm9kZUxpc3Qgd2hp
Y2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWU9IiB0YWcK
ICAqLwotY2xhc3MgTmFtZU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0Ci17CitjbGFzcyBOYW1l
Tm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgotICAgIE5hbWVOb2RlTGlzdCgg
Tm9kZSAqZG9jLCBjb25zdCBTdHJpbmcgJnQgKTsKKyAgICBOYW1lTm9kZUxpc3QoTm9kZSogZG9j
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gRE9NIG1ldGhvZHMgb3ZlcnJpZGRlbiBm
cm9tICBwYXJlbnQgY2xhc3NlcwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIE5vZGUgKml0ZW0gKCB1bnNpZ25lZCBpbmRleCApIGNvbnN0OworICAg
IHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICAvLyBPdGhl
ciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCi0gICAgdmlydHVhbCB2b2lkIHJvb3ROb2RlQ2hp
bGRyZW5DaGFuZ2VkKCkge307CisgICAgdmlydHVhbCB2b2lkIHJvb3ROb2RlQ2hpbGRyZW5DaGFu
Z2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJvb3ROb2RlQXR0cmlidXRlQ2hhbmdlZCgpIHsg
Tm9kZUxpc3Q6OnJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCk7IH0KIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyggTm9kZSAqdGVzdE5vZGUgKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0OwogCiAgICAgU3Ry
aW5nIG5vZGVOYW1lOwogfTsKIAotfTsgLy9uYW1lc3BhY2UKLSNlbmRpZgorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NX05hbWVOb2RlTGlzdEltcGxfaApJbmRleDogV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUXVh
bGlmaWVkTmFtZS5jcHAJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTdHJpbmcgUXVhbGlm
aWVkTmFtZTo6dG9TdHJpbmcoKSBjb25zdAogfQogCiAvLyBHbG9iYWwgaW5pdCByb3V0aW5lcwot
REVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCBhbnlOYW1lLCBudWxsQXRvbSwgc3RhckF0b20s
IHN0YXJBdG9tKTsKK0RFRklORV9HTE9CQUwoUXVhbGlmaWVkTmFtZSwgYW55TmFtZSwgbnVsbEF0
b20sIHN0YXJBdG9tLCBzdGFyQXRvbSkKIAogdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KCkKIHsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVHlwaW5nQ29tbWFuZCA6IHB1YmxpYyBD
b21wb3NpdGVFZGl0Q29tbWFuZAoteworY2xhc3MgVHlwaW5nQ29tbWFuZCA6IHB1YmxpYyBDb21w
b3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgZW51bSBFVHlwaW5nQ29tbWFuZCB7IAog
ICAgICAgICBEZWxldGVLZXksIApAQCAtMzksNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIElu
c2VydFRleHQsIAogICAgICAgICBJbnNlcnRMaW5lQnJlYWssIAogICAgICAgICBJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IsCi0gICAgICAgIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVk
Q29udGVudCwKKyAgICAgICAgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50
CiAgICAgfTsKIAogICAgIFR5cGluZ0NvbW1hbmQoRG9jdW1lbnQgKmRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCwgY29uc3QgU3RyaW5nICZ0ZXh0ID0gIiIsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0
ID0gZmFsc2UsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFy
aXR5KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1VubGlua0NvbW1hbmQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSAr
MzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVbmxpbmtDb21tYW5kIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kCi17CitjbGFzcyBVbmxpbmtDb21tYW5kIDogcHVi
bGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBVbmxpbmtDb21tYW5kKERv
Y3VtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKICAgICB2aXJ0dWFsIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIEVkaXRBY3Rpb25Vbmxpbms7IH0K
LXByaXZhdGU6CiB9OwogCi19IC8vIG5hbWVzcGFjZSBraHRtbAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gVW5saW5rQ29tbWFuZF9oClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorI2VuZGlmIC8vIFVubGlua0NvbW1hbmRfaApJbmRleDogV2ViQ29yZS9odG1sL0Zvcm1E
YXRhTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuaAkocmV2
aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDE1ICsyNywxNSBAQAogI2lmbmRlZiBIVE1MX0Zvcm1EYXRhTGlzdF9oCiAjZGVm
aW5lIEhUTUxfRm9ybURhdGFMaXN0X2gKIAorI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3Qu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgotI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgRm9ybURhdGFMaXN0SXRlbSB7Ci0gICAgRm9ybURhdGFMaXN0SXRlbShjb25z
dCBEZXByZWNhdGVkQ1N0cmluZyAmZGF0YSkgOiBtX2RhdGEoZGF0YSkgeyB9Ci0gICAgRm9ybURh
dGFMaXN0SXRlbShjb25zdCBEZXByZWNhdGVkU3RyaW5nICZwYXRoKSA6IG1fcGF0aChwYXRoKSB7
IH0KKyAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJlY2F0ZWRDU3RyaW5nJiBkYXRhKSA6
IG1fZGF0YShkYXRhKSB7IH0KKyAgICBGb3JtRGF0YUxpc3RJdGVtKGNvbnN0IERlcHJlY2F0ZWRT
dHJpbmcmIHBhdGgpIDogbV9wYXRoKHBhdGgpIHsgfQogCiAgICAgRGVwcmVjYXRlZFN0cmluZyBt
X3BhdGg7CiAgICAgRGVwcmVjYXRlZENTdHJpbmcgbV9kYXRhOwpAQCAtNDUsMTUgKzQ1LDE1IEBA
IGNsYXNzIEZvcm1EYXRhTGlzdCB7CiBwdWJsaWM6CiAgICAgRm9ybURhdGFMaXN0KGNvbnN0IFRl
eHRFbmNvZGluZyYpOwogCi0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAma2V5LCBj
b25zdCBTdHJpbmcgJnZhbHVlKQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgeyBhcHBlbmRTdHJpbmcoa2V5LmRlcHJl
Y2F0ZWRTdHJpbmcoKSk7IGFwcGVuZFN0cmluZyh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOyB9
Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyAma2V5LCBjb25zdCBEZXByZWNhdGVk
U3RyaW5nICZ2YWx1ZSkKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IERlcHJlY2F0ZWRTdHJpbmcmIHZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXku
ZGVwcmVjYXRlZFN0cmluZygpKTsgYXBwZW5kU3RyaW5nKHZhbHVlKTsgfQotICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCBTdHJpbmcgJmtleSwgY29uc3QgRGVwcmVjYXRlZENTdHJpbmcgJnZhbHVl
KQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgRGVwcmVjYXRl
ZENTdHJpbmcmIHZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXkuZGVwcmVjYXRlZFN0
cmluZygpKTsgYXBwZW5kU3RyaW5nKHZhbHVlKTsgfQotICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCBTdHJpbmcgJmtleSwgaW50IHZhbHVlKQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBTdHJp
bmcmIGtleSwgaW50IHZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXkuZGVwcmVjYXRl
ZFN0cmluZygpKTsgYXBwZW5kU3RyaW5nKERlcHJlY2F0ZWRTdHJpbmc6Om51bWJlcih2YWx1ZSkp
OyB9Ci0gICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyAma2V5LCBjb25zdCBTdHJpbmcg
JmZpbGVuYW1lKTsKKyAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0
b3I8Rm9ybURhdGFMaXN0SXRlbT4gYmVnaW4oKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2xp
c3QuYmVnaW4oKTsgfQpAQCAtNjEsMTMgKzYxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgeyByZXR1
cm4gbV9saXN0LmVuZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmRTdHJpbmcoY29u
c3QgRGVwcmVjYXRlZENTdHJpbmcgJnMpOwotICAgIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IERl
cHJlY2F0ZWRTdHJpbmcgJnMpOworICAgIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IERlcHJlY2F0
ZWRDU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgRGVwcmVjYXRlZFN0cmlu
ZyYpOwogCiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgRGVwcmVjYXRlZFZhbHVl
TGlzdDxGb3JtRGF0YUxpc3RJdGVtPiBtX2xpc3Q7CiB9OwogCi19OworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBIVE1MX0Zvcm1EYXRhTGlzdF9oCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNv
cmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCAr
MjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxCbG9ja3F1b3RlRWxl
bWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3MgSFRNTEJsb2NrcXVvdGVFbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1MQmxvY2txdW90ZUVsZW1l
bnQoRG9jdW1lbnQqKTsKICAgICB+SFRNTEJsb2NrcXVvdGVFbGVtZW50KCk7CkBAIC00MSw1ICs0
MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENpdGUoY29uc3QgU3RyaW5nJik7CiB9OwogCi19
OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBIVE1MQmxvY2txdW90ZUVsZW1lbnRfSApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgJKHJldmlz
aW9uIDE1NjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE1ICsyOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhU
TUxEaXZFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MRGl2RWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTERpdkVsZW1lbnQoRG9j
dW1lbnQqKTsKICAgICB+SFRNTERpdkVsZW1lbnQoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgSFRN
TFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c1Jl
cXVpcmVkOyB9CiAgICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiA1
OyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKQEAgLTQ0LDUgKzQzLDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CiB9OwogCi19OyAvL25h
bWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIVE1M
RGl2RWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MjEgKzI2LDE3IEBACiAjaWZuZGVmIEhUTUxfSFRNTEZvcm1FbGVtZW50SW1wbF9ICiAjZGVmaW5l
IEhUTUxfSFRNTEZvcm1FbGVtZW50SW1wbF9ICiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiIAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgRm9ybURhdGE7Ci19OworI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBIVE1MR2VuZXJpY0Zvcm1FbGVt
ZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbjsK
IAotY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBI
VE1MRm9ybUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxG
b3JtRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtRWxlbWVudCgpOwpA
QCAtNjQsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXV0b2NvbXBsZXRlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICB2b2lkIHJlZ2lzdGVy
Rm9ybUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRm9y
bUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudCopOwpAQCAtODEsMTAgKzc3LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlQWNyb3NzUmVtb3ZlKGJvb2wgYikgeyBtX3ByZXNl
cnZlQWNyb3NzUmVtb3ZlID0gYjsgfQogICAgIGJvb2wgcHJlc2VydmVBY3Jvc3NSZW1vdmUoKSBj
b25zdCB7IHJldHVybiBtX3ByZXNlcnZlQWNyb3NzUmVtb3ZlOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlICphdHRyKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzdWJt
aXRDbGljaygpOwotICAgIGJvb2wgZm9ybVdvdWxkSGF2ZVNlY3VyZVN1Ym1pc3Npb24oY29uc3Qg
U3RyaW5nICZ1cmwpOworICAgIGJvb2wgZm9ybVdvdWxkSGF2ZVNlY3VyZVN1Ym1pc3Npb24oY29u
c3QgU3RyaW5nJiB1cmwpOwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lkIHNl
dE5hbWUoY29uc3QgU3RyaW5nJik7CkBAIC0xMzAsNiArMTI2LDYgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgb2xkTmFtZUF0dHI7CiB9OwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEhUTUxfSFRNTEZvcm1FbGVtZW50SW1wbF9ICklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9odG1sL0hU
TUxIUkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxIUkVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQK
LXsKK2NsYXNzIEhUTUxIUkVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgog
ICAgIEhUTUxIUkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB+SFRNTEhSRWxlbWVudCgpOwpAQCAt
NTMsNSArNTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaWR0aChjb25zdCBTdHJpbmcmKTsK
IH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEhUTUxIUkVsZW1lbnRfSApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5n
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQu
aAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICAqCiAgKi8KIAotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogI2lmbmRlZiBIVE1MSGVhZGluZ0VsZW1lbnRfSAogI2RlZmluZSBIVE1MSGVhZGlu
Z0VsZW1lbnRfSAogCkBAIC0yOSw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSFRNTEhlYWRpbmdFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBI
VE1MSGVhZGluZ0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhU
TUxIZWFkaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAt
NDIsNSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGlnbihjb25zdCBTdHJpbmcmKTsK
IH07CiAKLX07IC8vbmFtZXNwYWNlCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEhUTUxIZWFkaW5nRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxl
bWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEhUTUxNYXJxdWVlRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAotewor
Y2xhc3MgSFRNTE1hcnF1ZWVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
ICAgICBIVE1MTWFycXVlZUVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICAKQEAgLTQ1LDUgKzQ0LDYg
QEAgcHJpdmF0ZToKICAgICBpbnQgbV9taW5pbXVtRGVsYXk7CiB9OwogCi19OyAvL25hbWVzcGFj
ZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIVE1MTWFycXVl
ZUVsZW1lbnRfSApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgJKHJldmlzaW9u
IDE1NjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDggKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBI
VE1MUGFyYWdyYXBoRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudAoteworY2xhc3MgSFRNTFBh
cmFncmFwaEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxQ
YXJhZ3JhcGhFbGVtZW50KERvY3VtZW50Kik7CiAKQEAgLTQ0LDUgKzQzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CiB9OwogCi19OyAvL25hbWVzcGFjZQot
I2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIVE1MUGFyYWdyYXBo
RWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxQbHVnSW5F
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50Ci17CitjbGFzcyBIVE1MUGx1Z0luRWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKICAgICB+SFRNTFBsdWdJbkVs
ZW1lbnQoKTsKQEAgLTgwLDYgKzc5LDYgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9m
cmFtZU5hbWU7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2Vu
ZGlmIC8vIEhUTUxQbHVnSW5FbGVtZW50X0gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCShyZXZp
c2lvbiAxNTY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRN
TFByZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQKLXsKK2NsYXNzIEhUTUxQcmVFbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1MUHJlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDEsMTAgKzQwLDExIEBAIHB1Ymxp
YzoKIAogICAgIGludCB3aWR0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpOwot
ICAgIAorCiAgICAgYm9vbCB3cmFwKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXcmFwKGJvb2wgYik7
CiB9OwogCi19OyAvL25hbWVzcGFjZQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBIVE1MUHJlRWxlbWVudF9ICkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2Vu
aXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgJKHJldmlz
aW9uIDE1NjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBEaXNjYXJkTEYgPSAx
IDw8IDIwLCAvLyBGSVhNRTogc2hvdWxkIGNsYXJpZnkgZGlmZmVyZW5jZSBiZXR3ZWVuIHNraXAg
YW5kIGRpc2NhcmQKICAgICAgICAgICAgIEFsbG93WWllbGQgPSAxIDw8IDIxLAogICAgICAgICAg
ICAgTG9hZGluZ0V4dFNjcmlwdCA9IDEgPDwgMjIsCi0gICAgICAgICAgICBGb3JjZVN5bmNocm9u
b3VzID0gMSA8PCAyMywKKyAgICAgICAgICAgIEZvcmNlU3luY2hyb25vdXMgPSAxIDw8IDIzCiAg
ICAgICAgIH07CiAgICAgCiAgICAgICAgIHZvaWQgc2V0Qml0KFN0YXRlQml0cyBiaXQsIGJvb2wg
dmFsdWUpIApJbmRleDogV2ViQ29yZS9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE1NjkzKQorKysgV2Vi
Q29yZS9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE1ICsyMiwx
NiBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCiAj
aW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMv
c3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogCkBA
IC03NzEsNCArNzcyLDQgQEAgSWNvbkRhdGFiYXNlOjp+SWNvbkRhdGFiYXNlKCkKICAgICBtX2Ri
LmNsb3NlKCk7CiB9CiAKLX0gLy9uYW1lc3BhY2UgV2ViQ29yZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9pY29uL1NRTFN0
YXRlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pY29uL1NRTFN0YXRlbWVudC5jcHAJ
KHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9pY29uL1NRTFN0YXRlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDEwICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNRTERhdGFiYXNlLmgiCiAKLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1Miw1ICszNTMsNCBAQCBi
b29sIFNRTFN0YXRlbWVudDo6cmV0dXJuRG91YmxlUmVzdWx0cyhpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2Vi
Q29yZS9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS0NhbnZhc0ZpbHRlclF1YXJ0ejsKIAog
Ly8gRW51bWVyYXRpb25zCi10eXBlZGVmIGVudW0KLXsKK3R5cGVkZWYgZW51bSB7CiAgICAgRkVf
RElTVEFOVF9MSUdIVCA9IDAsCiAgICAgRkVfUE9JTlRfTElHSFQgPSAxLAogICAgIEZFX1NQT1Rf
TElHSFQgPSAyLApAQCAtNjQsOCArNjMsMTkgQEAgdHlwZWRlZiBlbnVtCiAKIGNsYXNzIEtDYW52
YXNQb2ludDNGIHsKIHB1YmxpYzoKLSAgICBLQ2FudmFzUG9pbnQzRigpIDogbV94KDApLCBtX3ko
MCksIG1feigwKSB7IH0KLSAgICBLQ2FudmFzUG9pbnQzRihmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6KSA6IG1feCh4KSwgbV95KHkpLCBtX3ooeikgeyB9CisgICAgS0NhbnZhc1BvaW50M0YoKQor
ICAgICAgICA6IG1feCgwKQorICAgICAgICAsIG1feSgwKQorICAgICAgICAsIG1feigwKQorICAg
IHsKKyAgICB9CisKKyAgICBLQ2FudmFzUG9pbnQzRihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
KQorICAgICAgICA6IG1feCh4KQorICAgICAgICAsIG1feSh5KQorICAgICAgICAsIG1feih6KQor
ICAgIHsKKyAgICB9CiAgICAgCiAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQog
ICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KQEAgLTg3LDExICs5NywxMCBAQCBw
cml2YXRlOgogY2xhc3MgS0NhbnZhc0ZpbHRlckVmZmVjdDsKIGNsYXNzIEtSZW5kZXJpbmdEZXZp
Y2U7CiAKLWNsYXNzIEtDYW52YXNGaWx0ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlCi17Citj
bGFzcyBLQ2FudmFzRmlsdGVyIDogcHVibGljIEtDYW52YXNSZXNvdXJjZSB7CiBwdWJsaWM6Ci0g
ICAgS0NhbnZhc0ZpbHRlcigpIHsgfTsKLSAgICB2aXJ0dWFsIH5LQ2FudmFzRmlsdGVyKCkgeyB9
OworICAgIEtDYW52YXNGaWx0ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5LQ2FudmFzRmlsdGVyKCkg
eyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIApAQCAtMTIzLDEyICsxMzIsMTEgQEAgcHJvdGVjdGVkOgogCiBLQ2FudmFzRmls
dGVyICpnZXRGaWx0ZXJCeUlkKERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
ICZpZCk7CiAKLWNsYXNzIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGaWx0
ZXJFZmZlY3QgewogcHVibGljOgogICAgIC8vIHRoaXMgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBv
bmx5IG5lZWRlZCBmb3IgZ2NjIDMuMwogICAgIEtDYW52YXNGaWx0ZXJFZmZlY3QoKSB7IH0KLSAg
ICB2aXJ0dWFsIH5LQ2FudmFzRmlsdGVyRWZmZWN0KCkgeyB9OworICAgIHZpcnR1YWwgfktDYW52
YXNGaWx0ZXJFZmZlY3QoKSB7IH0KIAogICAgIHZpcnR1YWwgS0NGaWx0ZXJFZmZlY3RUeXBlIGVm
ZmVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBGRV9UVVJCVUxFTkNFOyB9CiAKQEAgLTE2Myw4ICsx
NzEsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIEJNX0xJR0hURU4gPSA0CiB9IEtDQmxlbmRNb2Rl
VHlwZTsKIAotY2xhc3MgS0NhbnZhc0ZFQmxlbmQgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVj
dAoteworY2xhc3MgS0NhbnZhc0ZFQmxlbmQgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7
CiBwdWJsaWM6CiAgICAgRGVwcmVjYXRlZFN0cmluZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2lu
MjsgfQogICAgIHZvaWQgc2V0SW4yKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJmluMikgeyBtX2lu
MiA9IGluMjsgfQpAQCAtMTg2LDggKzE5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgQ01UX0xV
TUlOQU5DRV9UT19BTFBIQSA9IDMKIH0gS0NDb2xvck1hdHJpeFR5cGU7CiAKLWNsYXNzIEtDYW52
YXNGRUNvbG9yTWF0cml4IDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtD
YW52YXNGRUNvbG9yTWF0cml4IDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGlj
OgogICAgIEtDQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICB2b2lkIHNldFR5cGUoS0NDb2xvck1hdHJpeFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBl
OyB9CkBAIC0yMTAsOSArMjE2LDEyIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgQ1RfR0FNTUEgPSA0
CiB9IEtDQ29tcG9uZW50VHJhbnNmZXJUeXBlOwogCi1zdHJ1Y3QgS0NDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uCi17Ci0gICAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uKCkgOiB0eXBlKENU
X0lERU5USVRZKSB7fQorc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB7CisgICAg
S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uKCkKKyAgICAgICAgOiB0eXBlKENUX0lERU5USVRZ
KQorICAgIHsKKyAgICB9CisKICAgICBLQ0NvbXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlOwogICAg
IFZlY3RvcjxmbG9hdD4gdGFibGVWYWx1ZXM7CiAgICAgZmxvYXQgc2xvcGU7CkBAIC0yMjIsOCAr
MjMxLDcgQEAgc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbgogICAgIGZsb2F0IG9m
ZnNldDsKIH07CiAKLWNsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIDogcHVibGljIEtD
YW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIDog
cHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOiAgICAKICAgICBLQ0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gcmVkRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZEZ1bmM7
IH0KICAgICB2b2lkIHNldFJlZEZ1bmN0aW9uKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgZnVuYykgeyBtX3JlZEZ1bmMgPSBmdW5jOyB9CkBAIC0yNTIsMTEgKzI2MCwxMCBAQCB0
eXBlZGVmIGVudW0gewogICAgIENPX09VVCA9IDIsCiAgICAgQ09fQVRPUCA9IDMsCiAgICAgQ09f
WE9SID0gNCwKLSAgICBDT19BUklUSE1FVElDID0gNSwKKyAgICBDT19BUklUSE1FVElDID0gNQog
fSBLQ0NvbXBvc2l0ZU9wZXJhdGlvblR5cGU7CiAKLWNsYXNzIEtDYW52YXNGRUNvbXBvc2l0ZSA6
IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVDb21wb3NpdGUg
OiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgRGVwcmVjYXRlZFN0
cmluZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2luMjsgfQogICAgIHZvaWQgc2V0SW4yKGNvbnN0
IERlcHJlY2F0ZWRTdHJpbmcgJmluMikgeyBtX2luMiA9IGluMjsgfQpAQCAtMjkwLDEwICsyOTcs
OSBAQCB0eXBlZGVmIGVudW0gewogICAgIEVNX05PTkUgPSAyCiB9IEtDRWRnZU1vZGVUeXBlOwog
Ci1jbGFzcyBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZm
ZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeCA6IHB1YmxpYyBLQ2FudmFzRmls
dGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeCgpIHsgfTsK
KyAgICBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeCgpIHsgfQogCiAgICAgRmxvYXRTaXplIGtlcm5l
bFNpemUoKSBjb25zdCB7IHJldHVybiBtX2tlcm5lbFNpemU7IH0KICAgICB2b2lkIHNldEtlcm5l
bFNpemUoRmxvYXRTaXplIGtlcm5lbFNpemUpIHsgbV9rZXJuZWxTaXplID0ga2VybmVsU2l6ZTsg
fQpAQCAtMzM5LDEwICszNDUsMTIgQEAgdHlwZWRlZiBlbnVtewogfSBLQ0xpZ2h0VHlwZTsKIAog
Ly9UaGUgbGlnaHQgc291cmNlIGZvciBEaWZmdXNlL1NwZWN1bGFyTGlnaHRpbmcKLWNsYXNzIEtD
TGlnaHRTb3VyY2UKLXsKK2NsYXNzIEtDTGlnaHRTb3VyY2UgewogcHVibGljOgotICAgIEtDTGln
aHRTb3VyY2UoS0NMaWdodFR5cGUgYV90eXBlKSA6IG1fdHlwZShhX3R5cGUpIHsgfQorICAgIEtD
TGlnaHRTb3VyY2UoS0NMaWdodFR5cGUgYV90eXBlKQorICAgICAgICA6IG1fdHlwZShhX3R5cGUp
CisgICAgeworICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5LQ0xpZ2h0U291cmNlKCkgeyB9CiAg
ICAgCkBAIC0zNTQsMTEgKzM2MiwxNCBAQCBwcml2YXRlOgogICAgIEtDTGlnaHRUeXBlIG1fdHlw
ZTsKIH07CiAKLWNsYXNzIEtDRGlzdGFudExpZ2h0U291cmNlIDogcHVibGljIEtDTGlnaHRTb3Vy
Y2UKLXsKK2NsYXNzIEtDRGlzdGFudExpZ2h0U291cmNlIDogcHVibGljIEtDTGlnaHRTb3VyY2Ug
ewogcHVibGljOgotICAgIEtDRGlzdGFudExpZ2h0U291cmNlKGZsb2F0IGF6aW11dGgsIGZsb2F0
IGVsZXZhdGlvbikgOgotICAgICAgICBLQ0xpZ2h0U291cmNlKExTX0RJU1RBTlQpLCBtX2F6aW11
dGgoYXppbXV0aCksIG1fZWxldmF0aW9uKGVsZXZhdGlvbikgeyB9CisgICAgS0NEaXN0YW50TGln
aHRTb3VyY2UoZmxvYXQgYXppbXV0aCwgZmxvYXQgZWxldmF0aW9uKQorICAgICAgICA6IEtDTGln
aHRTb3VyY2UoTFNfRElTVEFOVCkKKyAgICAgICAgLCBtX2F6aW11dGgoYXppbXV0aCkKKyAgICAg
ICAgLCBtX2VsZXZhdGlvbihlbGV2YXRpb24pCisgICAgeworICAgIH0KICAgICAKICAgICBmbG9h
dCBhemltdXRoKCkgY29uc3R7IHJldHVybiBtX2F6aW11dGg7IH0KICAgICBmbG9hdCBlbGV2YXRp
b24oKSBjb25zdHsgcmV0dXJuIG1fZWxldmF0aW9uOyB9CkBAIC0zNzAsMzIgKzM4MSw0MCBAQCBw
cml2YXRlOgogICAgIGZsb2F0IG1fZWxldmF0aW9uOwogfTsKIAotY2xhc3MgS0NQb2ludExpZ2h0
U291cmNlIDogcHVibGljIEtDTGlnaHRTb3VyY2UKLXsKK2NsYXNzIEtDUG9pbnRMaWdodFNvdXJj
ZSA6IHB1YmxpYyBLQ0xpZ2h0U291cmNlIHsKIHB1YmxpYzoKLSAgICBLQ1BvaW50TGlnaHRTb3Vy
Y2UoS0NhbnZhc1BvaW50M0YmIHBvc2l0aW9uKSA6IEtDTGlnaHRTb3VyY2UoTFNfUE9JTlQpLCBt
X3Bvc2l0aW9uKHBvc2l0aW9uKSB7IH0KKyAgICBLQ1BvaW50TGlnaHRTb3VyY2UoS0NhbnZhc1Bv
aW50M0YmIHBvc2l0aW9uKQorICAgICAgICA6IEtDTGlnaHRTb3VyY2UoTFNfUE9JTlQpCisgICAg
ICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICB7CisgICAgfQogICAgIAogICAgIGNvbnN0
IEtDYW52YXNQb2ludDNGJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
ICAgICAKLSAgICB2aXJ0dWFsIFRleHRTdHJlYW0gJmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSAmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEtDYW52YXNQb2lu
dDNGIG1fcG9zaXRpb247CiB9OwogCi1jbGFzcyBLQ1Nwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBL
Q0xpZ2h0U291cmNlCi17CitjbGFzcyBLQ1Nwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBLQ0xpZ2h0
U291cmNlIHsKIHB1YmxpYzoKLSAgICBLQ1Nwb3RMaWdodFNvdXJjZShLQ2FudmFzUG9pbnQzRiYg
cG9zaXRpb24sIEtDYW52YXNQb2ludDNGJiBkaXJlY3Rpb24sIAotICAgICAgICBmbG9hdCBzcGVj
dWxhckV4cG9uZW50LCBmbG9hdCBsaW1pdGluZ0NvbmVBbmdsZSkgOiBLQ0xpZ2h0U291cmNlKExT
X1NQT1QpLCAKLSAgICAgICAgbV9wb3NpdGlvbihwb3NpdGlvbiksIG1fZGlyZWN0aW9uKGRpcmVj
dGlvbiksIG1fc3BlY3VsYXJFeHBvbmVudChzcGVjdWxhckV4cG9uZW50KSwgbV9saW1pdGluZ0Nv
bmVBbmdsZShsaW1pdGluZ0NvbmVBbmdsZSkgeyB9CisgICAgS0NTcG90TGlnaHRTb3VyY2UoS0Nh
bnZhc1BvaW50M0YmIHBvc2l0aW9uLCBLQ2FudmFzUG9pbnQzRiYgZGlyZWN0aW9uLGZsb2F0IHNw
ZWN1bGFyRXhwb25lbnQsIGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xlKSAKKyAgICAgICAgOiBLQ0xp
Z2h0U291cmNlKExTX1NQT1QpCisgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAg
ICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAgICAgICwgbV9zcGVjdWxhckV4cG9uZW50
KHNwZWN1bGFyRXhwb25lbnQpCisgICAgICAgICwgbV9saW1pdGluZ0NvbmVBbmdsZShsaW1pdGlu
Z0NvbmVBbmdsZSkKKyAgICB7CisgICAgfQogICAgIAogICAgIGNvbnN0IEtDYW52YXNQb2ludDNG
JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KICAgICBjb25zdCBLQ2Fu
dmFzUG9pbnQzRiYgZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KICAg
ICBmbG9hdCBzcGVjdWxhckV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhckV4cG9u
ZW50OyB9CiAgICAgZmxvYXQgbGltaXRpbmdDb25lQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2xp
bWl0aW5nQ29uZUFuZ2xlOyB9CiAgICAgCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtICZleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0gJikgY29uc3Q7CisgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBLQ2FudmFzUG9pbnQzRiBtX3Bvc2l0aW9uOwogICAgIEtDYW52YXNQb2ludDNGIG1f
ZGlyZWN0aW9uOwpAQCAtNDAzLDEwICs0MjIsMTIgQEAgcHJpdmF0ZToKICAgICBmbG9hdCAgICAg
ICAgICBtX2xpbWl0aW5nQ29uZUFuZ2xlOwogfTsKIAotY2xhc3MgS0NhbnZhc0ZFRGlmZnVzZUxp
Z2h0aW5nIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRURp
ZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAg
ICBLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmcoKSA6IG1fbGlnaHRTb3VyY2UoMCkgeyB9CisgICAg
S0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nKCkKKyAgICAgICAgOiBtX2xpZ2h0U291cmNlKDApCisg
ICAgeworICAgIH0KICAgICB+S0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nKCkgeyBkZWxldGUgbV9s
aWdodFNvdXJjZTsgfQogCiAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGlnaHRpbmdDb2xvcjsgfQpAQCAtNDQ1LDEwICs0NjYsMTQgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBDU19BTFBIQSA9IDMKIH0gS0NDaGFubmVsU2VsZWN0b3JUeXBlOwogCi1jbGFzcyBLQ2Fu
dmFzRkVEaXNwbGFjZW1lbnRNYXAgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdAoteworY2xh
c3MgS0NhbnZhc0ZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3Qg
ewogcHVibGljOgotICAgIEtDYW52YXNGRURpc3BsYWNlbWVudE1hcCgpIDogbV94Q2hhbm5lbFNl
bGVjdG9yKENTX1JFRCksIG1feUNoYW5uZWxTZWxlY3RvcihDU19SRUQpLCBtX3NjYWxlKDApIHt9
CisgICAgS0NhbnZhc0ZFRGlzcGxhY2VtZW50TWFwKCkKKyAgICAgICAgOiBtX3hDaGFubmVsU2Vs
ZWN0b3IoQ1NfUkVEKQorICAgICAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihDU19SRUQpCisgICAg
ICAgICwgbV9zY2FsZSgwKQorICAgIHsKKyAgICB9CiAgICAgCiAgICAgRGVwcmVjYXRlZFN0cmlu
ZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2luMjsgfQogICAgIHZvaWQgc2V0SW4yKGNvbnN0IERl
cHJlY2F0ZWRTdHJpbmcgJmluMikgeyBtX2luMiA9IGluMjsgfQpAQCAtNDcxLDggKzQ5Niw3IEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV9zY2FsZTsKIH07CiAKLWNsYXNzIEtDYW52YXNGRUZsb29k
IDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRUZsb29kIDog
cHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIENvbG9yIGZsb29kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2Zsb29kQ29sb3I7IH0KICAgICB2b2lkIHNldEZsb29kQ29s
b3IoY29uc3QgQ29sb3IgJmNvbG9yKSB7IG1fZmxvb2RDb2xvciA9IGNvbG9yOyB9CkBAIC00ODcs
OCArNTExLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2Zsb29kT3BhY2l0eTsKIH07CiAKLWNs
YXNzIEtDYW52YXNGRUdhdXNzaWFuQmx1ciA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17
CitjbGFzcyBLQ2FudmFzRkVHYXVzc2lhbkJsdXIgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVj
dCB7CiBwdWJsaWM6CiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3RkRGV2aWF0aW9uWChmbG9hdCB4KTsKQEAgLTUwMywxMCArNTI2LDEzIEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgbV95OwogfTsKIAotY2xhc3MgS0NhbnZhc0ZFSW1hZ2UgOiBwdWJsaWMgS0Nh
bnZhc0ZpbHRlckVmZmVjdCwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50Ci17CitjbGFzcyBL
Q2FudmFzRkVJbWFnZSA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0LCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIEtDYW52YXNGRUltYWdlKCk6IG1fY2FjaGVk
SW1hZ2UoMCkgeyB9CisgICAgS0NhbnZhc0ZFSW1hZ2UoKQorICAgICAgICA6IG1fY2FjaGVkSW1h
Z2UoMCkKKyAgICB7CisgICAgfQorCiAgICAgdmlydHVhbCB+S0NhbnZhc0ZFSW1hZ2UoKTsKICAg
ICAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSBuZWVkIHRvIHN1cHBvcnQgPHN2Zz4gKFJl
bmRlck9iamVjdCAqKSBhcyB3ZWxsIGFzIGltYWdlIGRhdGEuCkBAIC01MjAsOCArNTQ2LDcgQEAg
cHJpdmF0ZToKICAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKIH07CiAKLWNsYXNzIEtD
YW52YXNGRU1lcmdlIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52
YXNGRU1lcmdlIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIERl
cHJlY2F0ZWRTdHJpbmdMaXN0IG1lcmdlSW5wdXRzKCkgY29uc3QgeyByZXR1cm4gbV9tZXJnZUlu
cHV0czsgfQogICAgIHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29uc3QgRGVwcmVjYXRlZFN0cmluZ0xp
c3QgJm1lcmdlSW5wdXRzKSB7IG1fbWVyZ2VJbnB1dHMgPSBtZXJnZUlucHV0czsgfQpAQCAtNTM3
LDggKzU2Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgTU9fRElBTEFURSA9IDEKIH0gS0NNb3Jw
aG9sb2d5T3BlcmF0b3JUeXBlOwogCi1jbGFzcyBLQ2FudmFzRkVNb3JwaG9sb2d5IDogcHVibGlj
IEtDYW52YXNGaWx0ZXJFZmZlY3QKLXsKK2NsYXNzIEtDYW52YXNGRU1vcnBob2xvZ3kgOiBwdWJs
aWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgS0NNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlIG1vcnBob2xvZ3lPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0b3I7IH0K
ICAgICB2b2lkIHNldE1vcnBob2xvZ3lPcGVyYXRvcihLQ01vcnBob2xvZ3lPcGVyYXRvclR5cGUg
X29wZXJhdG9yKSB7IG1fb3BlcmF0b3IgPSBfb3BlcmF0b3I7IH0KQEAgLTU1Nyw4ICs1ODEsNyBA
QCBwcml2YXRlOgogICAgIGZsb2F0IG1fcmFkaXVzWTsKIH07CiAKLWNsYXNzIEtDYW52YXNGRU9m
ZnNldCA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0Ci17CitjbGFzcyBLQ2FudmFzRkVPZmZz
ZXQgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgZmxvYXQgZHgo
KSBjb25zdCB7IHJldHVybiBtX2R4OyB9CiAgICAgdm9pZCBzZXREeChmbG9hdCBkeCkgeyBtX2R4
ID0gZHg7IH0KQEAgLTU3MywxMCArNTk2LDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9keTsK
IH07CiAKLWNsYXNzIEtDYW52YXNGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgS0NhbnZhc0Zp
bHRlckVmZmVjdAoteworY2xhc3MgS0NhbnZhc0ZFU3BlY3VsYXJMaWdodGluZyA6IHB1YmxpYyBL
Q2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBLQ2FudmFzRkVTcGVjdWxhckxpZ2h0
aW5nKCkgOiBtX2xpZ2h0U291cmNlKDApIHsgfQorICAgIEtDYW52YXNGRVNwZWN1bGFyTGlnaHRp
bmcoKQorICAgICAgICA6IG1fbGlnaHRTb3VyY2UoMCkKKyAgICB7CisgICAgfQogICAgIH5LQ2Fu
dmFzRkVTcGVjdWxhckxpZ2h0aW5nKCkgeyBkZWxldGUgbV9saWdodFNvdXJjZTsgfQogCiAgICAg
Q29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsgfQpA
QCAtNjE5LDggKzY0NCw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgVFRfTk9JU0UgPSAxCiB9IEtD
VHVyYnVsYW5jZVR5cGU7CiAKLWNsYXNzIEtDYW52YXNGRVR1cmJ1bGVuY2UgOiBwdWJsaWMgS0Nh
bnZhc0ZpbHRlckVmZmVjdAoteworY2xhc3MgS0NhbnZhc0ZFVHVyYnVsZW5jZSA6IHB1YmxpYyBL
Q2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBLQ1R1cmJ1bGFuY2VUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2b2lkIHNldFR5cGUoS0NUdXJidWxhbmNl
VHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KQEAgLTY1MSw4ICs2NzUsOCBAQCBwcml2YXRl
OgogICAgIEtDVHVyYnVsYW5jZVR5cGUgbV90eXBlOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAotI2VuZGlmCisjZW5kaWYgLy8gS0Nh
bnZhc0ZpbHRlcnNfSApJbmRleDogV2ViQ29yZS9rY2FudmFzL1JlbmRlclNWR0ltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL1JlbmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rY2FudmFzL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDEzICsyNCwxNCBAQAogI2RlZmluZSBLQ2FudmFzX1JlbmRlclNWR0ltYWdlX0gKICNp
ZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CiAgICAgY2xhc3MgU1ZHSW1hZ2VFbGVtZW50
OwogICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87CisKICAgICBjbGFzcyBSZW5kZXJT
VkdJbWFnZSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CiAgICAgcHVibGljOgogICAgICAgICBSZW5k
ZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQgKmltcGwpOwpAQCAtNTMsNyArNTQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBh
aW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBSZW5k
ZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50IF95LCBp
bnQgX3R4LCBpbnQgX3R5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pOworICAgICAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50IF95LCBp
bnQgX3R4LCBpbnQgX3R5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCB0cmFuc2xhdGVGb3JBdHRyaWJ1dGVzKCk7CkBAIC02MSw5ICs2
MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFu
c2Zvcm07CiAgICAgICAgIEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsKICAgICB9OwotfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisj
ZW5kaWYgLy8gS0NhbnZhc19SZW5kZXJTVkdJbWFnZV9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHou
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5n
RGV2aWNlUXVhcnR6LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4
ICs0MSw3IEBAIGNsYXNzIE5TR3JhcGhpY3NDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6IDogcHVibGljIEtSZW5kZXJp
bmdEZXZpY2VDb250ZXh0Ci17CitjbGFzcyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eiA6
IHB1YmxpYyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgS1JlbmRlcmlu
Z0RldmljZUNvbnRleHRRdWFydHooQ0dDb250ZXh0UmVmIGNvbnRleHQpOwogICAgIHZpcnR1YWwg
fktSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6KCk7CkBAIC02Niw4ICs2NSw3IEBAIHByaXZh
dGU6CiAgICAgTlNHcmFwaGljc0NvbnRleHQgKm1fbnNHcmFwaGljc0NvbnRleHQ7CiB9OwogCi1j
bGFzcyBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6IDogcHVibGljIEtSZW5kZXJpbmdEZXZpY2UKLXsK
K2NsYXNzIEtSZW5kZXJpbmdEZXZpY2VRdWFydHogOiBwdWJsaWMgS1JlbmRlcmluZ0RldmljZSB7
CiBwdWJsaWM6CiAgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eigpIHsgfQogICAgIHZpcnR1YWwg
fktSZW5kZXJpbmdEZXZpY2VRdWFydHooKSB7IH0KQEAgLTk2LDExICs5NCwxMSBAQCBwdWJsaWM6
CiAgICAgLy8gZmlsdGVycyAobW9zdGx5IGRlYnVnZ2luZykKICAgICBzdGF0aWMgYm9vbCBmaWx0
ZXJzRW5hYmxlZCgpOwogICAgIHN0YXRpYyB2b2lkIHNldEZpbHRlcnNFbmFibGVkKGJvb2wgZW5h
YmxlZCk7Ci0gICAgc3RhdGljIGJvb2wgS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6aGFyZHdhcmVS
ZW5kZXJpbmdFbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgS1JlbmRlcmluZ0RldmljZVF1YXJ0
ejo6c2V0SGFyZHdhcmVSZW5kZXJpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgc3RhdGlj
IGJvb2wgaGFyZHdhcmVSZW5kZXJpbmdFbmFibGVkKCk7CisgICAgc3RhdGljIHZvaWQgc2V0SGFy
ZHdhcmVSZW5kZXJpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8g
S1JlbmRlcmluZ0RldmljZVF1YXJ0el9ICkluZGV4OiBXZWJDb3JlL2tzdmcyL2tzdmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2tzdmcuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL2tzdmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzIgKzI3LDI4IEBACiAvKioK
ICAqIEBzaG9ydCBHZW5lcmFsIG5hbWVzcGFjZSBzcGVjaWZpYyBkZWZpbml0aW9ucy4KICAqLwot
bmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvKioKICAgICAg
KiBBbGwgU1ZHIGNvbnN0YW50cwogICAgICAqLwotICAgIGVudW0gU1ZHRXhjZXB0aW9uQ29kZQot
ICAgIHsKLSAgICAgICAgU1ZHX1dST05HX1RZUEVfRVJSICAgICAgICAgICAgPSAxLAorICAgIGVu
dW0gU1ZHRXhjZXB0aW9uQ29kZSB7CisgICAgICAgIFNWR19XUk9OR19UWVBFX0VSUiAgICAgICAg
ICAgPSAxLAogICAgICAgICBTVkdfSU5WQUxJRF9WQUxVRV9FUlIgICAgICAgID0gMiwKICAgICAg
ICAgU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSAgICA9IDMKICAgICB9OwogICAgIAotICAgIGVu
dW0gU1ZHVW5pdFR5cGVzCi0gICAgewotICAgICAgICBTVkdfVU5JVF9UWVBFX1VOS05PV04gICAg
ICAgICAgICAgICAgPSAwLAorICAgIGVudW0gU1ZHVW5pdFR5cGVzIHsKKyAgICAgICAgU1ZHX1VO
SVRfVFlQRV9VTktOT1dOICAgICAgICAgICAgICAgPSAwLAogICAgICAgICBTVkdfVU5JVF9UWVBF
X1VTRVJTUEFDRU9OVVNFICAgICAgICA9IDEsCi0gICAgICAgIFNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1ggICAgICAgID0gMgorICAgICAgICBTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YICAgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdSZW5kZXJpbmdJbnRlbnRUeXBl
Ci0gICAgewotICAgICAgICBSRU5ERVJJTkdfSU5URU5UX1VOS05PV04gICAgICAgICAgICAgICAg
PSAwLAotICAgICAgICBSRU5ERVJJTkdfSU5URU5UX0FVVE8gICAgICAgICAgICAgICAgICAgID0g
MSwKLSAgICAgICAgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMICAgICAgICAgICAgICAgID0g
MiwKKyAgICBlbnVtIFNWR1JlbmRlcmluZ0ludGVudFR5cGUgeworICAgICAgICBSRU5ERVJJTkdf
SU5URU5UX1VOS05PV04gICAgICAgICAgICAgICAgICA9IDAsCisgICAgICAgIFJFTkRFUklOR19J
TlRFTlRfQVVUTyAgICAgICAgICAgICAgICAgICAgID0gMSwKKyAgICAgICAgUkVOREVSSU5HX0lO
VEVOVF9QRVJDRVBUVUFMICAgICAgICAgICAgICAgPSAyLAogICAgICAgICBSRU5ERVJJTkdfSU5U
RU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQyAgICA9IDMsCi0gICAgICAgIFJFTkRFUklOR19JTlRF
TlRfU0FUVVJBVElPTiAgICAgICAgICAgICAgICA9IDQsCisgICAgICAgIFJFTkRFUklOR19JTlRF
TlRfU0FUVVJBVElPTiAgICAgICAgICAgICAgID0gNCwKICAgICAgICAgUkVOREVSSU5HX0lOVEVO
VF9BQlNPTFVURV9DT0xPUklNRVRSSUMgICAgPSA1CiAgICAgfTsKICAgICAKQEAgLTY2LDE0ICs2
MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdfVFJBTlNGT1JNX1NLRVdZICAg
ICAgICAgICAgID0gNgogICAgIH07CiAKLSAgICBlbnVtIFNWR0NTU1J1bGVUeXBlCi0gICAgewor
ICAgIGVudW0gU1ZHQ1NTUnVsZVR5cGUgewogICAgICAgICBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3
CiAgICAgfTsKIAotICAgIGVudW0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5cGUKLSAgICB7Ci0g
ICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04gICAgICAgID0gMCwKKyAgICBl
bnVtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlIHsKKyAgICAgICAgU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fVU5LTk9XTiAgICAgPSAwLAogICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19OT05FICAgICAgICA9IDEsCiAgICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlOICAgID0gMiwKICAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gICAg
PSAzLApAQCAtODYsNjAgKzgwLDU0IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYICAgID0gMTAKICAgICB9OwogCi0gICAgZW51bSBT
VkdNZWV0T3JTbGljZVR5cGUKLSAgICB7CisgICAgZW51bSBTVkdNZWV0T3JTbGljZVR5cGUgewog
ICAgICAgICBTVkdfTUVFVE9SU0xJQ0VfVU5LTk9XTiAgICA9IDAsCi0gICAgICAgIFNWR19NRUVU
T1JTTElDRV9NRUVUICAgID0gMSwKLSAgICAgICAgU1ZHX01FRVRPUlNMSUNFX1NMSUNFICAgID0g
MgorICAgICAgICBTVkdfTUVFVE9SU0xJQ0VfTUVFVCAgICAgICA9IDEsCisgICAgICAgIFNWR19N
RUVUT1JTTElDRV9TTElDRSAgICAgID0gMgogICAgIH07CiAKLSAgICBlbnVtIFNWR1BhdGhTZWdU
eXBlCi0gICAgewotICAgICAgICBQQVRIU0VHX1VOS05PV04gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAwLAotICAgICAgICBQQVRIU0VHX0NMT1NFUEFUSCAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSwKLSAgICAgICAgUEFUSFNFR19NT1ZFVE9fQUJTICAgICAgICAgICAgICAgICAgICAg
ICAgPSAyLAotICAgICAgICBQQVRIU0VHX01PVkVUT19SRUwgICAgICAgICAgICAgICAgICAgICAg
ICA9IDMsCi0gICAgICAgIFBBVEhTRUdfTElORVRPX0FCUyAgICAgICAgICAgICAgICAgICAgICAg
ID0gNCwKLSAgICAgICAgUEFUSFNFR19MSU5FVE9fUkVMICAgICAgICAgICAgICAgICAgICAgICAg
PSA1LAotICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTICAgICAgICAgICAgICAgID0g
NiwKLSAgICAgICAgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTCAgICAgICAgICAgICAgICA9IDcs
Ci0gICAgICAgIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTICAgICAgICAgICAgPSA4LAot
ICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTCAgICAgICAgICAgID0gOSwKLSAg
ICAgICAgUEFUSFNFR19BUkNfQUJTICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTAsCi0g
ICAgICAgIFBBVEhTRUdfQVJDX1JFTCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDExLAot
ICAgICAgICBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCUyAgICAgICAgICAgID0gMTIsCi0g
ICAgICAgIFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMICAgICAgICAgICAgPSAxMywKLSAg
ICAgICAgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTICAgICAgICAgICAgICAgID0gMTQsCi0g
ICAgICAgIFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTCAgICAgICAgICAgICAgICA9IDE1LAor
ICAgIGVudW0gU1ZHUGF0aFNlZ1R5cGUgeworICAgICAgICBQQVRIU0VHX1VOS05PV04gICAgICAg
ICAgICAgICAgICAgICAgICAgPSAwLAorICAgICAgICBQQVRIU0VHX0NMT1NFUEFUSCAgICAgICAg
ICAgICAgICAgICAgICAgPSAxLAorICAgICAgICBQQVRIU0VHX01PVkVUT19BQlMgICAgICAgICAg
ICAgICAgICAgICAgPSAyLAorICAgICAgICBQQVRIU0VHX01PVkVUT19SRUwgICAgICAgICAgICAg
ICAgICAgICAgPSAzLAorICAgICAgICBQQVRIU0VHX0xJTkVUT19BQlMgICAgICAgICAgICAgICAg
ICAgICAgPSA0LAorICAgICAgICBQQVRIU0VHX0xJTkVUT19SRUwgICAgICAgICAgICAgICAgICAg
ICAgPSA1LAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTICAgICAgICAgICAgICAg
PSA2LAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMICAgICAgICAgICAgICAgPSA3
LAorICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUyAgICAgICAgICAgPSA4LAor
ICAgICAgICBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTCAgICAgICAgICAgPSA5LAorICAg
ICAgICBQQVRIU0VHX0FSQ19BQlMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMCwKKyAgICAg
ICAgUEFUSFNFR19BUkNfUkVMICAgICAgICAgICAgICAgICAgICAgICAgID0gMTEsCisgICAgICAg
IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTICAgICAgICAgICA9IDEyLAorICAgICAgICBQ
QVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTCAgICAgICAgICAgPSAxMywKKyAgICAgICAgUEFU
SFNFR19MSU5FVE9fVkVSVElDQUxfQUJTICAgICAgICAgICAgID0gMTQsCisgICAgICAgIFBBVEhT
RUdfTElORVRPX1ZFUlRJQ0FMX1JFTCAgICAgICAgICAgICA9IDE1LAogICAgICAgICBQQVRIU0VH
X0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUyAgICAgICAgPSAxNiwKICAgICAgICAgUEFUSFNFR19D
VVJWRVRPX0NVQklDX1NNT09USF9SRUwgICAgICAgID0gMTcsCiAgICAgICAgIFBBVEhTRUdfQ1VS
VkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUyAgICA9IDE4LAogICAgICAgICBQQVRIU0VHX0NVUlZF
VE9fUVVBRFJBVElDX1NNT09USF9SRUwgICAgPSAxOQogICAgIH07CiAKLSAgICBlbnVtIFNWR0xl
bmd0aEFkanVzdFR5cGUKLSAgICB7CisgICAgZW51bSBTVkdMZW5ndGhBZGp1c3RUeXBlIHsKICAg
ICAgICAgTEVOR1RIQURKVVNUX1VOS05PV04gICAgICAgICAgICA9IDAsCiAgICAgICAgIExFTkdU
SEFESlVTVF9TUEFDSU5HICAgICAgICAgICAgPSAxLAotICAgICAgICBMRU5HVEhBREpVU1RfU1BB
Q0lOR0FOREdMWVBIUyAgICA9IDIKKyAgICAgICAgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQ
SFMgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdUZXh0UGF0aE1ldGhvZFR5cGUKLSAgICB7
CisgICAgZW51bSBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgewogICAgICAgICBURVhUUEFUSF9NRVRI
T0RUWVBFX1VOS05PV04gICAgPSAwLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdO
ICAgID0gMSwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiAgICAgID0gMSwKICAg
ICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIICAgID0gMgogICAgIH07CiAKLSAgICBl
bnVtIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUKLSAgICB7CisgICAgZW51bSBTVkdUZXh0UGF0aFNw
YWNpbmdUeXBlIHsKICAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTiAgICA9IDAs
Ci0gICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gICAgICAgID0gMSwKLSAgICAgICAg
VEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgICAgICAgID0gMgorICAgICAgICBURVhUUEFUSF9T
UEFDSU5HVFlQRV9BVVRPICAgICAgID0gMSwKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVf
RVhBQ1QgICAgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdQYWludFR5cGUKLSAgICB7Cisg
ICAgZW51bSBTVkdQYWludFR5cGUgewogICAgICAgICBTVkdfUEFJTlRUWVBFX1VOS05PV04gICAg
ICAgICAgICAgICA9IDAsCiAgICAgICAgIFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgICAgICAgICAg
ICAgID0gMSwKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiAgICAgPSAy
LApAQCAtMTUyLDM3ICsxNDAsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHX1BB
SU5UVFlQRV9VUkkgICAgICAgICAgICAgICAgICAgPSAxMDcKICAgICB9OwogCi0gICAgZW51bSBT
VkdNYXJrZXJVbml0c1R5cGUKLSAgICB7Ci0gICAgICAgIFNWR19NQVJLRVJVTklUU19VTktOT1dO
ICAgICAgICAgICAgPSAwLAorICAgIGVudW0gU1ZHTWFya2VyVW5pdHNUeXBlIHsKKyAgICAgICAg
U1ZHX01BUktFUlVOSVRTX1VOS05PV04gICAgICAgICAgID0gMCwKICAgICAgICAgU1ZHX01BUktF
UlVOSVRTX1VTRVJTUEFDRU9OVVNFICAgID0gMSwKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1NU
Uk9LRVdJRFRIICAgICAgICA9IDIKKyAgICAgICAgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRI
ICAgICAgID0gMgogICAgIH07CiAKLSAgICBlbnVtIFNWR01hcmtlck9yaWVudFR5cGUKLSAgICB7
CisgICAgZW51bSBTVkdNYXJrZXJPcmllbnRUeXBlIHsKICAgICAgICAgU1ZHX01BUktFUl9PUklF
TlRfVU5LTk9XTiAgICA9IDAsCi0gICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gICAgICAg
ID0gMSwKLSAgICAgICAgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgICAgICAgID0gMgorICAgICAg
ICBTVkdfTUFSS0VSX09SSUVOVF9BVVRPICAgICAgID0gMSwKKyAgICAgICAgU1ZHX01BUktFUl9P
UklFTlRfQU5HTEUgICAgICA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdHcmFkaWVudFR5cGUK
LSAgICB7CisgICAgZW51bSBTVkdHcmFkaWVudFR5cGUgewogICAgICAgICBTVkdfU1BSRUFETUVU
SE9EX1VOS05PV04gPSAwLAogICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1BBRCAgICAgPSAxLAog
ICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1JFRkxFQ1QgPSAyLAogICAgICAgICBTVkdfU1BSRUFE
TUVUSE9EX1JFUEVBVCAgPSAzCiAgICAgfTsKIAotICAgIGVudW0gU1ZHWm9vbUFuZFBhblR5cGUK
LSAgICB7CisgICAgZW51bSBTVkdab29tQW5kUGFuVHlwZSB7CiAgICAgICAgIFNWR19aT09NQU5E
UEFOX1VOS05PV04gPSAwLAogICAgICAgICBTVkdfWk9PTUFORFBBTl9ESVNBQkxFID0gMSwKICAg
ICAgICAgU1ZHX1pPT01BTkRQQU5fTUFHTklGWSA9IDIKICAgICB9OwogCi0gICAgZW51bSBTVkdC
bGVuZE1vZGVUeXBlCi0gICAgeworICAgIGVudW0gU1ZHQmxlbmRNb2RlVHlwZSB7CiAgICAgICAg
IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiAgPSAwLAogICAgICAgICBTVkdfRkVCTEVORF9NT0RF
X05PUk1BTCAgID0gMSwKICAgICAgICAgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDIsCkBA
IC0xOTEsOCArMTc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHX0ZFQkxFTkRf
TU9ERV9MSUdIVEVOICA9IDUKICAgICB9OwogCi0gICAgZW51bSBTVkdDb2xvck1hdHJpeFR5cGUK
LSAgICB7CisgICAgZW51bSBTVkdDb2xvck1hdHJpeFR5cGUgewogICAgICAgICBTVkdfRkVDT0xP
Uk1BVFJJWF9UWVBFX1VOS05PV04gICAgICAgICAgPSAwLAogICAgICAgICBTVkdfRkVDT0xPUk1B
VFJJWF9UWVBFX01BVFJJWCAgICAgICAgICAgPSAxLAogICAgICAgICBTVkdfRkVDT0xPUk1BVFJJ
WF9UWVBFX1NBVFVSQVRFICAgICAgICAgPSAyLApAQCAtMjAwLDggKzE4Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBI
QSA9IDQKICAgICB9OwogCi0gICAgZW51bSBTVkdDb21wb25lbnRUcmFuc2ZlclR5cGUKLSAgICB7
CisgICAgZW51bSBTVkdDb21wb25lbnRUcmFuc2ZlclR5cGUgewogICAgICAgICBTVkdfRkVDT01Q
T05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gID0gMCwKICAgICAgICAgU1ZHX0ZFQ09NUE9ORU5U
VFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDEsCiAgICAgICAgIFNWR19GRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfVEFCTEUgICAgPSAyLApAQCAtMjEwLDggKzE5MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgICAgPSA1CiAg
ICAgfTsKIAotICAgIGVudW0gU1ZHQ29tcG9zaXRlT3BlcmF0b3JzCi0gICAgeworICAgIGVudW0g
U1ZHQ29tcG9zaXRlT3BlcmF0b3JzIHsKICAgICAgICAgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9S
X1VOS05PV04gICAgPSAwLAogICAgICAgICBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiAg
ICAgICA9IDEsCiAgICAgICAgIFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiAgICAgICAgID0g
MiwKQEAgLTIyMSwxNiArMjAxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR19G
RUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNgogICAgIH07CiAKLSAgICBlbnVtIFNW
R0VkZ2VNb2RlcwotICAgIHsKKyAgICBlbnVtIFNWR0VkZ2VNb2RlcyB7CiAgICAgICAgIFNWR19F
REdFTU9ERV9VTktOT1dOICAgPSAwLAogICAgICAgICBTVkdfRURHRU1PREVfRFVQTElDQVRFID0g
MSwKICAgICAgICAgU1ZHX0VER0VNT0RFX1dSQVAgICAgICA9IDIsCiAgICAgICAgIFNWR19FREdF
TU9ERV9OT05FICAgICAgPSAzCiAgICAgfTsKIAotICAgIGVudW0gU1ZHQ2hhbm5lbFNlbGVjdG9y
cwotICAgIHsKKyAgICBlbnVtIFNWR0NoYW5uZWxTZWxlY3RvcnMgewogICAgICAgICBTVkdfQ0hB
Tk5FTF9VTktOT1dOID0gMCwKICAgICAgICAgU1ZHX0NIQU5ORUxfUiAgICAgICA9IDEsCiAgICAg
ICAgIFNWR19DSEFOTkVMX0cgICAgICAgPSAyLApAQCAtMjM4LDI5ICsyMTYsMjcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgU1ZHX0NIQU5ORUxfQSAgICAgICA9IDQKICAgICB9OwogCi0g
ICAgZW51bSBTVkdNb3JwaG9sb2d5T3BlcmF0b3JzCi0gICAgeworICAgIGVudW0gU1ZHTW9ycGhv
bG9neU9wZXJhdG9ycyB7CiAgICAgICAgIFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04g
PSAwLAogICAgICAgICBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAgID0gMSwKICAgICAg
ICAgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICA9IDIKICAgICB9OwogCi0gICAgZW51
bSBTVkdUdXJidWxlbmNlVHlwZQotICAgIHsKKyAgICBlbnVtIFNWR1R1cmJ1bGVuY2VUeXBlIHsK
ICAgICAgICAgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOICAgICAgPSAwLAogICAgICAgICBT
VkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDEsCiAgICAgICAgIFNWR19UVVJCVUxF
TkNFX1RZUEVfVFVSQlVMRU5DRSAgID0gMgogICAgIH07CiAKLSAgICBlbnVtIFNWR1N0aXRjaE9w
dGlvbnMKLSAgICB7CisgICAgZW51bSBTVkdTdGl0Y2hPcHRpb25zIHsKICAgICAgICAgU1ZHX1NU
SVRDSFRZUEVfVU5LTk9XTiAgPSAwLAogICAgICAgICBTVkdfU1RJVENIVFlQRV9TVElUQ0ggICA9
IDEsCiAgICAgICAgIFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMgogICAgIH07Ci19OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisj
ZW5kaWYgLy8gS1NWR19ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
Y3NzL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9jc3MvU1ZH
UmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdS
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCArNTcsOSBAQCB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyB1aW50NjRfdDsKICAgICBpZighKEdyb3VwLT5WYXJpYWJsZSA9PSBW
YWx1ZSkpIFwKICAgICAgICAgR3JvdXAuYWNjZXNzKCktPlZhcmlhYmxlID0gVmFsdWU7CiAKLW5h
bWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMgU2hh
cmVkPFNWR1JlbmRlclN0eWxlPgotICAgIHsgICAgCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBTVkdSZW5kZXJTdHlsZSA6IHB1YmxpYyBTaGFyZWQ8U1ZHUmVuZGVyU3R5bGU+IHsg
ICAgCiAgICAgcHVibGljOgogICAgICAgICBTVkdSZW5kZXJTdHlsZSgpOwogICAgICAgICBTVkdS
ZW5kZXJTdHlsZShib29sKTsgLy8gVXNlZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgc3R5bGUuCkBA
IC0xMTksMTYgKzExOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICAvLyBpbmhlcml0Ci0gICAgICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncwotICAgICAg
ICB7CisgICAgICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7CiAgICAgICAgICAgICAvLyA2NCBi
aXQgaW5oZXJpdGVkLCBkb24ndCBhZGQgdG8gdGhlIHN0cnVjdCwgb3IgdGhlIG9wZXJhdG9yIHdp
bGwgYnJlYWsuCiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxh
Z3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfaWZsYWdzID09IG90aGVyLl9pZmxhZ3M7IH0KICAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIF9pZmxhZ3MgIT0gb3RoZXIuX2lmbGFnczsgfQogCi0gICAgICAgICAgICB1
bmlvbgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0cnVjdAotICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfY29sb3JSZW5kZXJpbmcgOiAyOyAvLyBFQ29sb3JS
ZW5kZXJpbmcKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2ltYWdlUmVuZGVyaW5nIDog
MjsgLy8gRUltYWdlUmVuZGVyaW5nIAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfc2hh
cGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcgCkBAIC0xNDksMTYgKzE0NSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7CiAKICAg
ICAgICAgLy8gZG9uJ3QgaW5oZXJpdAotICAgICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MK
LSAgICAgICAgeworICAgICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICAg
ICAgLy8gNjQgYml0IG5vbi1pbmhlcml0ZWQsIGRvbid0IGFkZCB0byB0aGUgc3RydWN0LCBvciB0
aGUgb3BlcmF0b3Igd2lsbCBicmVhay4KICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBOb25Jbmhlcml0ZWRGbGFncyAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIF9uaWZsYWdzID09IG90
aGVyLl9uaWZsYWdzOyB9CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5o
ZXJpdGVkRmxhZ3MgJm90aGVyKSBjb25zdCB7IHJldHVybiBfbmlmbGFncyAhPSBvdGhlci5fbmlm
bGFnczsgfQogCi0gICAgICAgICAgICB1bmlvbgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHN0cnVjdAotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfYWxpZ25t
ZW50QmFzZWxpbmUgOiA0OyAvLyBFQWxpZ25tZW50QmFzZWxpbmUgCiAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIF9kb21pbmFudEJhc2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUK
ICAgICAgICAgICAgICAgICAgICAgLy8gMjQgYml0cyB1bnVzZWQKQEAgLTIwNCw5ICsxOTcsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5fZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFudEJhc2VsaW5lKCk7CiAgICAgICAg
IH0KICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHUmVuZGVyU3R5bGVfSAogCiAvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMuaAko
cmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNzQgKzQzLDYxIEBACiAgICAgRGF0YSBOYW1lKCkgY29u
c3QgeyByZXR1cm4gKERhdGEpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuZi5fIyNOYW1lOyB9IFwKICAg
ICBzdGF0aWMgRGF0YSBpbml0aWFsIyNUeXBlKCkgeyByZXR1cm4gSW5pdGlhbDsgfQogCi1uYW1l
c3BhY2UgV2ViQ29yZQotewotICAgIGVudW0gRVdpbmRSdWxlCi0gICAgeworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgZW51bSBFV2luZFJ1bGUgewogICAgICAgICBXUl9OT05aRVJPID0gMCwg
V1JfRVZFTk9ERCA9IDEKICAgICB9OwogCi0gICAgZW51bSBFQ2FwU3R5bGUKLSAgICB7CisgICAg
ZW51bSBFQ2FwU3R5bGUgewogICAgICAgICBDU19CVVRUID0gMSwgQ1NfUk9VTkQgPSAyLCBDU19T
UVVBUkUgPSAzCiAgICAgfTsKIAotICAgIGVudW0gRUpvaW5TdHlsZQotICAgIHsKKyAgICBlbnVt
IEVKb2luU3R5bGUgewogICAgICAgICBKU19NSVRFUiA9IDEsIEpTX1JPVU5EID0gMiwgSlNfQkVW
RUwgPSAzCiAgICAgfTsKIAotICAgIGVudW0gRVRleHRBbmNob3IKLSAgICB7CisgICAgZW51bSBF
VGV4dEFuY2hvciB7CiAgICAgICAgIFRBX1NUQVJULCBUQV9NSURETEUsIFRBX0VORAogICAgIH07
CiAKLSAgICBlbnVtIEVDb2xvckludGVycG9sYXRpb24KLSAgICB7CisgICAgZW51bSBFQ29sb3JJ
bnRlcnBvbGF0aW9uIHsKICAgICAgICAgQ0lfQVVUTywgQ0lfU1JHQiwgQ0lfTElORUFSUkdCCiAg
ICAgfTsKIAotICAgIGVudW0gRUNvbG9yUmVuZGVyaW5nCi0gICAgeworICAgIGVudW0gRUNvbG9y
UmVuZGVyaW5nIHsKICAgICAgICAgQ1JfQVVUTywgQ1JfT1BUSU1JWkVTUEVFRCwgQ1JfT1BUSU1J
WkVRVUFMSVRZCiAgICAgfTsKICAgICAKLSAgICBlbnVtIEVJbWFnZVJlbmRlcmluZwotICAgIHsK
KyAgICBlbnVtIEVJbWFnZVJlbmRlcmluZyB7CiAgICAgICAgIElSX0FVVE8sIElSX09QVElNSVpF
U1BFRUQsIElSX09QVElNSVpFUVVBTElUWQogICAgIH07CiAKLSAgICBlbnVtIEVTaGFwZVJlbmRl
cmluZwotICAgIHsKKyAgICBlbnVtIEVTaGFwZVJlbmRlcmluZyB7CiAgICAgICAgIFNSX0FVVE8s
IFNSX09QVElNSVpFU1BFRUQsIFNSX0NSSVNQRURHRVMsIFNSX0dFT01FVFJJQ1BSRUNJU0lPTgog
ICAgIH07CiAKLSAgICBlbnVtIEVUZXh0UmVuZGVyaW5nCi0gICAgeworICAgIGVudW0gRVRleHRS
ZW5kZXJpbmcgewogICAgICAgICBUUl9BVVRPLCBUUl9PUFRJTUlaRVNQRUVELCBUUl9PUFRJTUla
RUxFR0lCSUxJVFksIFRSX0dFT01FVFJJQ1BSRUNJU0lPTgogICAgIH07CiAKLSAgICBlbnVtIEVX
cml0aW5nTW9kZQotICAgIHsKKyAgICBlbnVtIEVXcml0aW5nTW9kZSB7CiAgICAgICAgIFdNX0xS
VEIsIFdNX0xSLCBXTV9STFRCLCBXTV9STCwgV01fVEJSTCwgV01fVEIKICAgICB9OwogICAgIAot
ICAgIGVudW0gRUFsaWdubWVudEJhc2VsaW5lCi0gICAgeworICAgIGVudW0gRUFsaWdubWVudEJh
c2VsaW5lIHsKICAgICAgICAgQUJfQVVUTywgQUJfQkFTRUxJTkUsIEFCX0JFRk9SRV9FREdFLCBB
Ql9URVhUX0JFRk9SRV9FREdFLAogICAgICAgICBBQl9NSURETEUsIEFCX0NFTlRSQUwsIEFCX0FG
VEVSX0VER0UsIEFCX1RFWFRfQUZURVJfRURHRSwKICAgICAgICAgQUJfSURFT0dSQVBISUMsIEFC
X0FMUEhBQkVUSUMsIEFCX0hBTkdJTkcsIEFCX01BVEhFTUFUSUNBTAogICAgIH07CiAKLSAgICBl
bnVtIEVEb21pbmFudEJhc2VsaW5lCi0gICAgeworICAgIGVudW0gRURvbWluYW50QmFzZWxpbmUg
ewogICAgICAgICBEQl9BVVRPLCBEQl9VU0VfU0NSSVBULCBEQl9OT19DSEFOR0UsIERCX1JFU0VU
X1NJWkUsCiAgICAgICAgIERCX0lERU9HUkFQSElDLCBEQl9BTFBIQUJFVElDLCBEQl9IQU5HSU5H
LCBEQl9NQVRIRU1BVElDQUwsCiAgICAgICAgIERCX0NFTlRSQUwsIERCX01JRERMRSwgREJfVEVY
VF9BRlRFUl9FREdFLCBEQl9URVhUX0JFRk9SRV9FREdFCiAgICAgfTsKIAotICAgIGVudW0gRVBv
aW50ZXJFdmVudHMKLSAgICB7CisgICAgZW51bSBFUG9pbnRlckV2ZW50cyB7CiAgICAgICAgIFBF
X05PTkUsIFBFX1NUUk9LRSwgUEVfRklMTCwgUEVfUEFJTlRFRCwgUEVfVklTSUJMRSwKICAgICAg
ICAgUEVfVklTSUJMRV9TVFJPS0UsIFBFX1ZJU0lCTEVfRklMTCwgUEVfVklTSUJMRV9QQUlOVEVE
LCBQRV9BTEwKICAgICB9OwpAQCAtMTE4LDggKzEwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgY2xhc3MgQ1NTVmFsdWVMaXN0OwogCiAgICAgLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQg
U3R5bGUgRGF0YXN0cnVjdHVyZXMKLSAgICBjbGFzcyBTdHlsZUZpbGxEYXRhIDogcHVibGljIFNo
YXJlZDxTdHlsZUZpbGxEYXRhPgotICAgIHsKKyAgICBjbGFzcyBTdHlsZUZpbGxEYXRhIDogcHVi
bGljIFNoYXJlZDxTdHlsZUZpbGxEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZUZp
bGxEYXRhKCk7CiAgICAgICAgIFN0eWxlRmlsbERhdGEoY29uc3QgU3R5bGVGaWxsRGF0YSAmb3Ro
ZXIpOwpAQCAtMTM3LDggKzEyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFN0eWxl
RmlsbERhdGEgJm9wZXJhdG9yPShjb25zdCBTdHlsZUZpbGxEYXRhICYpOwogICAgIH07CiAKLSAg
ICBjbGFzcyBTdHlsZVN0cm9rZURhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlU3Ryb2tlRGF0YT4K
LSAgICB7CisgICAgY2xhc3MgU3R5bGVTdHJva2VEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZVN0
cm9rZURhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0eWxlU3Ryb2tlRGF0YSgpOwogICAg
ICAgICBTdHlsZVN0cm9rZURhdGEoY29uc3QgU3R5bGVTdHJva2VEYXRhICZvdGhlcik7CkBAIC0x
NjIsOCArMTQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU3R5bGVTdHJva2VEYXRh
ICZvcGVyYXRvcj0oY29uc3QgU3R5bGVTdHJva2VEYXRhICYpOwogICAgIH07CiAKLSAgICBjbGFz
cyBTdHlsZVN0b3BEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZVN0b3BEYXRhPgotICAgIHsKKyAg
ICBjbGFzcyBTdHlsZVN0b3BEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZVN0b3BEYXRhPiB7CiAg
ICAgcHVibGljOgogICAgICAgICBTdHlsZVN0b3BEYXRhKCk7CiAgICAgICAgIFN0eWxlU3RvcERh
dGEoY29uc3QgU3R5bGVTdG9wRGF0YSAmb3RoZXIpOwpAQCAtMTgxLDggKzE2NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIFN0eWxlU3RvcERhdGEgJm9wZXJhdG9yPShjb25zdCBTdHls
ZVN0b3BEYXRhICYpOwogICAgIH07CiAKLSAgICBjbGFzcyBTdHlsZUNsaXBEYXRhIDogcHVibGlj
IFNoYXJlZDxTdHlsZUNsaXBEYXRhPgotICAgIHsKKyAgICBjbGFzcyBTdHlsZUNsaXBEYXRhIDog
cHVibGljIFNoYXJlZDxTdHlsZUNsaXBEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBTdHls
ZUNsaXBEYXRhKCk7CiAgICAgICAgIFN0eWxlQ2xpcERhdGEoY29uc3QgU3R5bGVDbGlwRGF0YSAm
b3RoZXIpOwpAQCAtMTk5LDggKzE4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFN0
eWxlQ2xpcERhdGEgJm9wZXJhdG9yPShjb25zdCBTdHlsZUNsaXBEYXRhICYpOwogICAgIH07CiAK
LSAgICBjbGFzcyBTdHlsZU1hc2tEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZU1hc2tEYXRhPgot
ICAgIHsKKyAgICBjbGFzcyBTdHlsZU1hc2tEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZU1hc2tE
YXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZU1hc2tEYXRhKCk7CiAgICAgICAgIFN0
eWxlTWFza0RhdGEoY29uc3QgU3R5bGVNYXNrRGF0YSAmb3RoZXIpOwpAQCAtMjE0LDggKzE5Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFN0eWxlTWFza0RhdGEgJm9wZXJhdG9yPShj
b25zdCBTdHlsZU1hc2tEYXRhICYpOwogICAgIH07CiAKLSAgICBjbGFzcyBTdHlsZU1hcmtlckRh
dGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlTWFya2VyRGF0YT4KLSAgICB7CisgICAgY2xhc3MgU3R5
bGVNYXJrZXJEYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZU1hcmtlckRhdGE+IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFN0eWxlTWFya2VyRGF0YSgpOwogICAgICAgICBTdHlsZU1hcmtlckRhdGEo
Y29uc3QgU3R5bGVNYXJrZXJEYXRhICZvdGhlcik7CkBAIC0yMzUsOCArMjE2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICB9OwogCiAgICAgLy8gTm90ZSA6IHRoZSBydWxlIGZvciB0aGlzIGNs
YXNzIGlzLCAqbm8gaW5oZXJpdGFuY2UqIG9mIHRoZXNlIHByb3BzCi0gICAgY2xhc3MgU3R5bGVN
aXNjRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNaXNjRGF0YT4KLSAgICB7CisgICAgY2xhc3Mg
U3R5bGVNaXNjRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVNaXNjRGF0YT4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgU3R5bGVNaXNjRGF0YSgpOwogICAgICAgICBTdHlsZU1pc2NEYXRhKGNvbnN0
IFN0eWxlTWlzY0RhdGEgJm90aGVyKTsKQEAgLTI1NCw5ICsyMzQsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBTdHlsZU1pc2NEYXRhICZvcGVyYXRvcj0oY29u
c3QgU3R5bGVNaXNjRGF0YSAmKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHUmVu
ZGVyU3R5bGVEZWZzX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9l
dmVudHMvU1ZHWm9vbUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9ldmVudHMv
U1ZHWm9vbUV2ZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9ldmVudHMv
U1ZHWm9vbUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHWm9vbUV2ZW50IDogcHVibGljIFVJRXZlbnQK
LSAgICB7CisgICAgY2xhc3MgU1ZHWm9vbUV2ZW50IDogcHVibGljIFVJRXZlbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU1ZHWm9vbUV2ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1pvb21F
dmVudCgpOwpAQCAtNTcsOSArNTYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBG
bG9hdFBvaW50IG1fbmV3VHJhbnNsYXRlOwogICAgICAgICBGbG9hdFBvaW50IG1fcHJldmlvdXNU
cmFuc2xhdGU7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBTVkdab29tRXZlbnRfSAogCiAvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdT
dHlsZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFzUmVu
ZGVyaW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogI2RlZmluZSBL
U1ZHX0tDYW52YXNSZW5kZXJpbmdTdHlsZV9ICiAjaWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUg
PGtjYW52YXMvS0NhbnZhc01hdHJpeC5oPgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3Qu
aCIKKyNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNNYXRyaXguaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00Myw3ICs0Myw2IEBAIGVudW0gS0NKb2luU3R5bGUgewogICAgIEpPSU5fQkVW
RUwgPSAzCiB9OwogCi0KIC8vIFNwZWNpYWwgdHlwZXMKIHR5cGVkZWYgRGVwcmVjYXRlZFZhbHVl
TGlzdDxmbG9hdD4gS0NEYXNoQXJyYXk7CiAKQEAgLTUzLDggKzUyLDggQEAgdHlwZWRlZiBEZXBy
ZWNhdGVkVmFsdWVMaXN0PGZsb2F0PiBLQ0RhcwogICAgIGNsYXNzIEtSZW5kZXJpbmdQYWludFNl
cnZlcjsKICAgICBjbGFzcyBSZW5kZXJTdHlsZTsKICAgICBjbGFzcyBSZW5kZXJPYmplY3Q7Ci0g
ICAgY2xhc3MgS1NWR1BhaW50ZXJGYWN0b3J5Ci0gICAgeworCisgICAgY2xhc3MgS1NWR1BhaW50
ZXJGYWN0b3J5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBLUmVuZGVyaW5nRmlsbFBh
aW50ZXIgZmlsbFBhaW50ZXIoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3Qq
KTsKICAgICAgICAgc3RhdGljIEtSZW5kZXJpbmdTdHJva2VQYWludGVyIHN0cm9rZVBhaW50ZXIo
Y29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKQEAgLTY3LDkgKzY2LDEw
IEBAIHR5cGVkZWYgRGVwcmVjYXRlZFZhbHVlTGlzdDxmbG9hdD4gS0NEYXMKIAogICAgICAgICBz
dGF0aWMgZG91YmxlIGNzc1ByaW1pdGl2ZVRvTGVuZ3RoKGNvbnN0IFJlbmRlck9iamVjdCosIENT
U1ZhbHVlKiwgZG91YmxlIGRlZmF1bHRWYWx1ZSA9IDAuMCk7CiAgICAgfTsKLX07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRp
ZiAvLyBLU1ZHX0tDYW52YXNSZW5kZXJpbmdTdHlsZV9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdl
YkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
OSArMjUsMjEgQEAKIAogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogCi1uYW1lc3BhY2Ug
V2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHSW1hZ2VFbGVt
ZW50OworCiAgICAgY2xhc3MgU1ZHSW1hZ2VMb2FkZXIgOiBwdWJsaWMgSFRNTEltYWdlTG9hZGVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR0ltYWdlTG9hZGVyKFNWR0ltYWdlRWxlbWVudCAq
bm9kZSk7CisgICAgICAgIFNWR0ltYWdlTG9hZGVyKFNWR0ltYWdlRWxlbWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdJbWFnZUxvYWRlcigpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NW
R0ltYWdlTG9hZGVyX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9z
Y3JpcHRzL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zY3JpcHRz
L21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zY3JpcHRz
L21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCBwcmludCAi
dm9pZCBpbml0KCkKIAkJcHJpbnREZWZpbml0aW9ucyhcQGF0dHJzLCAiYXR0cmlidXRlcyIsICRh
dHRyc05hbWVzcGFjZSk7CiAJfQogCi0JcHJpbnQgIn1cblxufSB9IjsKKwlwcmludCAifVxuXG59
IH1cblxuIjsKIAlyZXN0b3JlU1RET1VUKCk7CiB9CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCAke25h
bWVzcGFjZX1FbGVtZW50ICoke25hbWVzcGFjZX1FbGVtZW50CiAgICAgcmV0dXJuIG5ldyAke25h
bWVzcGFjZX1FbGVtZW50KHFOYW1lLCBkb2MpOwogfQogCi19OyAvLyBuYW1lc3BhY2UKK30gLy8g
bmFtZXNwYWNlCiAKIEVORAogOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lv
biAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDE1ICsyNCwxNiBAQAogI2RlZmluZSBLU1ZHX1NWR0FFbGVtZW50SW1wbF9ICiAj
aWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCisjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgotI2lu
Y2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgor
I2luY2x1ZGUgIlNWR1Rlc3RzLmgiCisjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKICAgICBjbGFzcyBTVkdB
bmltYXRlZFN0cmluZzsKKwogICAgIGNsYXNzIFNWR0FFbGVtZW50IDogcHVibGljIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdVUklSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R1Rlc3RzLApAQCAtNTksOSArNjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRl
OgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gbV90YXJnZXQ7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0FFbGVtZW50SW1wbF9ICiAKIC8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuZ2xlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5nbGUuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdBbmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTEg
QEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogCi0g
ICAgY2xhc3MgU1ZHQW5nbGUgOiBwdWJsaWMgU2hhcmVkPFNWR0FuZ2xlPgotICAgIHsKKyAgICBj
bGFzcyBTVkdBbmdsZSA6IHB1YmxpYyBTaGFyZWQ8U1ZHQW5nbGU+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFNWR0FuZ2xlKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNvbnRleHQpOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdBbmdsZSgpOwpAQCAtNzcsOSArNzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKIAogICAgICAgICB2b2lkIGNhbGN1bGF0ZSgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8g
S1NWR19TVkdBbmdsZUltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKIAot
bmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdBbmltYXRlQ29sb3JFbGVtZW50IDog
cHVibGljIFNWR0FuaW1hdGlvbkVsZW1lbnQKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICBjbGFzcyBTVkdBbmltYXRlQ29sb3JFbGVtZW50IDogcHVibGljIFNWR0FuaW1hdGlvbkVs
ZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudCgpOwpAQCAtNTYsOSArNTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAg
ICAgICAgaW50IG1fZ3JlZW5EaWZmOwogICAgICAgICBpbnQgbV9ibHVlRGlmZjsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNl
bmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGxfSAogCiAvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJl
dmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGlv
bkVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdBbmltYXRl
RWxlbWVudCA6IHB1YmxpYyBTVkdBbmltYXRpb25FbGVtZW50Ci0gICAgeworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU1ZHQW5pbWF0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHQW5pbWF0
aW9uRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdBbmltYXRlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZUVsZW1lbnQoKTsKQEAgLTQxLDkgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAg
ICAgRGVwcmVjYXRlZFN0cmluZyBtX3NhdmVkVG87CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBL
U1ZHX1NWR0FuaW1hdGVFbGVtZW50SW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAkocmV2aXNp
b24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMTUgQEAKICNkZWZpbmUgS1NWR19TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudEltcGxfSAogI2lmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNNYXRyaXguaD4KLQogI2luY2x1ZGUgImtzdmcuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRpb25FbGVtZW50LmgiCisjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzTWF0cml4
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKICAgICBj
bGFzcyBTVkdUcmFuc2Zvcm07Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQg
OiBwdWJsaWMgU1ZHQW5pbWF0aW9uRWxlbWVudAotICAgIHsKKworICAgIGNsYXNzIFNWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50IDogcHVibGljIFNWR0FuaW1hdGlvbkVsZW1lbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50KCk7CkBAIC02NCw5ICs2MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBi
b29sIG1fdG9Sb3RhdGVTcGVjaWFsQ2FzZSA6IDE7CiAgICAgICAgIGJvb2wgbV9mcm9tUm90YXRl
U3BlY2lhbENhc2UgOiAxOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDkg
QEAKICNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVtcGxhdGUu
aCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlIDog
cHVibGljIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQW5nbGU+Ci0gICAgeworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZSA6IHB1YmxpYyBTVkdBbmltYXRl
ZFRlbXBsYXRlPFNWR0FuZ2xlPiB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdBbmltYXRlZEFu
Z2xlKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNvbnRleHQpOwogICAgICAgICB2aXJ0dWFsIH5T
VkdBbmltYXRlZEFuZ2xlKCk7CkBAIC0zOSw5ICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIFNWR0FuZ2xlICpjcmVhdGUoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGFzc2lnbihTVkdBbmdsZSAqc3JjLCBTVkdBbmdsZSAqZHN0KSBjb25zdDsKICAgICB9
OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
LSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHQW5pbWF0ZWRBbmdsZUltcGxfSAogCiAvLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAkocmV2
aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiAKICNpbmNsdWRlICJTaGFyZWQuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNz
IFNWR1N0eWxlZEVsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuIDogcHVibGlj
IFNoYXJlZDxTVkdBbmltYXRlZEJvb2xlYW4+Ci0gICAgeworCisgICAgY2xhc3MgU1ZHQW5pbWF0
ZWRCb29sZWFuIDogcHVibGljIFNoYXJlZDxTVkdBbmltYXRlZEJvb2xlYW4+IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR0FuaW1hdGVkQm9vbGVhbihjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpj
b250ZXh0KTsKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRCb29sZWFuKCk7CkBAIC00Nyw5
ICs0NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQgKm1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHQW5pbWF0
ZWRCb29sZWFuSW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0FuaW1hdGVkQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdBbmltYXRlZENvbG9yLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNp
bmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Citu
YW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdBbmltYXRlZENvbG9yIDogcHVibGlj
IFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQ29sb3I+CiAgICAgewogICAgIHB1YmxpYzoKQEAgLTM3
LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdDb2xvciAq
Y3JlYXRlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhc3NpZ24oU1ZHQ29sb3IgKnNy
YywgU1ZHQ29sb3IgKmRzdCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCAqbV9jb250ZXh0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKm1f
Y29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZExl
bmd0aC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgTGVuZ3RoTW9kZSBtX21vZGU7CiAgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQg
Km1fdmlld3BvcnRFbGVtZW50OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0xlbmd0aExpc3Qg
KmNyZWF0ZSgpIGNvbnN0OwogICAgICAgICAvL3ZpcnR1YWwgdm9pZCBhc3NpZ24oU1ZHTGVuZ3Ro
TGlzdCAqc3JjLCBTVkdMZW5ndGhMaXN0ICpkc3QpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgJKHJldmlzaW9uIDE1NjkzKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdOdW1iZXJMaXN0
ICpjcmVhdGUoKSBjb25zdDsKICAgICAgICAgLy92aXJ0dWFsIHZvaWQgYXNzaWduKFNWR051bWJl
ckxpc3QgKnNyYywgU1ZHTnVtYmVyTGlzdCAqZHN0KSBjb25zdDsKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaAkocmV2aXNpb24gMTU2OTMp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFBhdGhEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBT
VkdQYXRoU2VnTGlzdCAqYW5pbWF0ZWRQYXRoU2VnTGlzdCgpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCBTVkdQYXRoU2VnTGlzdCAqYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKSBj
b25zdCA9IDA7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1h
dGVkUG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQ
b2ludHMuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRl
ZFBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHUG9pbnRMaXN0ICpwb2ludHMoKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgU1ZHUG9pbnRMaXN0ICphbmltYXRlZFBvaW50cygpIGNvbnN0ID0gMDsK
ICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvICpjcmVhdGUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGFz
c2lnbihTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICpzcmMsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8g
KmRzdCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Fu
aW1hdGVkUmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgU1ZHUmVjdCAqY3JlYXRlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhc3NpZ24oU1ZHUmVjdCAqc3JjLCBTVkdSZWN0ICpkc3QpIGNvbnN0OwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgJKHJldmlzaW9u
IDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVtcGxh
dGUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdBbmltYXRlZFN0cmlu
ZyA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPFN0cmluZ0ltcGw+Ci0gICAgeworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmcgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRUZW1wbGF0ZTxTdHJpbmdJbXBsPiB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdB
bmltYXRlZFN0cmluZyhjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KTsKICAgICAgICAg
dmlydHVhbCB+U1ZHQW5pbWF0ZWRTdHJpbmcoKTsKQEAgLTM4LDkgKzM3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nSW1wbCAqY3JlYXRlKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBhc3NpZ24oU3RyaW5nSW1wbCAqc3JjLCBTdHJpbmdJbXBsICpk
c3QpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdBbmltYXRlZFN0cmlu
Z0ltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
bmltYXRlZFRlbXBsYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0FuaW1hdGVkVGVtcGxhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAj
aW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiAgICAgLy8gU1ZHQW5pbWF0ZWRUZW1wbGF0ZQogICAgIC8vIC0g
bGF6eSBjcmVhdGlvbiBvZiBiYXNlVmFsL2FuaW1WYWwKICAgICAvLyAgIChubyBtb3JlIHdhc3Rl
IG9mIG1vc3RseSB1bnVzZWQgYW5pbVZhbCB2YXJpYWJsZSEpCkBAIC0zNSw4ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgLy8gLSBubyBjb3B5IGN0b3Ivbm8gYXNzaWdubWVudCBvcGVy
YXRvciBhdmFpbGFibGUKICAgICAvLyAgICgtPiBhIGNsYXNzIGZvciBvbmx5IGZvciBwb2ludGVy
IHVzYWdlKQogICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRUZW1w
bGF0ZSA6IHB1YmxpYyBTaGFyZWQ8U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxUPiA+Ci0gICAgeworICAg
IGNsYXNzIFNWR0FuaW1hdGVkVGVtcGxhdGUgOiBwdWJsaWMgU2hhcmVkPFNWR0FuaW1hdGVkVGVt
cGxhdGU8VD4gPiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFRl
bXBsYXRlKCkKICAgICAgICAgewpAQCAtOTcsOSArOTYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8VD4gbV9iYXNlVmFsOwogICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxUPiBtX2FuaW1WYWw7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0FuaW1h
dGVkVGVtcGxhdGVfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTAgKzI3LDkgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRlLmgiCiAjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNs
YXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRl
PFNWR1RyYW5zZm9ybUxpc3Q+Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IDogcHVibGljIFNWR0FuaW1hdGVkVGVtcGxhdGU8
U1ZHVHJhbnNmb3JtTGlzdD4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNvbnRleHQpOwogICAgICAgICB2aXJ0
dWFsIH5TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QoKTsKQEAgLTM5LDkgKzM4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHVHJhbnNmb3JtTGlzdCAqY3JlYXRlKCkg
Y29uc3Q7CiAgICAgICAgIC8vdmlydHVhbCB2b2lkIGFzc2lnbihTVkdUcmFuc2Zvcm1MaXN0ICpz
cmMsIFNWR1RyYW5zZm9ybUxpc3QgKmRzdCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAv
LyBLU1ZHX1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNp
b24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDIwIEBACiAKICNpbmNsdWRlICJBdHRyLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5o
IgorI2luY2x1ZGUgImtzdmdjc3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiS1NWR1RpbWVTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZH
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlhM
aW5rTmFtZXMuaCIKLSNpbmNsdWRlICJrc3ZnY3NzcHJvcGVydGllcy5oIgogI2luY2x1ZGUgPGZs
b2F0Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNTMxLDE1ICs1
MzIsMTQgQEAgaW50IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUN1cnJlbgogICAgIHVu
c2lnbmVkIGxvbmcgaXRlbXMgPSBtX3ZhbHVlcy0+bnVtYmVyT2ZJdGVtcygpOwogCiAgICAgLy8g
Q2FsY3VsYXRlIHRoZSByZWxhdGl2ZSB0aW1lIHBlcmNlbnRhZ2VzIGZvciBlYWNoICdmYWRlJy4K
LSAgICBkb3VibGUgc3RhcnRUaW1lc1tpdGVtc107IHN0YXJ0VGltZXNbMF0gPSAwLjA7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPCBpdGVtczsgKytpKQorICAgIFZlY3Rvcjxkb3Vi
bGU+IHN0YXJ0VGltZXMoaXRlbXMpOworICAgIHN0YXJ0VGltZXNbMF0gPSAwLjA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8IGl0ZW1zOyArK2kpCiAgICAgICAgIHN0YXJ0VGltZXNbaV0g
PSAoKCgyLjAgKiBpKSkgLyAoaXRlbXMgLSAxKSkgLyAyLjA7CiAKICAgICBpbnQgaXRlbUJ5UGVy
Y2VudGFnZSA9IC0xOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgaXRlbXMgLSAx
OyArK2kpCi0gICAgewotICAgICAgICBpZiAodGltZVBlcmNlbnRhZ2UgPj0gc3RhcnRUaW1lc1tp
XSAmJiB0aW1lUGVyY2VudGFnZSA8PSBzdGFydFRpbWVzW2kgKyAxXSkKLSAgICAgICAgeworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcyAtIDE7ICsraSkgeworICAgICAgICBpZiAo
dGltZVBlcmNlbnRhZ2UgPj0gc3RhcnRUaW1lc1tpXSAmJiB0aW1lUGVyY2VudGFnZSA8PSBzdGFy
dFRpbWVzW2kgKyAxXSkgewogICAgICAgICAgICAgaXRlbUJ5UGVyY2VudGFnZSA9IGk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTU2LDggKzU1Niw5IEBAIGRvdWJsZSBTVkdB
bmltYXRpb25FbGVtZW50OjpjYWxjdWxhdGVSZWwKICAgICB1bnNpZ25lZCBsb25nIGl0ZW1zID0g
bV92YWx1ZXMtPm51bWJlck9mSXRlbXMoKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVsYXRp
dmUgdGltZSBwZXJjZW50YWdlcyBmb3IgZWFjaCAnZmFkZScuCi0gICAgZG91YmxlIHN0YXJ0VGlt
ZXNbaXRlbXNdOyBzdGFydFRpbWVzWzBdID0gMC4wOwotICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAxOyBpIDwgaXRlbXM7ICsraSkKKyAgICBWZWN0b3I8ZG91YmxlPiBzdGFydFRpbWVzKGl0ZW1z
KTsKKyAgICBzdGFydFRpbWVzWzBdID0gMC4wOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBpdGVtczsgKytpKQogICAgICAgICBzdGFydFRpbWVzW2ldID0gKCgoMi4wICogaSkpIC8gKGl0
ZW1zIC0gMSkpIC8gMi4wOwogCiAgICAgZG91YmxlIGJlZ2luVGltZVBlcmNlbnRhZ2UgPSBzdGFy
dFRpbWVzW2N1cnJlbnRJdGVtXTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw1NCArMjQsNDggQEAKICNkZWZpbmUg
S1NWR19TVkdBbmltYXRpb25FbGVtZW50SW1wbF9ICiAjaWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1
ZGUgIlNWR1Rlc3RzLmgiCi0jaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0Lmgi
CisjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBlbnVt
IEVGaWxsTW9kZQotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGVudW0gRUZpbGxN
b2RlIHsKICAgICAgICAgRklMTF9SRU1PVkUgPSAwLAogICAgICAgICBGSUxMX0ZSRUVaRQogICAg
IH07CiAKLSAgICBlbnVtIEVBZGRpdGl2ZU1vZGUKLSAgICB7CisgICAgZW51bSBFQWRkaXRpdmVN
b2RlIHsKICAgICAgICAgQURESVRJVkVfUkVQTEFDRSA9IDAsCiAgICAgICAgIEFERElUSVZFX1NV
TQogICAgIH07CiAKLSAgICBlbnVtIEVBY2N1bXVsYXRlTW9kZQotICAgIHsKKyAgICBlbnVtIEVB
Y2N1bXVsYXRlTW9kZSB7CiAgICAgICAgIEFDQ1VNVUxBVEVfTk9ORSA9IDAsCiAgICAgICAgIEFD
Q1VNVUxBVEVfU1VNCiAgICAgfTsKIAotICAgIGVudW0gRUNhbGNNb2RlCi0gICAgeworICAgIGVu
dW0gRUNhbGNNb2RlIHsKICAgICAgICAgQ0FMQ01PREVfRElTQ1JFVEUgPSAwLAogICAgICAgICBD
QUxDTU9ERV9MSU5FQVIsCiAgICAgICAgIENBTENNT0RFX1BBQ0VELAogICAgICAgICBDQUxDTU9E
RV9TUExJTkUKICAgICB9OwogCi0gICAgZW51bSBFUmVzdGFydAotICAgIHsKKyAgICBlbnVtIEVS
ZXN0YXJ0IHsKICAgICAgICAgUkVTVEFSVF9BTFdBWVMgPSAwLAogICAgICAgICBSRVNUQVJUX1dI
RU5OT1RBQ1RJVkUsCiAgICAgICAgIFJFU1RBUlRfTkVWRVIKICAgICB9OwogCi0gICAgZW51bSBF
QXR0cmlidXRlVHlwZQotICAgIHsKKyAgICBlbnVtIEVBdHRyaWJ1dGVUeXBlIHsKICAgICAgICAg
QVRUUklCVVRFVFlQRV9DU1MgPSAwLAogICAgICAgICBBVFRSSUJVVEVUWVBFX1hNTCwKICAgICAg
ICAgQVRUUklCVVRFVFlQRV9BVVRPCiAgICAgfTsKIAotICAgIGVudW0gRUFuaW1hdGlvbk1vZGUg
Ly8gaW50ZXJuYWwKLSAgICB7CisgICAgLy8gaW50ZXJuYWwKKyAgICBlbnVtIEVBbmltYXRpb25N
b2RlIHsKICAgICAgICAgTk9fQU5JTUFUSU9OID0gMCwKICAgICAgICAgVE9fQU5JTUFUSU9OLAog
ICAgICAgICBCWV9BTklNQVRJT04sCkBAIC0xNjcsOSArMTYxLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIFJlZlB0cjxTVkdTdHJpbmdMaXN0PiBtX2tleVRpbWVzOwogICAgICAgICBS
ZWZQdHI8U1ZHU3RyaW5nTGlzdD4gbV9rZXlTcGxpbmVzOwogICAgIH07Ci19OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYg
Ly8gS1NWR19TVkdBbmltYXRpb25FbGVtZW50SW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2N5OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9yOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX2NsaXBQYXRoVW5pdHM7CiAgICAgICAgIEtDYW52YXNDbGlwcGVyICptX2NsaXBwZXI7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuaAkocmV2aXNpb24gMTU2OTMpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgs
MTEgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAK
LW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUkdC
Q29sb3I7CiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKICAgICAKLSAgICBjbGFzcyBT
VkdDb2xvciA6IHB1YmxpYyBDU1NWYWx1ZQotICAgIHsKKyAgICBjbGFzcyBTVkdDb2xvciA6IHB1
YmxpYyBDU1NWYWx1ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdDb2xvcigpOwogICAgICAg
ICBTVkdDb2xvcihjb25zdCBTdHJpbmcmIHJnYkNvbG9yKTsKQEAgLTY4LDkgKzY2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fY29sb3JUeXBlOwogICAg
ICAgICBTdHJpbmcgbV9yZ2JDb2xvcjsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZH
Q29sb3JJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZp
c2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fZXhw
b25lbnQ7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBtX29mZnNl
dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAko
cmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTsKICAgICAgICAgQ2FjaGVk
SW1hZ2UgKm1fY2FjaGVkSW1hZ2U7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdET01JbXBsZW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2FuaW1hdGlvbkNvbnRl
eHQgOiAxOwogICAgIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0RPTUltcGxlbWVudGF0aW9u
SW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Rl
ZnNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRGVmc0VsZW1l
bnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNW
R1Rlc3RzOjppc1ZhbGlkKCk7IH0KICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRGVzY0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdE
ZXNjRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Rl
c2NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKIAogICAgICAgICBTdHJpbmdJbXBsICpkZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKICAg
ICBjbGFzcyBTVkdET01JbXBsZW1lbnRhdGlvbjsKIAotICAgIGNsYXNzIFNWR0RvY3VtZW50IDog
cHVibGljIERvY3VtZW50Ci0gICAgeworICAgIGNsYXNzIFNWR0RvY3VtZW50IDogcHVibGljIERv
Y3VtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0RvY3VtZW50KFNWR0RPTUltcGxlbWVu
dGF0aW9uICppLCBGcmFtZVZpZXcgKnZpZXcpOwogICAgICAgICB2aXJ0dWFsIH5TVkdEb2N1bWVu
dCgpOwpAQCAtNDUsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBkaXNwYXRjaFpvb21FdmVudChmbG9hdCBwcmV2U2NhbGUsIGZsb2F0IG5ld1NjYWxlKTsKICAg
ICAgICAgdm9pZCBkaXNwYXRjaFNjcm9sbEV2ZW50KCk7CiAgICAgfTsKLX07CiAKLSNlbmRpZiAv
LyBTVkdfU1VQUE9SVAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBTVkdfU1VQUE9SVAorI2VuZGlmIC8vIEtTVkdfU1ZHRG9jdW1lbnRJbXBsX0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0
ICsyOCwxMyBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICBjbGFzcyBEb2N1bWVudFB0cjsKKyAgICBjbGFzcyBFY21hOwogICAgIGNsYXNzIFNWR01h
dHJpeDsKLSAgICBjbGFzcyBTVkdTVkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1l
bnQ7Ci0gICAgY2xhc3MgRWNtYTsKLSAgICBjbGFzcyBEb2N1bWVudFB0cjsKKyAgICBjbGFzcyBT
VkdTVkdFbGVtZW50OwogCi0gICAgY2xhc3MgU1ZHRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVt
ZW50Ci0gICAgeworICAgIGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7CkBAIC03MiwyOCArNzEs
MjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVJlbmRlcmVyKCkgeyBtX2Nsb3NlZCA9IHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAg
ICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSAqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICAvLyBoZWxwZXI6CiAgICAgICAg
IGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZDsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsKLSAgICAgICAgdm9pZCBhZGRTVkdFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBBdHRyaWJ1dGUqIGF0dHIp
OworICAgICAgICB2b2lkIGFkZFNWR0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGNvbnN0IEF0dHJpYnV0ZSopOwogICAgIH07Ci19OwogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgc3RhdGljIGlubGluZSBTVkdFbGVtZW50ICpzdmdfZHluYW1pY19jYXN0KE5v
ZGUgKm5vZGUpIHsKLSAgICAgICAgU1ZHRWxlbWVudCAqc3ZnRWxlbWVudCA9IE5VTEw7CisKKyAg
ICBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnQqIHN2Z19keW5hbWljX2Nhc3QoTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBOVUxMOwogICAgICAgICBp
ZiAobm9kZSAmJiBub2RlLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHN2Z0VsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50ICo+KG5vZGUpOworICAgICAgICAgICAgc3ZnRWxlbWVu
dCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKTsKICAgICAgICAgcmV0dXJuIHN2Z0Vs
ZW1lbnQ7CiAgICAgfQotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKIAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0VsZW1lbnRJbXBsX0gKIAog
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUK
ICAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlICpmaXJzdENoaWxkKCkgY29uc3Q7CiAgICAgICAg
IFNWR0VsZW1lbnRJbnN0YW5jZSAqbGFzdENoaWxkKCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgJKHJldmlzaW9u
IDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCA9
IDApOwogICAgICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2VMaXN0KCk7CiAgICAgfTsK
LX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw3ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFi
bGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4OwogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkQm9vbGVhbj4g
bV9leHRlcm5hbDsKICAgICB9OwotfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21v
ZGU7CiAgICAgICAgIG11dGFibGUgS0NhbnZhc0ZFQmxlbmQgKm1fZmlsdGVyRWZmZWN0OwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlckxpc3Q+IG1f
dmFsdWVzOwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRUNvbG9yTWF0cml4ICptX2ZpbHRlckVm
ZmVjdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xOwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRUNv
bXBvbmVudFRyYW5zZmVyICptX2ZpbHRlckVmZmVjdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fazQ7CiAgICAgICAgIG11dGFibGUgS0NhbnZhc0ZF
Q29tcG9zaXRlICptX2ZpbHRlckVmZmVjdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvL2xpZ2h0IG1hbmFnZW1lbnQKICAgICAgICAgdm9pZCB1cGRhdGVMaWdodHMoKSBjb25z
dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdB
bmltYXRlZE51bWJlcj4gbV9zY2FsZTsKICAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVEaXNwbGFj
ZW1lbnRNYXAqIG1fZmlsdGVyRWZmZWN0OwogICAgIH07Ci19CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYgLy8gS1NWR19TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnRJbXBsX0gKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZF
RGlzdGFudExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRGlzdGFudExp
Z2h0RWxlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIEtDTGlnaHRTb3VyY2UgKmxpZ2h0U291cmNl
KCkgY29uc3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMTsKICAg
ICAgICAgbXV0YWJsZSBLQ2FudmFzRkVGbG9vZCAqbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuaAkocmV2aXNpb24gMTU2
OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR0ZFRnVu
Y0FFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0
dWFsIH5TVkdGRUZ1bmNBRWxlbWVudCgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdGRUZ1bmNCRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVGdW5jQkVsZW1l
bnQoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jR0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNHRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY0dFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUK
ICAgICAgICAgU1ZHRkVGdW5jR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRnVuY0dFbGVtZW50KCk7CiAgICAgfTsKLX07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR0ZFRnVuY1JF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFs
IH5TVkdGRUZ1bmNSRWxlbWVudCgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gbV9zdGREZXZpYXRpb25ZOwogICAgICAgICBtdXRhYmxl
IEtDYW52YXNGRUdhdXNzaWFuQmx1ciAqbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw3ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FjaGVkSW1hZ2Ug
Km1fY2FjaGVkSW1hZ2U7CiAgICAgICAgIG11dGFibGUgS0NhbnZhc0ZFSW1hZ2UgKm1fZmlsdGVy
RWZmZWN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4gbV9saW1pdGluZ0Nv
bmVBbmdsZTsKICAgICAgICAgCiAgICAgfTsKLX0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
RU1lcmdlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRU1lcmdl
ICptX2ZpbHRlckVmZmVjdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJl
ZlB0cjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjE7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3
ICs1NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0Fu
aW1hdGVkTnVtYmVyPiBtX2R5OwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRU9mZnNldCAqbV9m
aWx0ZXJFZmZlY3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZF
UG9pbnRMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
RVBvaW50TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBLQ0xpZ2h0U291cmNlICpsaWdodFNvdXJjZSgpIGNv
bnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBT
VkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAvL2xpZ2h0IG1hbmFnZW1l
bnQKICAgICAgICAgdm9pZCB1cGRhdGVMaWdodHMoKSBjb25zdDsKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmly
dHVhbCB+U1ZHRkVTcG90TGlnaHRFbGVtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgS0NMaWdodFNv
dXJjZSAqbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJp
bmc+IG1faW4xOwogICAgICAgICBtdXRhYmxlIEtDYW52YXNGRVRpbGUgKm1fZmlsdGVyRWZmZWN0
OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX3R5cGU7CiAgICAgICAgIG11dGFibGUgS0NhbnZhc0ZFVHVyYnVsZW5jZSAqbV9maWx0ZXJF
ZmZlY3Q7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX2ZpbHRlclJlc1k7
CiAgICAgICAgIEtDYW52YXNGaWx0ZXIgKm1fZmlsdGVyOwogICAgIH07Ci19OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5p
bWF0ZWRTdHJpbmc+IG1fcmVzdWx0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTkgKzI0LDE0IEBACiAjZGVm
aW5lIEtTVkdfU1ZHRml0VG9WaWV3Qm94SW1wbF9ICiAjaWYgU1ZHX1NVUFBPUlQKIAotbmFtZXNw
YWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBdHRyaWJ1dGU7
CiAgICAgY2xhc3MgU3RyaW5nSW1wbDsKLX07Ci0KLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAg
Y2xhc3MgU1ZHQW5pbWF0ZWRSZWN0OwogICAgIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbzsKKyAgICBjbGFzcyBTVkdBbmltYXRlZFJlY3Q7CiAgICAgY2xhc3MgU1ZHTWF0cml4
OwotICAgIGNsYXNzIFNWR0ZpdFRvVmlld0JveAotICAgIHsKKworICAgIGNsYXNzIFNWR0ZpdFRv
Vmlld0JveCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdGaXRUb1ZpZXdCb3goKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHRml0VG9WaWV3Qm94KCk7CkBAIC01NCw5ICs0OSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZFJlY3Q+IG1fdmll
d0JveDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvPiBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZH
X1NWR0ZpdFRvVmlld0JveEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY5
MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBib29sIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpjaGlsZFNob3VsCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoY2hpbGQpOwogfQogCi19OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAvLyB2
aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdB
bmltYXRlZExlbmd0aD4gbV9oZWlnaHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
R0VsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0ICpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSk7CiAgICAgfTsKIAotICAgIGNsYXNzIFNWR0R1
bW15RWxlbWVudCA6IHB1YmxpYyBTVkdHRWxlbWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdEdW1t
eUVsZW1lbnQgOiBwdWJsaWMgU1ZHR0VsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
RHVtbXlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2
aXJ0dWFsIH5TVkdEdW1teUVsZW1lbnQoKTsKQEAgLTU5LDcgKzU4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShy
ZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBtX2dyYWRpZW50
VHJhbnNmb3JtOwogICAgICAgICBtdXRhYmxlIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
ICptX3Jlc291cmNlOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdI
ZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuaAkocmV2
aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMjIgKzI2LDIwIEBACiAKICNpbmNsdWRlICJEZXByZWNhdGVkU3RyaW5nLmgi
CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFz
cyBTVkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1N0cmluZ0xpc3Q7CiAKICAgICAvLyBLU1ZHIGV4
dGVuc2lvbgotICAgIGVudW0gTGVuZ3RoTW9kZQotICAgIHsKKyAgICBlbnVtIExlbmd0aE1vZGUg
ewogICAgICAgICBMTV9VTktOT1dOID0gMCwKICAgICAgICAgTE1fV0lEVEgsCiAgICAgICAgIExN
X0hFSUdIVCwKICAgICAgICAgTE1fT1RIRVIKICAgICB9OwogCi0gICAgY2xhc3MgU1ZHSGVscGVy
Ci0gICAgeworICAgIGNsYXNzIFNWR0hlbHBlciB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgZmxvYXQgUGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1l
bnQgKnZpZXdwb3J0RWxlbWVudCwgTGVuZ3RoTW9kZSBtb2RlKTsKIApAQCAtMTAyLDkgKzEwMCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHJldHVybiB2YXJpYWJsZS5nZXQoKTsK
ICAgICB9Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQ
UE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdIZWxwZXJfSAogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNyArNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIFNWR0ltYWdlTG9h
ZGVyIG1faW1hZ2VMb2FkZXI7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xhbmdTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xhbmdT
cGFjZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xhbmdTcGFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSArMjYsMTQgQEAKIAogI2luY2x1ZGUgIkF0b21p
Y1N0cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFN0cmluZ0ltcGw7
Ci0gICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwotfTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAot
bmFtZXNwYWNlIFdlYkNvcmUKLXsKKyAgICBjbGFzcyBNYXBwZWRBdHRyaWJ1dGU7CisgICAgY2xh
c3MgU3RyaW5nSW1wbDsKICAgICBjbGFzcyBTVkdBbmltYXRlZExlbmd0aDsKICAgICBjbGFzcyBT
VkdBbmltYXRlZFN0cmluZzsKIAotICAgIGNsYXNzIFNWR0xhbmdTcGFjZQotICAgIHsKKyAgICBj
bGFzcyBTVkdMYW5nU3BhY2UgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTGFuZ1NwYWNlKCk7
CiAgICAgICAgIHZpcnR1YWwgflNWR0xhbmdTcGFjZSgpOwpAQCAtNTYsOSArNTEsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQXRvbWljU3RyaW5nIG1fbGFuZzsKICAgICAgICAgQXRv
bWljU3RyaW5nIG1fc3BhY2U7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0xhbmdT
cGFjZUltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMZW5ndGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAko
cmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMTcgKzI1LDE1IEBACiAjaWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0KICNpbmNsdWRlIDxrc3ZnMi9zdmcvU1ZHSGVscGVyLmg+CiAK
LWNsYXNzIFJlbmRlclBhdGg7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBXZWJD
b3JlCi17CisgICAgY2xhc3MgUmVuZGVyUGF0aDsKICAgICBjbGFzcyBTVkdFbGVtZW50OwogICAg
IGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoIDogcHVibGljIFNo
YXJlZDxTVkdMZW5ndGg+Ci0gICAgeworCisgICAgY2xhc3MgU1ZHTGVuZ3RoIDogcHVibGljIFNo
YXJlZDxTVkdMZW5ndGg+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xlbmd0aChjb25zdCBT
VkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUgPSBMTV9VTktOT1dOLCBj
b25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IDApOwogICAgICAgICB2aXJ0dWFsIH5TVkdMZW5n
dGgoKTsKQEAgLTkzLDkgKzkxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCAq
bV92aWV3cG9ydEVsZW1lbnQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR0xlbmd0
aEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
ZW5ndGhMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlz
dC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAg
ICAgICAgIHZvaWQgcGFyc2UoY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmdmFsdWUsIGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQgKmNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSk7CiAgICAgfTsKLX07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3gyOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gbV95MjsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feDI7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3kyOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGlzdC5oCShyZXZpc2lvbiAx
NTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDEwIEBACiAjaW5jbHVkZSAiRE9NTGlzdC5oIgogI2luY2x1ZGUgPGtzdmcyL3N2
Zy9TVkdTdHlsZWRFbGVtZW50Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGNsYXNzIFNWR0xpc3QgOiBw
dWJsaWMgRE9NTGlzdDxUPgotICAgIHsKKyAgICBjbGFzcyBTVkdMaXN0IDogcHVibGljIERPTUxp
c3Q8VD4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTGlzdChjb25zdCBTVkdTdHlsZWRFbGVt
ZW50ICpjb250ZXh0ID0gMCkKICAgICAgICAgOiBET01MaXN0PFQ+KCksIG1fY29udGV4dChjb250
ZXh0KSB7fQpAQCAtODcsOSArODYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNl
bmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHTGlzdF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTMgQEAK
ICNpZiBTVkdfU1VQUE9SVAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBGbG9h
dFJlY3Q7Ci0gICAgY2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CisgICAg
Y2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7Ci0gICAgY2xhc3Mg
U1ZHTG9jYXRhYmxlCi0gICAgeworCisgICAgY2xhc3MgU1ZHTG9jYXRhYmxlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR0xvY2F0YWJsZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdMb2NhdGFi
bGUoKTsKQEAgLTUxLDkgKzUyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIFNWR01hdHJpeCogZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKICAgICAgICAgc3RhdGlj
IFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKICAgICB9OwotfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRp
ZgorI2VuZGlmIC8vIFNWR0xvY2F0YWJsZV9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1h
dGVkQW5nbGU+IG1fb3JpZW50QW5nbGU7CiAgICAgICAgIEtDYW52YXNNYXJrZXIgKm1fbWFya2Vy
OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlz
aW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNyArNzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBLQ2Fu
dmFzTWFza2VyICptX21hc2tlcjsKICAgICAgICAgYm9vbCBtX2RpcnR5OwogICAgIH07Ci19Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTUgKzI1LDEzIEBACiAj
aWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotCiAjaW5jbHVk
ZSAiU2hhcmVkLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7
CisKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi0gICAgY2xhc3MgU1ZHTWF0cml4
IDogcHVibGljIFNoYXJlZDxTVkdNYXRyaXg+Ci0gICAgeyAKKyAgICBjbGFzcyBTVkdNYXRyaXgg
OiBwdWJsaWMgU2hhcmVkPFNWR01hdHJpeD4geyAKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR01h
dHJpeCgpOwogICAgICAgICBTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CkBAIC0xMDAsOSArOTgsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdDsKICAgICB9OwotfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlm
IC8vIEtTVkdfU1ZHTWF0cml4SW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR051bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR051bWJlci5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051
bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIGZsb2F0IG1fdmFsdWU7CiAgICAgICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQg
Km1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVt
YmVyTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3Qu
aAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAg
ICAgICB2b2lkIHBhcnNlKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnZhbHVlLCBjb25zdCBTVkdT
dHlsZWRFbGVtZW50ICpjb250ZXh0ID0gMCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGFpbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYWludC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogCiAjaW5jbHVkZSA8U1ZHQ29sb3Iu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdQYWludCA6IHB1YmxpYyBT
VkdDb2xvcgotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR1BhaW50
IDogcHVibGljIFNWR0NvbG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1BhaW50KCk7CiAg
ICAgICAgIFNWR1BhaW50KFN0cmluZ0ltcGwgKnVyaSk7CkBAIC01MCw5ICs0OSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3BhaW50VHlwZTsKICAgICAg
ICAgU3RyaW5nIG1fdXJpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdQYWludElt
cGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRo
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50
LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBcmNUbyhkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBy
MSwgZG91YmxlIHIyLCBkb3VibGUgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVw
RmxhZywgYm9vbCBhYnMgPSB0cnVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0Nsb3NlUGF0
aCgpOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBT
VkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lvbiAx
NTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWcuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqbV9jb250ZXh0OwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQXJjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0FyYy5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhdGhTZWdBcmMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGJvb2wgbV9sYXJnZUFyY0ZsYWcgOiAxOwog
ICAgICAgICBib29sIG1fc3dlZXBGbGFnIDogMTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0
aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJaIjsgfQogICAgICAgICB2aXJ0dWFs
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJaIjsgfQogICAgIH07Ci19OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oCShyZXZpc2lv
biAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAg
ICAgIGRvdWJsZSBtX3gyOwogICAgICAgICBkb3VibGUgbV95MjsKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGgu
aAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0
b0N1YmljU21vb3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgZG91YmxlIG1feDI7CiAgICAgICAgIGRvdWJsZSBtX3kyOwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBkb3VibGUgbV94MTsKICAgICAgICAgZG91YmxlIG1f
eTE7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljU21vb3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGRvdWJs
ZSBtX3g7CiAgICAgICAgIGRvdWJsZSBtX3k7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaW5ldG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXRoU2VnTGluZXRvLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUGF0aFNlZ0xpbmV0by5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGRvdWJsZSBtX3g7CiAgICAgICAgIGRvdWJsZSBt
X3k7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaW5l
dG9Ib3Jpem9udGFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWwuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2
MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgZG91YmxlIG1f
eDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpbmV0
b1ZlcnRpY2FsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xp
bmV0b1ZlcnRpY2FsLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICBkb3VibGUgbV95OwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBTVkdQYXRoU2Vn
TGlzdChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0ID0gMCk7CiAgICAgICAgIHZpcnR1
YWwgflNWR1BhdGhTZWdMaXN0KCk7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1BhdGhTZWdNb3ZldG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQYXRoU2VnTW92ZXRvLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHUGF0aFNlZ01vdmV0by5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIGRvdWJsZSBtX3g7CiAgICAgICAgIGRvdWJsZSBtX3k7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2
aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAg
ICAgdm9pZCBkcmF3UGF0dGVybkNvbnRlbnRJbnRvVGlsZShjb25zdCBTVkdQYXR0ZXJuRWxlbWVu
dCAqdGFyZ2V0LCBjb25zdCBJbnRTaXplICZuZXdTaXplLCBLQ2FudmFzTWF0cml4IHBhdHRlcm5U
cmFuc2Zvcm1NYXRyaXgpIGNvbnN0OwogICAgICAgICB2b2lkIG5vdGlmeUNsaWVudHNUb1JlcGFp
bnQoKSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2ludC5oCShyZXZpc2lv
biAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvaW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdT
dHlsZWRFbGVtZW50ICptX2NvbnRleHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1BvaW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BvaW50TGlzdC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bv
aW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIFNWR1BvaW50TGlzdChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0
ID0gMCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1BvaW50TGlzdCgpOwogICAgIH07Ci19OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdQb2x5
VG8oZG91YmxlIHgxLCBkb3VibGUgeTEsIGludCBucikgY29uc3Q7CiAgICAgfTsKLX07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgdmlydHVhbCBLQ2Fu
dmFzUGF0aCogdG9QYXRoRGF0YSgpIGNvbnN0OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgS0NhbnZhc1BhdGgq
IHRvUGF0aERhdGEoKSBjb25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE3ICsyNiwxMyBAQAogCiAjaW5jbHVkZSAiU2hhcmVkLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3Jl
Ci17Ci0gICAgY2xhc3MgU3RyaW5nSW1wbDsKLX07CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5h
bWVzcGFjZSBXZWJDb3JlCi17CisgICAgY2xhc3MgU3RyaW5nSW1wbDsKICAgICBjbGFzcyBTVkdN
YXRyaXg7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKLSAgICBjbGFzcyBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvIDogcHVibGljIFNoYXJlZDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPgotICAg
IHsgCisKKyAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIDogcHVibGljIFNoYXJlZDxT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiB7IAogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyhjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KTsKICAgICAgICAg
dmlydHVhbCB+U1ZHUHJlc2VydmVBc3BlY3RSYXRpbygpOwpAQCAtNjEsOSArNTcsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50ICptX2NvbnRl
eHQ7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBLU1ZHX1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9J
bXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fZng7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX2Z5OwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdC5oCShyZXZpc2lvbiAx
NTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQgKm1fY29udGV4dDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdS
ZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcng7CiAg
ICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5OwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGJvb2wgbV91c2VDdXJyZW50
VmlldzsKICAgICAgICAgVGltZVNjaGVkdWxlciogbV90aW1lU2NoZWR1bGVyOwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5
MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAg
ICAgIFN0cmluZyBtX3R5cGU7CiAgICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1NldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTZXRF
bGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU2V0RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBtX3NhdmVkVG87CiAgICAg
fTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gMTU2
OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fb2Zmc2V0OwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHJpbmdMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3RyaW5nTGlzdC5oCShyZXZpc2lvbiAxNTY5MykKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTAgKzI2LDkgQEAKIAogI2luY2x1ZGUgIlNWR0xpc3QuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUK
LXsKLSAgICBjbGFzcyBTVkdTdHJpbmdMaXN0IDogcHVibGljIFNWR0xpc3Q8U3RyaW5nSW1wbD4K
LSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdTdHJpbmdMaXN0IDog
cHVibGljIFNWR0xpc3Q8U3RyaW5nSW1wbD4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3Ry
aW5nTGlzdChjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0ID0gMCk7CiAgICAgICAgIHZp
cnR1YWwgflNWR1N0cmluZ0xpc3QoKTsKQEAgLTM3LDkgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHZvaWQgcmVzZXQoY29uc3QgRGVwcmVj
YXRlZFN0cmluZyAmc3RyKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHU3RyaW5n
TGlzdEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdTdHlsYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxhYmxl
LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMzIgKzI2LDI4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAg
ICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247Ci19OwotCi1uYW1lc3BhY2UgV2ViQ29yZQotewogICAgIGNsYXNzIFNWR0Fu
aW1hdGVkU3RyaW5nOwogCi0gICAgY2xhc3MgU1ZHU3R5bGFibGUKLSAgICB7CisgICAgY2xhc3Mg
U1ZHU3R5bGFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGFibGUoKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHU3R5bGFibGUoKTsKIAogICAgICAgICAvLyAnU1ZHU3R5bGFibGUnIGZ1
bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR0FuaW1hdGVkU3RyaW5nICpjbGFzc05hbWUoKSBj
b25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU1ZHQW5pbWF0ZWRTdHJpbmcqIGNsYXNzTmFtZSgp
IGNvbnN0ID0gMDsKIAotICAgICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24gKnN0eWxl
KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIENTU1ZhbHVlICpnZXRQcmVzZW50YXRpb25BdHRyaWJ1
dGUoU3RyaW5nSW1wbCAqbmFtZSkgPSAwOworICAgICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIENTU1ZhbHVlKiBnZXRQcmVzZW50
YXRpb25BdHRyaWJ1dGUoU3RyaW5nSW1wbCogbmFtZSkgPSAwOwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5k
aWYgLy8gS1NWR19TVkdTdHlsYWJsZUltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2
LDExIEBACiAKICNpbmNsdWRlIDxTVkdFbGVtZW50Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBDU1NTdHlsZVNoZWV0OwotfTsKIAot
bmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdTdHlsZUVsZW1lbnQgOiBwdWJsaWMg
U1ZHRWxlbWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdTdHlsZUVsZW1lbnQgOiBwdWJsaWMgU1ZH
RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdTdHlsZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1N0eWxlRWxlbWVu
dCgpOwpAQCAtNjQsOSArNjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IG1fc2hlZXQ7CiAgICAgICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAot
I2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdTdHlsZUVsZW1lbnRJbXBsX0gKIAogLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDIzICsyNCwyMiBAQAogI2RlZmluZSBLU1ZHX1NWR1N0eWxlZEVsZW1lbnRJ
bXBsX0gKICNpZiBTVkdfU1VQUE9SVAogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGFibGUuaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1
ZGUgPGtjYW52YXMvS0NhbnZhc1BhdGguaD4KLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi1u
YW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFJlbmRlclBhdGg7Ci0gICAgY2xhc3MgS1Jl
bmRlcmluZ0RldmljZTsKLSAgICBjbGFzcyBLQ2FudmFzUmVzb3VyY2U7Ci0gICAgY2xhc3MgS0Nh
bnZhc1JlbmRlcmluZ1N0eWxlOworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgQ1NT
U3R5bGVEZWNsYXJhdGlvbjsKKyAgICBjbGFzcyBLQ2FudmFzUmVuZGVyaW5nU3R5bGU7CisgICAg
Y2xhc3MgS0NhbnZhc1Jlc291cmNlOworICAgIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2U7CisgICAg
Y2xhc3MgUmVuZGVyUGF0aDsKICAgICBjbGFzcyBSZW5kZXJWaWV3OwotICAgIGNsYXNzIFNWR1N0
eWxlZEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudAotICAgIHsKKworICAgIGNsYXNzIFNWR1N0
eWxlZEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBT
VkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdTdHlsZWRFbGVtZW50KCk7CkBAIC00OCwyNSArNDcsMjUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdTdHlsYWJsZScgZnVuY3Rpb25zCi0gICAgICAg
IHZpcnR1YWwgU1ZHQW5pbWF0ZWRTdHJpbmcgKmNsYXNzTmFtZSgpIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIFNWR0FuaW1hdGVkU3RyaW5nKiBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICAv
LyBUaGVzZSBuZWVkIHRvIGJlIGltcGxlbWVudGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgS0NhbnZhc1BhdGgqIHRvUGF0aERhdGEoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0ICpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSk7Ci0gICAgICAgIHZpcnR1YWwg
S0NhbnZhc1Jlc291cmNlICpjYW52YXNSZXNvdXJjZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKKyAgICAgICAgdmlydHVhbCBLQ2FudmFzUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNl
KCkgeyByZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgICAgICBSZW5k
ZXJWaWV3ICp2aWV3KCkgY29uc3Q7CisgICAgICAgIFJlbmRlclZpZXcqIHZpZXcoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUgKmF0dHIsIGJvb2wg
cHJlc2VydmVEZWNscyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogCiAgICAgICAg
IC8vIEltYWdpbmUgd2UncmUgYSA8cmVjdD4gaW5zaWRlIG9mIGEgPHBhdHRlcm4+IHNlY3Rpb24g
d2l0aCBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIKICAgICAgICAgLy8g
YW5kIG91ciAnd2lkdGgnIGF0dHJpYnV0ZSBpcyBzZXQgdG8gNTAlLiBXaGVuIHRoZSBwYXR0ZXJu
IGdldHMgcmVmZXJlbmNlZCBpdCBrbm93cyB0aGUgImJib3giCiAgICAgICAgIC8vIG9mIGl0J3Mg
dXNlciBhbmQgaGFzIHRvIHB1c2ggdGhlICJhY3RpdmUgY2xpZW50J3MgYmJveCIgYXMgbmV3IGF0
dHJpYnV0ZSBjb250ZXh0IHRvIGFsbCBhdHRyaWJ1dGVzCiAgICAgICAgIC8vIG9mIHRoZSAncmVj
dCcuIFRoaXMgZnVuY3Rpb24gYWxzbyByZXR1cm5zIHRoZSBvbGQgYXR0cmlidXRlIGNvbnRleHQs
IHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdC4uLgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQgKnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQg
KmNvbnRleHQpOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hB
dHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2b2lkIHVwZGF0ZUNhbnZhc0l0ZW0oKTsgLy8gSGFuZGxlcyAi
cGF0aCBkYXRhIiBvYmplY3QgY2hhbmdlcy4uLiAobm90IGZvciBzdHlsZS90cmFuc2Zvcm0hKQpA
QCAtNzgsOSArNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgLy8gT3B0aW1pemVk
IHVwZGF0aW5nIGxvZ2ljCiAgICAgICAgIGJvb2wgbV91cGRhdGVWZWN0b3JpYWwgOiAxOwogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdTdHlsZWRFbGVtZW50SW1wbF9ICiAKIC8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5
bGVkTG9jYXRhYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQsMTUgQEAK
ICNkZWZpbmUgS1NWR19TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbF9ICiAjaWYgU1ZHX1NV
UFBPUlQKIAotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMb2Nh
dGFibGUuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdFbGVtZW50OwotICAg
IGNsYXNzIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVu
dCwgcHVibGljIFNWR0xvY2F0YWJsZQotICAgIHsKKworICAgIGNsYXNzIFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwgcHVibGljIFNWR0xvY2F0YWJs
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50KCk7CkBAIC00MCwxNyArNDAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRMb2NhdGFibGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICAgICAgLy8gJ1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQnIGZ1bmN0
aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQgKm5lYXJlc3RWaWV3cG9ydEVsZW1lbnQo
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50ICpmYXJ0aGVzdFZpZXdwb3J0RWxl
bWVudCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9y
dEVsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZp
ZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJC
b3goKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXggKmdldENUTSgpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCAqZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHTWF0cml4ICpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCAqZWxl
bWVudCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldFNjcmVlbkNUTSgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqKSBj
b25zdDsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDE3IEBACiAjaW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKIAotY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgV2ViQ29yZQot
eworICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBBdHRyaWJ1dGU7CiAgICAg
Y2xhc3MgTm9kZTsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwotICAgIGNsYXNzIEF0dHJpYnV0ZTsK
LX07Ci0KLW5hbWVzcGFjZSBXZWJDb3JlCi17CisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0OwogICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0
OwotICAgIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LCBwdWJsaWMgU1ZHVHJhbnNmb3JtYWJsZQotICAgIHsKKworICAgIGNsYXNzIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsIHB1
YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpOwpAQCAtNzIsOSAr
NjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHTWF0
cml4PiBtX2xvY2FsTWF0cml4OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3Q+IG1fdHJhbnNmb3JtOwogICAgIH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gS1NWR19T
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNyArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAgICAgIG11
dGFibGUgYm9vbCBtX2luc2lkZVJlbmRlclNlY3Rpb247CiAgICAgfTsKLX07CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5kaWYKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0
Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQXR0YWNoQ2hpbGQoRWxlbWVudCAqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IH07Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgdXBkYXRlUmVmZXJlbmNlZFRleHQoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QgKmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKnN0eWxlKTsKICAgICAg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUgKmNoaWxkKSBjb25zdDsKICAg
ICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBP
UlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGVzdHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXN0cy5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1Rlc3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE4ICsyNiwx
MyBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewot
ICAgIGNsYXNzIFN0cmluZ0ltcGw7Ci0gICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwotfTsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKKyAgICBjbGFzcyBNYXBw
ZWRBdHRyaWJ1dGU7CisgICAgY2xhc3MgU3RyaW5nSW1wbDsKICAgICBjbGFzcyBTVkdTdHJpbmdM
aXN0OwogCi0gICAgY2xhc3MgU1ZHVGVzdHMKLSAgICB7CisgICAgY2xhc3MgU1ZHVGVzdHMgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVGVzdHMoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVGVz
dHMoKTsKQEAgLTU4LDkgKzUzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIG11dGFi
bGUgUmVmUHRyPFNWR1N0cmluZ0xpc3Q+IG1fZXh0ZW5zaW9uczsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8U1ZHU3RyaW5nTGlzdD4gbV9zeXN0ZW1MYW5ndWFnZTsKICAgICB9OwotfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2Vu
ZGlmIC8vIEtTVkdfU1ZHVGVzdHNJbXBsX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxl
IFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV90ZXh0TGVuZ3RoOwogICAgICAgICBtdXRhYmxl
IFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2xlbmd0aEFkanVzdDsKICAgICB9Owot
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDcgKzYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8
U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3Q+IG1fdHJhbnNmb3JtOwogICAgIH07Ci19OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCShyZXZpc2lvbiAx
NTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1fZHk7CiAgICAgICAgIG11
dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV9yb3RhdGU7CiAgICAgfTsKLX07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCShyZXZpc2lvbiAxNTY5MykK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmgJKHJldmlz
aW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQ
dHI8U1ZHTWF0cml4PiBtX21hdHJpeDsKICAgICB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDkgQEAKICNp
bmNsdWRlICJTVkdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCA6IHB1YmxpYyBTVkdMaXN0
PFNWR1RyYW5zZm9ybT4KLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBT
VkdUcmFuc2Zvcm1MaXN0IDogcHVibGljIFNWR0xpc3Q8U1ZHVHJhbnNmb3JtPiB7CiAgICAgcHVi
bGljOgogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNv
bnRleHQgPSAwKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtTGlzdCgpOwpAQCAtNDEs
OSArNDAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgLy8gSW50ZXJuYWwgdXNlIG9u
bHkKICAgICAgICAgU1ZHVHJhbnNmb3JtICpjb25jYXRlbmF0ZSgpIGNvbnN0OwogICAgIH07Ci19
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2Vu
ZGlmCisjZW5kaWYgLy8gS1NWR19TVkdUcmFuc2Zvcm1MaXN0SW1wbF9ICiAKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHJldmlzaW9uIDE1
NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwzNiArMjYsMzMgQEAKIAogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogCi1j
bGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBO
b2RlOworICAgIAorICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBBdG9taWNT
dHJpbmc7CiAgICAgY2xhc3MgQXR0cmlidXRlOwotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
KyAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDsKICAg
ICBjbGFzcyBTVkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFz
cyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q7Ci0gICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6
IHB1YmxpYyBTVkdMb2NhdGFibGUKLSAgICB7CisKKyAgICBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxl
IDogcHVibGljIFNWR0xvY2F0YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdUcmFuc2Zv
cm1hYmxlKCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFibGUoKTsKIAogICAgICAg
ICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0ICp0cmFuc2Zvcm0oKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgU1ZHTWF0cml4ICpsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKKyAgICAgICAg
dmlydHVhbCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkgY29uc3QgPSAwOwogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3Qg
KmxvY2FsVHJhbnNmb3JtcykgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9jYWxU
cmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdCopID0gMDsKICAgICAgICAgCi0gICAgICAgIHN0YXRp
YyB2b2lkIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3QgKmxpc3QsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGFyc2VU
cmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCosIGNvbnN0IEF0b21pY1N0cmluZyYg
dHJhbnNmb3JtKTsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZHVHJhbnNmb3JtYWJs
ZUltcGxfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdV
UklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdVUklSZWZl
cmVuY2UuaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdVUklSZWZl
cmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTcgKzI2LDEyIEBACiAKICNpbmNsdWRlICJE
ZXByZWNhdGVkU3RyaW5nLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgTWFw
cGVkQXR0cmlidXRlOwotfTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIFdlYkNv
cmUKLXsKKyAgICBjbGFzcyBNYXBwZWRBdHRyaWJ1dGU7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRT
dHJpbmc7CiAKLSAgICBjbGFzcyBTVkdVUklSZWZlcmVuY2UKLSAgICB7CisgICAgY2xhc3MgU1ZH
VVJJUmVmZXJlbmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSgpOwog
ICAgICAgICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKTsKQEAgLTUyLDkgKzQ3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZH
QW5pbWF0ZWRTdHJpbmc+IG1faHJlZjsKICAgICB9OwotfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2VuZGlmIC8vIEtTVkdfU1ZH
VVJJUmVmZXJlbmNlSW1wbF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRo
OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQ7CiAg
ICAgfTsKLX07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNpb24g
MTU2OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHU3RyaW5nTGlzdD4gbV92aWV3VGFyZ2V0OwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdab29tQW5kUGFuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5oCShyZXZpc2lvbiAxNTY5MykK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1pvb21BbmRQYW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MjQsMTUgKzI0LDExIEBACiAjZGVmaW5lIEtTVkdfU1ZHWm9vbUFuZFBhbkltcGxfSAogI2lmIFNW
R19TVVBQT1JUCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisK
ICAgICBjbGFzcyBNYXBwZWRBdHRyaWJ1dGU7Ci19OwogCi1uYW1lc3BhY2UgV2ViQ29yZQotewot
ICAgIGNsYXNzIFNWR1pvb21BbmRQYW4KLSAgICB7CisgICAgY2xhc3MgU1ZHWm9vbUFuZFBhbiB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdab29tQW5kUGFuKCk7CiAgICAgICAgIHZpcnR1YWwg
flNWR1pvb21BbmRQYW4oKTsKQEAgLTQ2LDkgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV96b29tQW5kUGFuOwogICAgIH07
Ci19OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAot
I2VuZGlmCisjZW5kaWYgLy8gS1NWR19TVkdab29tQW5kUGFuSW1wbF9ICiAKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL3N2Z3BhdGhwYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9zdmdwYXRocGFyc2VyLmgJKHJldmlzaW9uIDE1NjkzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvc3ZncGF0aHBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBjYWxjdWxhdGVBcmMoIGJvb2wgcmVsYXRpdmUsIGRvdWJsZSAmY3VyeCwgZG91YmxlICZjdXJ5
LCBkb3VibGUgYW5nbGUsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHIxLCBkb3VibGUgcjIs
IGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZyApOwogICAgIH07Ci19OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogI2VuZGlmCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUu
aAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsQmFyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgorI2luY2x1ZGUgIlNjcm9sbEJhci5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgog
I2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgSlNW
YWx1ZTsKQEAgLTg3LDExICs4NywxMCBAQCBlbnVtIE9iamVjdENvbnRlbnRUeXBlIHsKICAgICBP
YmplY3RDb250ZW50Tm9uZSwKICAgICBPYmplY3RDb250ZW50SW1hZ2UsCiAgICAgT2JqZWN0Q29u
dGVudEZyYW1lLAotICAgIE9iamVjdENvbnRlbnRQbHVnaW4sCisgICAgT2JqZWN0Q29udGVudFBs
dWdpbgogfTsKIAogY2xhc3MgRnJhbWUgOiBwdWJsaWMgU2hhcmVkPEZyYW1lPiwgTm9uY29weWFi
bGUgewotCiBwdWJsaWM6CiAgIGVudW0geyBOb1hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlv
biA9IElOVF9NSU4gfTsKIApAQCAtODE4LDYgKzgxNyw2IEBAIHB1YmxpYzoKICAgRnJhbWVQcml2
YXRlKiBkOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBGcmFtZV9ICkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0FmZmluZVRyYW5zZm9ybS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQWZmaW5lVHJhbnNmb3JtLmgJKHJldmlzaW9u
IDE1NjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9BZmZpbmVUcmFuc2Zvcm0uaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsOCArNzgsOCBAQCBwcml2YXRlOgogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1f
dHJhbnNmb3JtOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
X19BUFBMRV9fCiAKLSNlbmRpZgorI2VuZGlmIC8vIEFmZmluZVRyYW5zZm9ybV9oCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9Gb250Q2FjaGUuY3BwCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Rm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjAgKzI4LDIzIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKLSNpbmNsdWRlICJGb250UGxh
dGZvcm1EYXRhLmgiCisKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udEZhbGxiYWNr
TGlzdC5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTdHJpbmdI
YXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleQot
eworc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSB7CiAgICAgRm9udFBsYXRmb3JtRGF0
YUNhY2hlS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5ID0gQXRvbWljU3RyaW5nKCksIHVu
c2lnbmVkIHNpemUgPSAwLCBib29sIGJvbGQgPSBmYWxzZSwgYm9vbCBpdGFsaWMgPSBmYWxzZSkK
LSAgICA6bV9mYW1pbHkoZmFtaWx5KSwgbV9zaXplKHNpemUpLCBtX2JvbGQoYm9sZCksIG1faXRh
bGljKGl0YWxpYykKLSAgICB7fQorICAgICAgICA6IG1fZmFtaWx5KGZhbWlseSkKKyAgICAgICAg
LCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2JvbGQoYm9sZCkKKyAgICAgICAgLCBtX2l0YWxp
YyhpdGFsaWMpCisgICAgeworICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250
UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTIzOCw0ICsyNDEs
NCBAQCBjb25zdCBGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YShjCiAgICAgcmV0dXJu
IGdldENhY2hlZEZvbnREYXRhKHJlc3VsdCk7CiB9CiAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Zv
bnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ZvbnREYXRhLmNwcAko
cmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ZvbnREYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTggKzI4LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250RGF0YS5oIgogCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRm9udERhdGE6OkZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGYpCi06bV9m
b250KGYpLCBtX3RyZWF0QXNGaXhlZFBpdGNoKGZhbHNlKSwKLSBtX3NtYWxsQ2Fwc0ZvbnREYXRh
KDApCi0geyAgICAKLSAgICBtX2ZvbnQgPSBmOworICAgIDogbV9mb250KGYpCisgICAgLCBtX3Ry
ZWF0QXNGaXhlZFBpdGNoKGZhbHNlKQorICAgICwgbV9zbWFsbENhcHNGb250RGF0YSgwKQoreyAg
ICAKICAgICBwbGF0Zm9ybUluaXQoKTsKICAgICAKICAgICAvLyBOYXN0eSBoYWNrIHRvIGRldGVy
bWluZSBpZiB3ZSBzaG91bGQgcm91bmQgb3IgY2VpbCBzcGFjZSB3aWR0aHMuCkBAIC03Miw0ICs3
MSw0IEBAIGZsb2F0IEZvbnREYXRhOjp3aWR0aEZvckdseXBoKEdseXBoIGdseXAKICAgICByZXR1
cm4gd2lkdGg7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vRm9udERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ZvbnRE
YXRhLmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsOSBAQCBjbGFzcyBXaWR0aE1hcDsKIAogZW51bSBQ
aXRjaCB7IFVua25vd25QaXRjaCwgRml4ZWRQaXRjaCwgVmFyaWFibGVQaXRjaCB9OwogCi1jbGFz
cyBGb250RGF0YSA6IE5vbmNvcHlhYmxlCi17CitjbGFzcyBGb250RGF0YSA6IE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKLSAgICBGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmKTsKKyAg
ICBGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAgICAgfkZvbnREYXRhKCk7CiAK
IHB1YmxpYzoKQEAgLTExNyw2ICsxMTYsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRk9OVERBVEFfSApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9UZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9UZXh0Qm94LmgJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UZXh0
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVGV4dEJveCA6IHB1
YmxpYyBTY3JvbGxWaWV3IHsKICAgICB9IFdyYXBTdHlsZTsKIAogICAgIHR5cGVkZWYgZW51bSB7
Ci0gICAgICAgIFBsYWluVGV4dCwKKyAgICAgICAgUGxhaW5UZXh0CiAgICAgfSBUZXh0Rm9ybWF0
OwogCiAgICAgVGV4dEJveChXaWRnZXQqIHBhcmVudCk7CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNz
IFRleHRCb3ggOiBwdWJsaWMgU2Nyb2xsVmlldyB7CiAgICAgdm9pZCBzZXRMaW5lSGVpZ2h0KGlu
dCBsaW5lSGVpZ2h0KTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yUG9zaXRpb24oaW50LCBpbnQpOwot
ICAgIHZvaWQgZ2V0Q3Vyc29yUG9zaXRpb24oaW50ICosIGludCAqKSBjb25zdDsKKyAgICB2b2lk
IGdldEN1cnNvclBvc2l0aW9uKGludCosIGludCopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRGb250
KGNvbnN0IEZvbnQmKTsKIApAQCAtOTQsNiArOTQsNiBAQCBjbGFzcyBUZXh0Qm94IDogcHVibGlj
IFNjcm9sbFZpZXcgewogICAgIHZpcnR1YWwgYm9vbCBjaGVja3NEZXNjZW5kYW50c0ZvckZvY3Vz
KCkgY29uc3Q7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvKiBU
ZXh0Qm94X2ggKi8KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVk
ZSA8bWF0aC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMjU4LDcgKzI1OSw3IEBAIGlubGluZSB2b2lk
IFRpbWVyQmFzZTo6aGVhcFBvcCgpCiB7CiAgICAgLy8gVGVtcG9yYXJpbHkgZm9yY2UgdGhpcyB0
aW1lciB0byBoYXZlIHRoZSBtaW5pbXVtIGtleSBzbyB3ZSBjYW4gcG9wIGl0LgogICAgIGRvdWJs
ZSBmaXJlVGltZSA9IG1fbmV4dEZpcmVUaW1lOwotICAgIG1fbmV4dEZpcmVUaW1lID0gLUhVR0Vf
VkFMOworICAgIG1fbmV4dEZpcmVUaW1lID0gLW51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiAgICAgaGVhcFBvcE1pbigpOwogICAgIG1f
bmV4dEZpcmVUaW1lID0gZmlyZVRpbWU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250
Q2FjaGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udENhY2hl
TWFjLm1tCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRDYWNo
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUgKzI4LDE1IEBACiAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiRm9udENhY2hlLmgiCi0jaW1wb3J0ICJGb250UGxhdGZvcm1EYXRh
LmgiCisKICNpbXBvcnQgIkZvbnQuaCIKLSNpbXBvcnQgIldlYkZvbnRDYWNoZS5oIgotI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiRm9udFBsYXRmb3JtRGF0YS5o
IgogI2ltcG9ydCAiTGlzdEJveC5oIgogI2ltcG9ydCAiV2ViQ29yZVN0cmluZ1RydW5jYXRvci5o
IgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiV2ViRm9udENh
Y2hlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBib29sIGdldEFwcERlZmF1bHRWYWx1ZShDRlN0cmluZ1JlZiBrZXksIGludCAqdikKIHsK
QEAgLTIyMiw0ICsyMjIsNCBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ds
eXBoTWFwTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9HbHlwaE1h
cE1hYy5jcHAJKHJldmlzaW9uIDE1NjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvR2x5cGhN
YXBNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdseXBoTWFwLmgiCisKICNpbmNsdWRlICJGb250RGF0YS5o
IgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAotbmFtZXNwYWNlIFdlYkNv
cmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBHbHlwaE1hcDo6ZmlsbFBhZ2UoR2x5
cGhQYWdlKiBwYWdlLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0
IEZvbnREYXRhKiBmb250RGF0YSkKIHsKQEAgLTY1LDQgKzY1LDQgQEAgYm9vbCBHbHlwaE1hcDo6
ZmlsbFBhZ2UoR2x5cGhQYWdlKiBwYWdlLAogICAgIHJldHVybiB0cnVlOwogfQogCi19ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbQkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDExIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V2ViRm9udENhY2hlLmgiCiAKKyNpbXBvcnQgPG1hdGguaD4KKwogI2RlZmluZSBTWU5USEVTSVpF
RF9GT05UX1RSQUlUUyAoTlNCb2xkRm9udE1hc2sgfCBOU0l0YWxpY0ZvbnRNYXNrKQogCiAjZGVm
aW5lIElNUE9SVEFOVF9GT05UX1RSQUlUUyAoMCBcCkBAIC04Niw4ICs4OSw4IEBAIHN0YXRpYyBC
T09MIGJldHRlckNob2ljZShOU0ZvbnRUcmFpdE1hc2sKICAgICBpbnQgY2hvc2VuV2VpZ2h0RGVs
dGEgPSBjaG9zZW5XZWlnaHQgLSBkZXNpcmVkV2VpZ2h0OwogICAgIGludCBjYW5kaWRhdGVXZWln
aHREZWx0YSA9IGNhbmRpZGF0ZVdlaWdodCAtIGRlc2lyZWRXZWlnaHQ7CiAgICAgCi0gICAgaW50
IGNob3NlbldlaWdodERlbHRhTWFnbml0dWRlID0gQUJTKGNob3NlbldlaWdodERlbHRhKTsKLSAg
ICBpbnQgY2FuZGlkYXRlV2VpZ2h0RGVsdGFNYWduaXR1ZGUgPSBBQlMoY2FuZGlkYXRlV2VpZ2h0
RGVsdGEpOworICAgIGludCBjaG9zZW5XZWlnaHREZWx0YU1hZ25pdHVkZSA9IGFicyhjaG9zZW5X
ZWlnaHREZWx0YSk7CisgICAgaW50IGNhbmRpZGF0ZVdlaWdodERlbHRhTWFnbml0dWRlID0gYWJz
KGNhbmRpZGF0ZVdlaWdodERlbHRhKTsKICAgICAKICAgICAvLyBTbWFsbGVyIG1hZ25pdHVkZSB3
aW5zLgogICAgIC8vIElmIGJvdGggaGF2ZSBzYW1lIG1hZ25pdHVkZSwgdGllIGJyZWFrZXIgaXMg
dGhhdCB0aGUgc21hbGxlciB3ZWlnaHQgd2lucy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0Rl
cHJlY2F0ZWRSZW5kZXJTZWxlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L0RlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuY3BwCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL0RlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw4ICs1MSw3IEBAIERlcHJlY2F0ZWRSZW5kZXJTZWxlY3Q6OkRlcHJlY2F0ZWRSZW5kZXIKIAog
dm9pZCBEZXByZWNhdGVkUmVuZGVyU2VsZWN0OjpzZXRXaWRnZXRXcml0aW5nRGlyZWN0aW9uKCkK
IHsKLSAgICBUZXh0RGlyZWN0aW9uIGQgPSBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwgPyBS
VEwgOiBMVFI7Ci0gICAgc3RhdGljX2Nhc3Q8TGlzdEJveCo+KG1fd2lkZ2V0KS0+c2V0V3JpdGlu
Z0RpcmVjdGlvbihkKTsKKyAgICBzdGF0aWNfY2FzdDxMaXN0Qm94Kj4obV93aWRnZXQpLT5zZXRX
cml0aW5nRGlyZWN0aW9uKHN0eWxlKCktPmRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBEZXByZWNh
dGVkUmVuZGVyU2VsZWN0OjpzZXRTdHlsZShSZW5kZXJTdHlsZSogcykKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
RWxsaXBzaXNCb3guaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9FbGxp
cHNpc0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMiArMTksMTQgQEAKICAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKKyNpZm5kZWYgRWxsaXBzaXNCb3hfSAorI2RlZmlu
ZSBFbGxpcHNpc0JveF9ICisKICNpbmNsdWRlICJJbmxpbmVCb3guaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBFbGxpcHNpc0JveCA6IHB1YmxpYyBJbmxpbmVCb3gKLXsKK2NsYXNz
IEVsbGlwc2lzQm94IDogcHVibGljIElubGluZUJveCB7CiBwdWJsaWM6CiAgICAgRWxsaXBzaXNC
b3goUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIElu
bGluZUZsb3dCb3gqIHAsCiAgICAgICAgICAgICAgICAgaW50IHcsIGludCB5LCBpbnQgaCwgaW50
IGIsIGJvb2wgZmlyc3RMaW5lLCBJbmxpbmVCb3gqIG1hcmt1cEJveCkKQEAgLTQ5LDQgKzUxLDYg
QEAgcHJpdmF0ZToKICAgICBJbmxpbmVCb3gqIG1fbWFya3VwQm94OwogfTsKIAotfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVsbGlwc2lzQm94X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuaAkocmV2aXNpb24gMTU2OTMpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwzMiAr
MjQsMjkgQEAKIAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIGNsYXNzIFBvc2l0aW9uOwotfTsKLQogLyoKICAqIFRoZSB3aG9sZSBjbGFzcyBoZXJl
IGlzIGEgaGFjayB0byBnZXQgPGJyPiB3b3JraW5nLCBhcyBsb25nIGFzIHdlIGRvbid0IGhhdmUg
c3VwcG9ydCBmb3IKICAqIENTUzIgOmJlZm9yZSBhbmQgOmFmdGVyIHBzZXVkbyBlbGVtZW50cwog
ICovCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlckJSIDogcHVibGljIFJlbmRl
clRleHQKLXsKK2NsYXNzIFBvc2l0aW9uOworCitjbGFzcyBSZW5kZXJCUiA6IHB1YmxpYyBSZW5k
ZXJUZXh0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJCUihOb2RlKik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyQlIoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJCUiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAgCiAgICAgdmlydHVhbCBJbnRSZWN0IHNl
bGVjdGlvblJlY3QoKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIAotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IHdpZHRoKHVuc2lnbmVkIGludCBmcm9tLCB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCBG
b250ICpmLCBpbnQgeHBvcykgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IHdpZHRoKHVuc2lnbmVkIGludCBmcm9tLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgeHBv
cywgYm9vbCBmaXJzdExpbmUgPSBmYWxzZSkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgdW5zaWduZWQgd2lkdGgodW5zaWduZWQgLypmcm9tKi8sIHVuc2lnbmVkIC8qbGVuKi8sIGNv
bnN0IEZvbnQqLCBpbnQgLyp4cG9zKi8pIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIHdpZHRoKHVuc2lnbmVkIC8qZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBpbnQg
Lyp4cG9zKi8sIGJvb2wgLypmaXJzdExpbmUgPSBmYWxzZSovKSBjb25zdCB7IHJldHVybiAwOyB9
CiAKLSAgICB2aXJ0dWFsIHNob3J0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNS
b290TGluZUJveD1mYWxzZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBzaG9ydCBiYXNlbGluZVBvc2l0
aW9uKCBib29sIGZpcnN0TGluZSwgYm9vbCBpc1Jvb3RMaW5lQm94PWZhbHNlKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUmVuZGVyU3R5bGUqIF9zdHlsZSk7CisgICAgdmlydHVh
bCBzaG9ydCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVCb3ggPSBm
YWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBzaG9ydCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmly
c3RMaW5lLCBib29sIGlzUm9vdExpbmVCb3ggPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldFN0eWxlKFJlbmRlclN0eWxlKik7CiAKICAgICAvLyBvdmVycmlkZXMKICAgICB2aXJ0
dWFsIElubGluZUJveCogY3JlYXRlSW5saW5lQm94KGJvb2wsIGJvb2wsIGJvb2wgaXNPbmx5UnVu
ID0gZmFsc2UpOwpAQCAtNjIsMTMgKzU5LDEzIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSk7CiAK
LSAgICB2aXJ0dWFsIElubGluZUJveCAqaW5saW5lQm94KGludCBvZmZzZXQsIEVBZmZpbml0eSBh
ZmZpbml0eSA9IFVQU1RSRUFNKTsKKyAgICB2aXJ0dWFsIElubGluZUJveCogaW5saW5lQm94KGlu
dCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSA9IFVQU1RSRUFNKTsKICAgICAKIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBzaG9ydCBtX2xpbmVIZWlnaHQ7CiAKIH07CiAKLX0KK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gUkVOREVSX0JSX0gKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJvb3RJ
bmxpbmVCb3g7CiAKIGVudW0gQ2FyZXRUeXBlIHsKICAgICBDdXJzb3JDYXJldCwKLSAgICBEcmFn
Q2FyZXQsCisgICAgRHJhZ0NhcmV0CiB9OwogCiBjbGFzcyBSZW5kZXJCbG9jayA6IHB1YmxpYyBS
ZW5kZXJGbG93IHsKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKE5v
ZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCi0gICAgdmlydHVhbCBjb25zdCBj
aGFyICpyZW5kZXJOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVycmlkZGVu
IGZvciBpbmxpbmUtYmxvY2suCiAgICAgdmlydHVhbCBzaG9ydCBsaW5lSGVpZ2h0KGJvb2wgYiwg
Ym9vbCBpc1Jvb3RMaW5lQm94PWZhbHNlKSBjb25zdDsKQEAgLTExNyw5ICsxMTcsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7
CiAgICAgSW50UmVjdCBsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4p
OwogCi0gICAgdm9pZCBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyggYm9vbCByZWxheW91dENoaWxk
cmVuICk7Ci0gICAgdm9pZCBpbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCAqbyk7
Ci0gICAgdm9pZCByZW1vdmVQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCAqbyk7CisgICAg
dm9pZCBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pOworICAg
IHZvaWQgaW5zZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHJl
bW92ZVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVBvc2l0aW9uZWRPYmplY3RzKFJlbmRlckJsb2NrKik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cG9zaXRpb25MaXN0TWFya2VyKCkgeyB9CkBAIC0xMjgsOCArMTI4LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRMZWdlbmQoYm9vbCByZWxheW91dENoaWxkcmVu
KSB7IHJldHVybiAwOyB9OwogICAgIAogICAgIC8vIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9ucyBpcyBpbiBiaWRpLmNwcAotICAgIHZvaWQgYmlkaVJlb3JkZXJM
aW5lKGNvbnN0IEJpZGlJdGVyYXRvciYgc3RhcnQsIGNvbnN0IEJpZGlJdGVyYXRvciYgZW5kLCBC
aWRpU3RhdGUgJmJpZGkgKTsKLSAgICBSb290SW5saW5lQm94KiBkZXRlcm1pbmVTdGFydFBvc2l0
aW9uKGJvb2wgZnVsbExheW91dCwgQmlkaUl0ZXJhdG9yJiBzdGFydCwgQmlkaVN0YXRlICZiaWRp
KTsKKyAgICB2b2lkIGJpZGlSZW9yZGVyTGluZShjb25zdCBCaWRpSXRlcmF0b3ImIHN0YXJ0LCBj
b25zdCBCaWRpSXRlcmF0b3ImIGVuZCwgQmlkaVN0YXRlJiBiaWRpKTsKKyAgICBSb290SW5saW5l
Qm94KiBkZXRlcm1pbmVTdGFydFBvc2l0aW9uKGJvb2wgZnVsbExheW91dCwgQmlkaUl0ZXJhdG9y
JiBzdGFydCwgQmlkaVN0YXRlJiBiaWRpKTsKICAgICBSb290SW5saW5lQm94KiBkZXRlcm1pbmVF
bmRQb3NpdGlvbihSb290SW5saW5lQm94KiBzdGFydEJveCwgQmlkaUl0ZXJhdG9yJiBjbGVhbkxp
bmVTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpU3Rh
dHVzJiBjbGVhbkxpbmVCaWRpU3RhdHVzLCBCaWRpQ29udGV4dComIGNsZWFuTGluZUJpZGlDb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgeVBvcyk7
CkBAIC0xMzksOSArMTM5LDkgQEAgcHVibGljOgogICAgIGludCBza2lwV2hpdGVzcGFjZShCaWRp
SXRlcmF0b3ImICwgQmlkaVN0YXRlICYpOwogICAgIEJpZGlJdGVyYXRvciBmaW5kTmV4dExpbmVC
cmVhayhCaWRpSXRlcmF0b3ImIHN0YXJ0LCBCaWRpU3RhdGUgJmluZm8gKTsKICAgICBSb290SW5s
aW5lQm94KiBjb25zdHJ1Y3RMaW5lKGNvbnN0IEJpZGlJdGVyYXRvciYgc3RhcnQsIGNvbnN0IEJp
ZGlJdGVyYXRvciYgZW5kKTsKLSAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVu
ZGVyT2JqZWN0KiBvYmopOworICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5k
ZXJPYmplY3QqKTsKICAgICBpbnQgdGFiV2lkdGgoYm9vbCBpc1doaXRlc3BhY2VQcmUpOwotICAg
IHZvaWQgY29tcHV0ZUhvcml6b250YWxQb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxp
bmVCb3gsIEJpZGlTdGF0ZSAmYmlkaSk7CisgICAgdm9pZCBjb21wdXRlSG9yaXpvbnRhbFBvc2l0
aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwgQmlkaVN0YXRlJiBiaWRpKTsKICAg
ICB2b2lkIGNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGlu
ZUJveCk7CiAgICAgdm9pZCBjaGVja0xpbmVzRm9yT3ZlcmZsb3coKTsKICAgICB2b2lkIGRlbGV0
ZUVsbGlwc2lzTGluZUJveGVzKCk7CkBAIC00NDYsNiArNDQ2LDYgQEAgcHJvdGVjdGVkOgogICAg
IGludCBtX3RhYldpZHRoOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFJFTkRFUl9CTE9DS19ICisjZW5kaWYgLy8gUmVuZGVyQmxvY2tf
SApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAxNTY5
MykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDE1ICsyMCwxNCBAQAogICoKICAqLwogCi0jaWZuZGVmIFJFTkRFUl9GTEVYSUJM
RV9CT1hfSAotI2RlZmluZSBSRU5ERVJfRkxFWElCTEVfQk9YX0gKKyNpZm5kZWYgUmVuZGVyRmxl
eGlibGVCb3hfSAorI2RlZmluZSBSZW5kZXJGbGV4aWJsZUJveF9ICiAKICNpbmNsdWRlICJSZW5k
ZXJCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlckZsZXhpYmxl
Qm94IDogcHVibGljIFJlbmRlckJsb2NrCi17CitjbGFzcyBSZW5kZXJGbGV4aWJsZUJveCA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRmxleGlibGVCb3goTm9kZSop
OwogICAgIHZpcnR1YWwgflJlbmRlckZsZXhpYmxlQm94KCk7CkBAIC00NCwxMyArNDMsMTMgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpbmdDaGlsZHJlbigpIGNvbnN0IHsgcmV0
dXJuIG1fZmxleGluZ0NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3RyZXRjaGluZ0No
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9zdHJldGNoaW5nQ2hpbGRyZW47IH0KLSAgICAKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwogCiAgICAgdm9pZCBwbGFjZUNoaWxkKFJl
bmRlck9iamVjdCogY2hpbGQsIGludCB4LCBpbnQgeSk7CiAKIHByb3RlY3RlZDoKLSAgICBpbnQg
YWxsb3dlZENoaWxkRmxleChSZW5kZXJPYmplY3QqIGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5z
aWduZWQgaW50IGdyb3VwKTsKKyAgICBpbnQgYWxsb3dlZENoaWxkRmxleChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5zaWduZWQgZ3JvdXApOwogCiAgICAgYm9vbCBoYXNN
dWx0aXBsZUxpbmVzKCkgeyByZXR1cm4gc3R5bGUoKS0+Ym94TGluZXMoKSA9PSBNVUxUSVBMRTsg
fQogICAgIGJvb2wgaXNWZXJ0aWNhbCgpIHsgcmV0dXJuIHN0eWxlKCktPmJveE9yaWVudCgpID09
IFZFUlRJQ0FMOyB9CkBAIC02MCw5ICs1OSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fc3Ry
ZXRjaGluZ0NoaWxkcmVuIDogMTsKIH07CiAKLX07IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8g
UkVOREVSX0ZMRVhJQkxFX0JPWF9ICi0KLQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5k
aWYgLy8gUmVuZGVyRmxleGlibGVCb3hfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuaAkocmV2
aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDggKzIyLDggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBSRU5ERVJfRkxPV19I
Ci0jZGVmaW5lIFJFTkRFUl9GTE9XX0gKKyNpZm5kZWYgUmVuZGVyRmxvd19ICisjZGVmaW5lIFJl
bmRlckZsb3dfSAogCiAjaW5jbHVkZSAiUmVuZGVyQ29udGFpbmVyLmgiCiAKQEAgLTM4LDEyICsz
OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBiZWhhdmlvdXIgb2YgdGV4dCwgc28gcHV0
dGluZyB0aGUgbGF5b3V0aW5nIHJvdXRpbmVzIGluIHRoZSBpbmxpbmUKICAqIGVsZW1lbnRzIGlz
IGltcG9zc2libGUuCiAgKi8KLWNsYXNzIFJlbmRlckZsb3cgOiBwdWJsaWMgUmVuZGVyQ29udGFp
bmVyCi17CitjbGFzcyBSZW5kZXJGbG93IDogcHVibGljIFJlbmRlckNvbnRhaW5lciB7CiBwdWJs
aWM6CiAgICAgUmVuZGVyRmxvdyhOb2RlKiBub2RlKQotICAgICAgOiBSZW5kZXJDb250YWluZXIo
bm9kZSksIG1fbGluZUhlaWdodCgtMSkKLSAgICB7IG1fY29udGludWF0aW9uID0gMDsgbV9maXJz
dExpbmVCb3ggPSAwOyBtX2xhc3RMaW5lQm94ID0gMDt9CisgICAgICAgIDogUmVuZGVyQ29udGFp
bmVyKG5vZGUpCisgICAgICAgICwgbV9jb250aW51YXRpb24oMCkKKyAgICAgICAgLCBtX2ZpcnN0
TGluZUJveCgwKQorICAgICAgICAsIG1fbGFzdExpbmVCb3goMCkKKyAgICAgICAgLCBtX2xpbmVI
ZWlnaHQoLTEpCisgICAgeworICAgIH0KIAogICAgIHZpcnR1YWwgUmVuZGVyRmxvdyogY29udGlu
dWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250aW51YXRpb247IH0KICAgICB2b2lkIHNldENv
bnRpbnVhdGlvbihSZW5kZXJGbG93KiBjKSB7IG1fY29udGludWF0aW9uID0gYzsgfQpAQCAtMTAz
LDcgKzEwNyw2IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIHNob3J0IG1fbGluZUhlaWdodDsK
IH07CiAKLSAgICAKLX07IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZgorI2VuZGlmIC8vIFJlbmRlckZsb3dfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
LmNwcAkocmV2aXNpb24gMTU2OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDQgKzU2LDQgQEAgdm9pZCBSZW5kZXJGcmFtZTo6dmll
d0NsZWFyZWQoKQogICAgIH0KIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmgJKHJldmlzaW9uIDE1NjkzKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQg
dGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgICAgIHZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOwogCi1wcml2YXRlOgorICAgIHByaXZhdGU6CiAgICAg
ICAgIC8vIFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQuCiAgICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7CiAKLXB1YmxpYzoKKyAgICBwdWJsaWM6
CiAgICAgICAgIGludCBzdGFydDsKICAgICAgICAgaW50IHN0b3A7CiAKQEAgLTExNCw2ICsxMTQs
NiBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEJpZGlJdGVyYXRvcjsKICAgICBzdHJ1Y3QgQmlkaVN0
YXRlOwogCi19OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBC
SURJX0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAJKHJldmlzaW9uIDE1NjkzKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw0ICs3Miw0IEBAIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oY29uc3QgVUNoYXIqIHMKICAg
ICByZXR1cm4gaTsKIH0KIAotfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTU2
OTMpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMDYtMDctMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRw
Oi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgwCisgICAgICAg
ICAgQWRvcHQgcGVkYW50aWMgY2hhbmdlcyBmcm9tIHRoZSBVbml0eSBwcm9qZWN0IHRvIGltcHJv
dmUgCisgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgY29tcGF0aWJpbGl0eQorCisgICAgICAgICAg
Q2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAgICogQWRkaW5nIG1pc3NpbmcgbmV3bGluZSB0byB0
aGUgZW5kIG9mIHRoZSBmaWxlLgorICAgICAgICAgICogVHVybmluZyBvbiBnY2Mgd2FybmluZyBm
b3IgbWlzc2luZyBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBzb3VyY2UgZmlsZQorICAgICAgICAg
ICAgKEdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSBpbiBYY29kZSwgLVduZXdsaW5lIGlu
IGdjYykuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlUHJpdmF0ZS5oOgorCiAyMDA2LTA3LTI5ICBNaXR6
IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw2ICsxODcxLDcgQEAKIAkJCQlH
Q0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NU
QVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVT
VFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40OwpAQCAt
MTkxMCw2ICsxOTExLDcgQEAKIAkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVT
OwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklO
R1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9
IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJ
R0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKIAkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC40OwpAQCAtMTk0OSw2ICsxOTUxLDcgQEAKIAkJCQlHQ0NfUFJFQ09N
UElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBO
TzsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworCQkJCUdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CiAJCQkJR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9
IFlFUzsKIAkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYlJl
c291cmNlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlJlc291cmNl
UHJpdmF0ZS5oCShyZXZpc2lvbiAxNTY5MykKKysrIFdlYktpdC9XZWJWaWV3L1dlYlJlc291cmNl
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw0ICs1MCw0IEBACiAtIChOU1VSTFJlc3Bv
bnNlICopX3Jlc3BvbnNlOwogLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWU7CiAKLUBlbmQKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitAZW5kCg==
</data>
<flag name="review"
          id="2991"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>