<?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>92539</bug_id>
          
          <creation_ts>2012-07-27 12:53:17 -0700</creation_ts>
          <short_desc>Replace UnicodeWinCE with UnicodeWchar</short_desc>
          <delta_ts>2013-01-28 11:13:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47977</dependson>
          <blocked>108094</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>680997</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 12:53:17 -0700</bug_when>
    <thetext>Replace UnicodeWinCE with UnicodeWchar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681006</commentid>
    <comment_count>1</comment_count>
      <attachid>155032</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 13:04:12 -0700</bug_when>
    <thetext>Created attachment 155032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681021</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 13:13:04 -0700</bug_when>
    <thetext>Attachment 155032 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:25:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681024</commentid>
    <comment_count>3</comment_count>
      <attachid>155037</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 13:18:24 -0700</bug_when>
    <thetext>Created attachment 155037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681042</commentid>
    <comment_count>4</comment_count>
      <attachid>155040</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 13:44:28 -0700</bug_when>
    <thetext>Created attachment 155040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681143</commentid>
    <comment_count>5</comment_count>
      <attachid>155040</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 15:19:22 -0700</bug_when>
    <thetext>Comment on attachment 155040
Patch

Attachment 155040 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13377642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681154</commentid>
    <comment_count>6</comment_count>
      <attachid>155066</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 15:26:53 -0700</bug_when>
    <thetext>Created attachment 155066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681161</commentid>
    <comment_count>7</comment_count>
      <attachid>155066</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-27 15:34:42 -0700</bug_when>
    <thetext>Comment on attachment 155066
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681829</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-30 03:30:08 -0700</bug_when>
    <thetext>Committed r124010: &lt;http://trac.webkit.org/changeset/124010&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155032</attachid>
            <date>2012-07-27 13:04:12 -0700</date>
            <delta_ts>2012-07-27 13:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92539.patch</filename>
            <type>text/plain</type>
            <size>30828</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MTg5YjFlLi42YWRjY2I4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdpbkNFIG5ldmVyIGNv
bnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAgICAgICAgaXMgYSBy
ZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWluaW1hbCBVbmljb2Rl
IGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFzeSBhbmQgaGFzIG5v
IGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ0UuY21ha2U6CisKIDIwMTItMDctMjcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsu
cm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQg
ZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NTc1OTguLmNkMGZkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTEgQEAKKzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdp
bkNFIG5ldmVyIGNvbnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAg
ICAgICAgaXMgYSByZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0
aGUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWlu
aW1hbCBVbmljb2RlIGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFz
eSBhbmQgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFdURi5neXBp
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbkNF
LmNtYWtlOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VuaWNvZGUuaDoKKyAgICAgICAgKiB3dGYv
dW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVuaWNvZGUp
OgorICAgICAgICAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeSk6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OmNvbWJpbmluZ0NsYXNzKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlvblR5cGUpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjpoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KToKKyAgICAg
ICAgKFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6
Y29udmVydFdpdGhGdW5jdGlvbik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9Mb3dlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6
OnRvVXBwZXIpOgorICAgICAgICAqIHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBB
ZGRlZC4KKyAgICAgICAgKFVuaWNvZGUpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0FscGhh
bnVtZXJpYyk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzRGlnaXQpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjppc0xldHRlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzTG93ZXIpOgor
ICAgICAgICAoV1RGOjpVbmljb2RlOjppc1ByaW50YWJsZUNoYXIpOgorICAgICAgICAoV1RGOjpV
bmljb2RlOjppc1B1bmN0KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNTcGFjZSk6CisgICAg
ICAgIChXVEY6OlVuaWNvZGU6OmlzVXBwZXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0Fy
YWJpY0NoYXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKToKKyAg
ICAgICAgKFdURjo6VW5pY29kZTo6Zm9sZENhc2UpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjp0
b0xvd2VyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9VcHBlcik6CisgICAgICAgIChXVEY6
OlVuaWNvZGU6OnRvVGl0bGVDYXNlKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dW1lbWNhc2Vj
bXApOgorICAgICAgICAqIHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmg6IFJlbW92ZWQu
CisKIDIwMTItMDctMjYgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBjb25zdHJ1Y3RpbmcgVHlwZWRBcnJheSBmcm9tIGFub3RoZXIgVHlw
ZWRBcnJheSBpcyBzbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNl
L1dURi9XVEYuZ3lwaQppbmRleCBlYmI0MWE0Li4wYmIwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTIzMiw4ICsyMzIsOCBA
QAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaCcsCiAgICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2lu
Y2UvVW5pY29kZVdpbkNFLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2luY2UvVW5p
Y29kZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hh
ci5jcHAnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oJywK
ICAgICAgICAgICAgICd3dGYvd2luL01haW5UaHJlYWRXaW4uY3BwJywKICAgICAgICAgICAgICd3
dGYvd2luL093blB0cldpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi93aW5jZS9GYXN0TWFsbG9j
V2luQ0UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmOTljNGM4Li41MDcxMGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTUxNyw3ICs1MTcsNyBAQAogI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEKICNlbmRp
ZgogI2VsaWYgT1MoV0lOQ0UpCi0jZGVmaW5lIFdURl9VU0VfV0lOQ0VfVU5JQ09ERSAxCisjZGVm
aW5lIFdURl9VU0VfV0NIQVJfVU5JQ09ERSAxCiAjZWxpZiBQTEFURk9STShHVEspCiAvKiBUaGUg
R1RLKyBVbmljb2RlIGJhY2tlbmQgaXMgY29uZmlndXJhYmxlICovCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luQ0UuY21ha2UKaW5kZXggZDMwMjgyZi4uNjE0NmU2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbkNFLmNtYWtlCkBAIC0xLDggKzEsNyBAQAogTElTVChBUFBFTkQgV1RGX0hFQURFUlMK
LSAgICB1bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisgICAgdW5pY29kZS93Y2hhci9Vbmlj
b2RlV2NoYXIuaAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNvbXBhdC9jZV90aW1lLmgKLSAg
ICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUuaAogKQogCiBMSVNUKEFQUEVO
RCBXVEZfU09VUkNFUwpAQCAtMTQsMTMgKzEzLDEyIEBAIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgdGhyZWFkcy93aW4vQmluYXJ5U2VtYXBob3JlV2luLmNwcAogCiAgICAgdW5pY29kZS9D
b2xsYXRvckRlZmF1bHQuY3BwCi0gICAgdW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuY3BwCisg
ICAgdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCiAKICAgICB3aW4vTWFpblRocmVhZFdp
bi5jcHAKICAgICB3aW4vT3duUHRyV2luLmNwcAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNv
bXBhdC9jZV90aW1lLmMKLSAgICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUu
Y3BwCiApCiAKIExJU1QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvVW5pY29kZS5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2Rl
LmgKaW5kZXggY2M0NDQ3Ni4uOTI2MDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5p
Y29kZS9Vbmljb2RlLmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmgKQEAg
LTM0LDggKzM0LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIExDaGFyOwogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg+CiAjZWxpZiBVU0UoR0xJQl9VTklDT0RFKQogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaD4KLSNlbGlmIFVTRShXSU5DRV9V
TklDT0RFKQotI2luY2x1ZGUgPHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oPgorI2Vs
aWYgVVNFKFdDSEFSX1VOSUNPREUpCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmg+CiAjZWxzZQogI2Vycm9yICJVbmtub3duIFVuaWNvZGUgaW1wbGVtZW50YXRpb24i
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDE4YTdiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCkBA
IC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJVbmljb2RlV2NoYXIuaCIKKworI2luY2x1ZGUg
PGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgVW5pY29kZSB7CisKK0No
YXJDYXRlZ29yeSBjYXRlZ29yeShVQ2hhcjMyKQoreworICAgIHJldHVybiBOb0NhdGVnb3J5OyAv
LyBGSVhNRTogaW1wbGVtZW50IQorfQorCit1bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVD
aGFyMzIpCit7CisgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKK0RpcmVj
dGlvbiBkaXJlY3Rpb24oVUNoYXIpCit7CisgICAgcmV0dXJuIExlZnRUb1JpZ2h0OyAvLyBGSVhN
RTogaW1wbGVtZW50IQorfQorCitEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBvc2l0aW9uVHlwZShV
Q2hhcjMyKQoreworICAgIHJldHVybiBEZWNvbXBvc2l0aW9uTm9uZTsgLy8gRklYTUU6IGltcGxl
bWVudCEKK30KKworYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KFVD
aGFyMzIpCit7CisgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCitV
Q2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyIGMpCit7CisgICAgcmV0dXJuIGM7IC8vIEZJWE1F
OiBpbXBsZW1lbnQhCit9CisKK3RlbXBsYXRlPFVDaGFyIEZ1bmN0aW9uKFVDaGFyKT4KK3N0YXRp
YyBpbmxpbmUgaW50IGNvbnZlcnRXaXRoRnVuY3Rpb24oVUNoYXIqIHJlc3VsdCwgaW50IHJlc3Vs
dExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNF
cnJvcikKK3sKKyAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3IgPSByZXN1bHQ7CisgICAgVUNoYXIq
IHJlc3VsdEVuZCA9IHJlc3VsdCArIHN0ZDo6bWluKHJlc3VsdExlbmd0aCwgc291cmNlTGVuZ3Ro
KTsKKyAgICB3aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1bHRFbmQpCisgICAgICAgICpyZXN1
bHRJdGVyYXRvcisrID0gRnVuY3Rpb24oKnNvdXJjZSsrKTsKKworICAgIGlmIChzb3VyY2VMZW5n
dGggPCByZXN1bHRMZW5ndGgpCisgICAgICAgICpyZXN1bHRJdGVyYXRvciA9ICdcMCc7CisKKyAg
ICAqaXNFcnJvciA9IHNvdXJjZUxlbmd0aCA+IHJlc3VsdExlbmd0aDsKKyAgICByZXR1cm4gc291
cmNlTGVuZ3RoOworfQorCitpbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExl
bmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJv
cikKK3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjxmb2xkQ2FzZT4ocmVzdWx0LCBy
ZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKK30KKworaW50IHRv
TG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJj
ZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICByZXR1cm4gY29udmVy
dFdpdGhGdW5jdGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBzb3Vy
Y2VMZW5ndGgsIGlzRXJyb3IpOworfQorCitpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQg
cmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29s
KiBpc0Vycm9yKQoreworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHRvVXBwZXI+KHJl
c3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxlbmd0aCwgaXNFcnJvcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjk0ZWVlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Vu
aWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V1RGX1VuaWNvZGVXY2hhcl9oCisjZGVmaW5lIFdURl9Vbmljb2RlV2NoYXJfaAorCisjaW5jbHVk
ZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9TY3JpcHRDb2Rlc0Zyb21JQ1UuaD4K
KyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlTWFjcm9zRnJvbUlDVS5oPgorCit0eXBlZGVm
IHdjaGFyX3QgVUNoYXI7Cit0eXBlZGVmIHVuc2lnbmVkIFVDaGFyMzI7CisKK25hbWVzcGFjZSBX
VEYgeworbmFtZXNwYWNlIFVuaWNvZGUgeworCitlbnVtIERpcmVjdGlvbiB7CisgICAgTGVmdFRv
UmlnaHQsCisgICAgUmlnaHRUb0xlZnQsCisgICAgRXVyb3BlYW5OdW1iZXIsCisgICAgRXVyb3Bl
YW5OdW1iZXJTZXBhcmF0b3IsCisgICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yLAorICAgIEFy
YWJpY051bWJlciwKKyAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCisgICAgQmxvY2tTZXBhcmF0
b3IsCisgICAgU2VnbWVudFNlcGFyYXRvciwKKyAgICBXaGl0ZVNwYWNlTmV1dHJhbCwKKyAgICBP
dGhlck5ldXRyYWwsCisgICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCisgICAgTGVmdFRvUmlnaHRP
dmVycmlkZSwKKyAgICBSaWdodFRvTGVmdEFyYWJpYywKKyAgICBSaWdodFRvTGVmdEVtYmVkZGlu
ZywKKyAgICBSaWdodFRvTGVmdE92ZXJyaWRlLAorICAgIFBvcERpcmVjdGlvbmFsRm9ybWF0LAor
ICAgIE5vblNwYWNpbmdNYXJrLAorICAgIEJvdW5kYXJ5TmV1dHJhbAorfTsKKworZW51bSBEZWNv
bXBvc2l0aW9uVHlwZSB7CisgICAgRGVjb21wb3NpdGlvbk5vbmUsCisgICAgRGVjb21wb3NpdGlv
bkNhbm9uaWNhbCwKKyAgICBEZWNvbXBvc2l0aW9uQ29tcGF0LAorICAgIERlY29tcG9zaXRpb25D
aXJjbGUsCisgICAgRGVjb21wb3NpdGlvbkZpbmFsLAorICAgIERlY29tcG9zaXRpb25Gb250LAor
ICAgIERlY29tcG9zaXRpb25GcmFjdGlvbiwKKyAgICBEZWNvbXBvc2l0aW9uSW5pdGlhbCwKKyAg
ICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQsCisgICAgRGVjb21wb3NpdGlvbk1lZGlhbCwKKyAgICBE
ZWNvbXBvc2l0aW9uTmFycm93LAorICAgIERlY29tcG9zaXRpb25Ob0JyZWFrLAorICAgIERlY29t
cG9zaXRpb25TbWFsbCwKKyAgICBEZWNvbXBvc2l0aW9uU3F1YXJlLAorICAgIERlY29tcG9zaXRp
b25TdWIsCisgICAgRGVjb21wb3NpdGlvblN1cGVyLAorICAgIERlY29tcG9zaXRpb25WZXJ0aWNh
bCwKKyAgICBEZWNvbXBvc2l0aW9uV2lkZQorfTsKKworZW51bSBDaGFyQ2F0ZWdvcnkgeworICAg
IE5vQ2F0ZWdvcnkgPSAwLAorICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9NQVNLKDApLAorICAg
IExldHRlcl9VcHBlcmNhc2UgPSBVX01BU0soMSksCisgICAgTGV0dGVyX0xvd2VyY2FzZSA9IFVf
TUFTSygyKSwKKyAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVV9NQVNLKDMpLAorICAgIExldHRlcl9N
b2RpZmllciA9IFVfTUFTSyg0KSwKKyAgICBMZXR0ZXJfT3RoZXIgPSBVX01BU0soNSksCisKKyAg
ICBNYXJrX05vblNwYWNpbmcgPSBVX01BU0soNiksCisgICAgTWFya19FbmNsb3NpbmcgPSBVX01B
U0soNyksCisgICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVV9NQVNLKDgpLAorCisgICAgTnVt
YmVyX0RlY2ltYWxEaWdpdCA9IFVfTUFTSyg5KSwKKyAgICBOdW1iZXJfTGV0dGVyID0gVV9NQVNL
KDEwKSwKKyAgICBOdW1iZXJfT3RoZXIgPSBVX01BU0soMTEpLAorCisgICAgU2VwYXJhdG9yX1Nw
YWNlID0gVV9NQVNLKDEyKSwKKyAgICBTZXBhcmF0b3JfTGluZSA9IFVfTUFTSygxMyksCisgICAg
U2VwYXJhdG9yX1BhcmFncmFwaCA9IFVfTUFTSygxNCksCisKKyAgICBPdGhlcl9Db250cm9sID0g
VV9NQVNLKDE1KSwKKyAgICBPdGhlcl9Gb3JtYXQgPSBVX01BU0soMTYpLAorICAgIE90aGVyX1By
aXZhdGVVc2UgPSBVX01BU0soMTcpLAorICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFVfTUFTSygxOCks
CisKKyAgICBQdW5jdHVhdGlvbl9EYXNoID0gVV9NQVNLKDE5KSwKKyAgICBQdW5jdHVhdGlvbl9P
cGVuID0gVV9NQVNLKDIwKSwKKyAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFVfTUFTSygyMSksCisg
ICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVV9NQVNLKDIyKSwKKyAgICBQdW5jdHVhdGlvbl9P
dGhlciA9IFVfTUFTSygyMyksCisKKyAgICBTeW1ib2xfTWF0aCA9IFVfTUFTSygyNCksCisgICAg
U3ltYm9sX0N1cnJlbmN5ID0gVV9NQVNLKDI1KSwKKyAgICBTeW1ib2xfTW9kaWZpZXIgPSBVX01B
U0soMjYpLAorICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSygyNyksCisKKyAgICBQdW5jdHVhdGlv
bl9Jbml0aWFsUXVvdGUgPSBVX01BU0soMjgpLAorICAgIFB1bmN0dWF0aW9uX0ZpbmFsUXVvdGUg
PSBVX01BU0soMjkpCit9OworCisKK1dURl9FWFBPUlRfUFJJVkFURSBDaGFyQ2F0ZWdvcnkgY2F0
ZWdvcnkoVUNoYXIzMik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhciBjb21iaW5p
bmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBEaXJlY3Rpb24gZGlyZWN0aW9u
KFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklWQVRFIERlY29tcG9zaXRpb25UeXBlIGRlY29tcG9z
aXRpb25UeXBlKFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzTGluZUJyZWFr
aW5nUHJvcGVydHlDb21wbGV4Q29udGV4dChVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBV
Q2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyKTsKKworaW5saW5lIGJvb2wgaXNBbHBoYW51bWVy
aWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dhbG51bShjKTsgfQoraW5saW5lIGJvb2wgaXNEaWdp
dChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2RpZ2l0KGMpOyB9CitpbmxpbmUgYm9vbCBpc0xldHRl
cihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2FscGhhKGMpOyB9CitpbmxpbmUgYm9vbCBpc0xvd2Vy
KFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93ZXIoYyk7IH0KK2lubGluZSBib29sIGlzUHJpbnRh
YmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3ByaW50KGMpOyB9CitpbmxpbmUgYm9vbCBp
c1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3cHVuY3QoYyk7IH0KK2lubGluZSBib29sIGlz
U3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFpc3dzcGFjZShjKTsgfQoraW5saW5lIGJvb2wgaXNV
cHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3VwcGVyKGMpOyB9CisKK2lubGluZSBib29sIGlz
QXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNmZm
OyB9CitpbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyMzIgYykgeyByZXR1cm4gY2F0
ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9CisKK2lubGluZSBVQ2hhciBmb2xkQ2FzZShV
Q2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihjKTsgfQoraW5saW5lIFVDaGFyIHRvTG93ZXIoVUNo
YXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7IH0KK2lubGluZSBVQ2hhciB0b1VwcGVyKFVDaGFy
IGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9CitpbmxpbmUgVUNoYXIgdG9UaXRsZUNhc2UoVUNo
YXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7IH0KKworV1RGX0VYUE9SVF9QUklWQVRFIGludCBm
b2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291
cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hh
ciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25z
dCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKKworaW5s
aW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBs
ZW4pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBVQ2hh
ciBjMSA9IGZvbGRDYXNlKGFbaV0pOworICAgICAgICBVQ2hhciBjMiA9IGZvbGRDYXNlKGJbaV0p
OworICAgICAgICBpZiAoYzEgIT0gYzIpCisgICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgVW5pY29kZQorfSAvLyBu
YW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfVW5pY29kZVdjaGFyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTZkYWM3ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2Rl
L3dpbmNlL1VuaWNvZGVXaW5DRS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9y
Zz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3Au
Y29tPgotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVW5pY29kZVdpbkNFLmgiCi0K
LSNpbmNsdWRlIDx3Y2hhci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2Rl
IHsKLQotVUNoYXIgdG9Mb3dlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0b3dsb3dlcihjKTsK
LX0KLQotVUNoYXIgdG9VcHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsK
LX0KLQotVUNoYXIgZm9sZENhc2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gdG93bG93ZXIoYyk7
Ci19Ci0KLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3
cHJpbnQoYyk7Ci19Ci0KLWJvb2wgaXNTcGFjZShVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlz
d3NwYWNlKGMpOwotfQotCi1ib29sIGlzTGV0dGVyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEh
aXN3YWxwaGEoYyk7Ci19Ci0KLWJvb2wgaXNVcHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiAh
IWlzd3VwcGVyKGMpOwotfQotCi1ib29sIGlzTG93ZXIoVUNoYXIgYykKLXsKLSAgICByZXR1cm4g
ISFpc3dsb3dlcihjKTsKLX0KLQotYm9vbCBpc0RpZ2l0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJu
ICEhaXN3ZGlnaXQoYyk7Ci19Ci0KLWJvb2wgaXNQdW5jdChVQ2hhciBjKQotewotICAgIHJldHVy
biAhIWlzd3B1bmN0KGMpOwotfQotCi1ib29sIGlzQWxwaGFudW1lcmljKFVDaGFyIGMpCi17Ci0g
ICAgcmV0dXJuICEhaXN3YWxudW0oYyk7Ci19Ci0KLWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQs
IGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgs
IGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgY29uc3QgVUNoYXIqIHNvdXJjZUl0ZXJhdG9yID0gc291
cmNlOwotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQgPSBzb3VyY2UgKyBzb3VyY2VMZW5ndGg7
Ci0gICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9yID0gcmVzdWx0OwotICAgIFVDaGFyKiByZXN1bHRF
bmQgPSByZXN1bHQgKyByZXN1bHRMZW5ndGg7Ci0KLSAgICBpbnQgcmVtYWluaW5nQ2hhcmFjdGVy
cyA9IDA7Ci0gICAgaWYgKHNvdXJjZUxlbmd0aCA8PSByZXN1bHRMZW5ndGgpCi0gICAgICAgIHdo
aWxlIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVy
YXRvcisrID0gdG93bG93ZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotICAgIGVsc2UKLSAgICAgICAg
d2hpbGUgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAgICAgKnJlc3VsdEl0
ZXJhdG9yKysgPSB0b3dsb3dlcigqc291cmNlSXRlcmF0b3IrKyk7Ci0KLSAgICBpZiAoc291cmNl
SXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgIHJlbWFpbmluZ0NoYXJhY3RlcnMgKz0gc291
cmNlRW5kIC0gc291cmNlSXRlcmF0b3I7Ci0gICAgKmlzRXJyb3IgPSAhIXJlbWFpbmluZ0NoYXJh
Y3RlcnM7Ci0gICAgaWYgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAqcmVz
dWx0SXRlcmF0b3IgPSAwOwotCi0gICAgcmV0dXJuIChyZXN1bHRJdGVyYXRvciAtIHJlc3VsdCkg
KyByZW1haW5pbmdDaGFyYWN0ZXJzOwotfQotCi1pbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBp
bnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBi
b29sKiBpc0Vycm9yKQotewotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VJdGVyYXRvciA9IHNvdXJj
ZTsKLSAgICBjb25zdCBVQ2hhciogc291cmNlRW5kID0gc291cmNlICsgc291cmNlTGVuZ3RoOwot
ICAgIFVDaGFyKiByZXN1bHRJdGVyYXRvciA9IHJlc3VsdDsKLSAgICBVQ2hhciogcmVzdWx0RW5k
ID0gcmVzdWx0ICsgcmVzdWx0TGVuZ3RoOwotCi0gICAgaW50IHJlbWFpbmluZ0NoYXJhY3RlcnMg
PSAwOwotICAgIGlmIChzb3VyY2VMZW5ndGggPD0gcmVzdWx0TGVuZ3RoKQotICAgICAgICB3aGls
ZSAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgICAgICAqcmVzdWx0SXRlcmF0
b3IrKyA9IHRvd3VwcGVyKCpzb3VyY2VJdGVyYXRvcisrKTsKLSAgICBlbHNlCi0gICAgICAgIHdo
aWxlIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVy
YXRvcisrID0gdG93dXBwZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotCi0gICAgaWYgKHNvdXJjZUl0
ZXJhdG9yIDwgc291cmNlRW5kKQotICAgICAgICByZW1haW5pbmdDaGFyYWN0ZXJzICs9IHNvdXJj
ZUVuZCAtIHNvdXJjZUl0ZXJhdG9yOwotICAgICppc0Vycm9yID0gISFyZW1haW5pbmdDaGFyYWN0
ZXJzOwotICAgIGlmIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgKnJlc3Vs
dEl0ZXJhdG9yID0gMDsKLQotICAgIHJldHVybiAocmVzdWx0SXRlcmF0b3IgLSByZXN1bHQpICsg
cmVtYWluaW5nQ2hhcmFjdGVyczsKLX0KLQotaW50IGZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGlu
dCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJv
b2wqIGlzRXJyb3IpCi17Ci0gICAgKmlzRXJyb3IgPSBmYWxzZTsKLSAgICBpZiAocmVzdWx0TGVu
Z3RoIDwgc291cmNlTGVuZ3RoKSB7Ci0gICAgICAgICppc0Vycm9yID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuIHNvdXJjZUxlbmd0aDsKLSAgICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3Vy
Y2VMZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gZm9sZENhc2Uoc291cmNlW2ldKTsK
LSAgICByZXR1cm4gc291cmNlTGVuZ3RoOwotfQotCi1VQ2hhciB0b1RpdGxlQ2FzZShVQ2hhciBj
KQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotRGlyZWN0aW9uIGRpcmVjdGlvbihV
Q2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERpcmVjdGlvbj4oVW5pY29kZUNF
OjpkaXJlY3Rpb24oYykpOwotfQotCi1DaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkodW5zaWduZWQgaW50
IGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJDYXRlZ29yeT4oVE9fTUFTSygoX19p
bnQ4KSBVbmljb2RlQ0U6OmNhdGVnb3J5KGMpKSk7Ci19Ci0KLURlY29tcG9zaXRpb25UeXBlIGRl
Y29tcG9zaXRpb25UeXBlKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVj
b21wb3NpdGlvblR5cGU+KFVuaWNvZGVDRTo6ZGVjb21wb3NpdGlvblR5cGUoYykpOwotfQotCi11
bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5p
Y29kZUNFOjpjb21iaW5pbmdDbGFzcyhjKTsKLX0KLQotVUNoYXIgbWlycm9yZWRDaGFyKFVDaGFy
MzIgYykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjptaXJyb3JlZENoYXIoYyk7Ci19Ci0KLWlu
dCBkaWdpdFZhbHVlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFVuaWNvZGVDRTo6ZGlnaXRWYWx1
ZShjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTY2M2ZjOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91
bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtk
ZS5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQG55
cG9wLmNvbT4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2Jp
bGUsIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgV1RGX1VuaWNvZGVXaW5DRV9oCi0jZGVm
aW5lIFdURl9Vbmljb2RlV2luQ0VfaAotCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvU2NyaXB0Q29k
ZXNGcm9tSUNVLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZU1hY3Jvc0Zyb21JQ1Uu
aD4KLQotI2luY2x1ZGUgImNlX3VuaWNvZGUuaCIKLQotI2RlZmluZSBUT19NQVNLKHgpICgxIDw8
ICh4KSkKLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVudW0gRGly
ZWN0aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFVuaWNvZGVDRTo6VV9MRUZUX1RPX1JJR0hULAot
ICAgIFJpZ2h0VG9MZWZ0ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlQsCi0gICAgRXVyb3Bl
YW5OdW1iZXIgPSBVbmljb2RlQ0U6OlVfRVVST1BFQU5fTlVNQkVSLAotICAgIEV1cm9wZWFuTnVt
YmVyU2VwYXJhdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IsCi0g
ICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJF
Ul9URVJNSU5BVE9SLAotICAgIEFyYWJpY051bWJlciA9IFVuaWNvZGVDRTo6VV9BUkFCSUNfTlVN
QkVSLAotICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9DT01NT05fTlVN
QkVSX1NFUEFSQVRPUiwKLSAgICBCbG9ja1NlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9CTE9DS19T
RVBBUkFUT1IsCi0gICAgU2VnbWVudFNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9TRUdNRU5UX1NF
UEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9XSElURV9TUEFD
RV9ORVVUUkFMLAotICAgIE90aGVyTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9PVEhFUl9ORVVUUkFM
LAotICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVW5pY29kZUNFOjpVX0xFRlRfVE9fUklHSFRf
RU1CRURESU5HLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVbmljb2RlQ0U6OlVfTEVGVF9U
T19SSUdIVF9PVkVSUklERSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYyA9IFVuaWNvZGVDRTo6VV9S
SUdIVF9UT19MRUZUX0FSQUJJQywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9IFVuaWNvZGVD
RTo6VV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlID0g
VW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUsCi0gICAgUG9wRGlyZWN0aW9uYWxG
b3JtYXQgPSBVbmljb2RlQ0U6OlVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwKLSAgICBOb25TcGFj
aW5nTWFyayA9IFVuaWNvZGVDRTo6VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKLSAgICBCb3VuZGFy
eU5ldXRyYWwgPSBVbmljb2RlQ0U6OlVfQk9VTkRBUllfTkVVVFJBTAotfTsKLQotZW51bSBEZWNv
bXBvc2l0aW9uVHlwZSB7Ci0gICAgRGVjb21wb3NpdGlvbk5vbmUgPSBVbmljb2RlQ0U6OlVfRFRf
Tk9ORSwKLSAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0gVW5pY29kZUNFOjpVX0RUX0NBTk9O
SUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVW5pY29kZUNFOjpVX0RUX0NPTVBBVCwK
LSAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlID0gVW5pY29kZUNFOjpVX0RUX0NJUkNMRSwKLSAgICBE
ZWNvbXBvc2l0aW9uRmluYWwgPSBVbmljb2RlQ0U6OlVfRFRfRklOQUwsCi0gICAgRGVjb21wb3Np
dGlvbkZvbnQgPSBVbmljb2RlQ0U6OlVfRFRfRk9OVCwKLSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rp
b24gPSBVbmljb2RlQ0U6OlVfRFRfRlJBQ1RJT04sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwg
PSBVbmljb2RlQ0U6OlVfRFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBV
bmljb2RlQ0U6OlVfRFRfSVNPTEFURUQsCi0gICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IFVuaWNv
ZGVDRTo6VV9EVF9NRURJQUwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFVuaWNvZGVDRTo6
VV9EVF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVbmljb2RlQ0U6OlVfRFRf
Tk9CUkVBSywKLSAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBVbmljb2RlQ0U6OlVfRFRfU01BTEws
Ci0gICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFVuaWNvZGVDRTo6VV9EVF9TUVVBUkUsCi0gICAg
RGVjb21wb3NpdGlvblN1YiA9IFVuaWNvZGVDRTo6VV9EVF9TVUIsCi0gICAgRGVjb21wb3NpdGlv
blN1cGVyID0gVW5pY29kZUNFOjpVX0RUX1NVUEVSLAotICAgIERlY29tcG9zaXRpb25WZXJ0aWNh
bCA9IFVuaWNvZGVDRTo6VV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uV2lkZSA9IFVu
aWNvZGVDRTo6VV9EVF9XSURFCi19OwotCi1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRl
Z29yeSA9ICAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
R0VORVJBTF9PVEhFUl9UWVBFUyksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFRPX01BU0soVW5p
Y29kZUNFOjpVX1VQUEVSQ0FTRV9MRVRURVIpLAotICAgIExldHRlcl9Mb3dlcmNhc2UgPSBUT19N
QVNLKFVuaWNvZGVDRTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJfVGl0bGVjYXNl
ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfVElUTEVDQVNFX0xFVFRFUiksCi0gICAgTGV0dGVyX01v
ZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfTEVUVEVSKSwKLSAgICBMZXR0
ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9MRVRURVIpLAotCi0gICAgTWFy
a19Ob25TcGFjaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTk9OX1NQQUNJTkdfTUFSSyksCi0g
ICAgTWFya19FbmNsb3NpbmcgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkNMT1NJTkdfTUFSSyks
Ci0gICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09NQklO
SU5HX1NQQUNJTkdfTUFSSyksCi0KLSAgICBOdW1iZXJfRGVjaW1hbERpZ2l0ID0gVE9fTUFTSyhV
bmljb2RlQ0U6OlVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAotICAgIE51bWJlcl9MZXR0ZXIgPSBU
T19NQVNLKFVuaWNvZGVDRTo6VV9MRVRURVJfTlVNQkVSKSwKLSAgICBOdW1iZXJfT3RoZXIgPSBU
T19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9OVU1CRVIpLAotCi0gICAgU2VwYXJhdG9yX1NwYWNl
ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfU1BBQ0VfU0VQQVJBVE9SKSwKLSAgICBTZXBhcmF0b3Jf
TGluZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0xJTkVfU0VQQVJBVE9SKSwKLSAgICBTZXBhcmF0
b3JfUGFyYWdyYXBoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfUEFSQUdSQVBIX1NFUEFSQVRPUiks
Ci0KLSAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OVFJPTF9DSEFS
KSwKLSAgICBPdGhlcl9Gb3JtYXQgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9GT1JNQVRfQ0hBUiks
Ci0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1BSSVZBVEVfVVNF
X0NIQVIpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NVUlJP
R0FURSksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfREFT
SF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFRPX01BU0soVW5pY29kZUNF
OjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFRPX01BU0so
VW5pY29kZUNFOjpVX0VORF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fQ29ubmVjdG9y
ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5j
dHVhdGlvbl9PdGhlciA9IFRPX01BU0soVW5pY29kZUNFOjpVX09USEVSX1BVTkNUVUFUSU9OKSwK
LQotICAgIFN5bWJvbF9NYXRoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTUFUSF9TWU1CT0wpLAot
ICAgIFN5bWJvbF9DdXJyZW5jeSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NVUlJFTkNZX1NZTUJP
TCksCi0gICAgU3ltYm9sX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJf
U1lNQk9MKSwKLSAgICBTeW1ib2xfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9T
WU1CT0wpLAotCi0gICAgUHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlID0gVE9fTUFTSyhVbmljb2Rl
Q0U6OlVfSU5JVElBTF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSA9
IFRPX01BU0soVW5pY29kZUNFOjpVX0ZJTkFMX1BVTkNUVUFUSU9OKQotfTsKLQotQ2hhckNhdGVn
b3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCk7Ci0KLWJvb2wgaXNTcGFjZShVQ2hhcik7Ci1ib29s
IGlzTGV0dGVyKFVDaGFyKTsKLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyKTsKLWJvb2wgaXNV
cHBlcihVQ2hhcik7Ci1ib29sIGlzTG93ZXIoVUNoYXIpOwotYm9vbCBpc1B1bmN0KFVDaGFyKTsK
LWJvb2wgaXNEaWdpdChVQ2hhcik7Ci1ib29sIGlzQWxwaGFudW1lcmljKFVDaGFyKTsKLWlubGlu
ZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0g
U2VwYXJhdG9yX1NwYWNlOyB9Ci1pbmxpbmUgYm9vbCBpc0hpZ2hTdXJyb2dhdGUoVUNoYXIgYykg
eyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZDgwMDsgfQotaW5saW5lIGJvb2wgaXNMb3dTdXJy
b2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZGMwMDsgfQotCi1VQ2hh
ciB0b0xvd2VyKFVDaGFyKTsKLVVDaGFyIHRvVXBwZXIoVUNoYXIpOwotVUNoYXIgZm9sZENhc2Uo
VUNoYXIpOwotVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIpOwotaW50IHRvTG93ZXIoVUNoYXIqIHJl
c3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxl
bmd0aCwgYm9vbCogaXNFcnJvcik7Ci1pbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVz
dWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBp
c0Vycm9yKTsKLWludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBj
b25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLQot
aW50IGRpZ2l0VmFsdWUoVUNoYXIpOwotCi1VQ2hhciBtaXJyb3JlZENoYXIoVUNoYXIzMik7Ci11
bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpOwotRGVjb21wb3NpdGlvblR5cGUg
ZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMik7Ci1EaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIp
OwotaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gYyA+
PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Ci19Ci0KLWlubGluZSBib29sIGhhc0xpbmVCcmVha2lu
Z1Byb3BlcnR5Q29tcGxleENvbnRleHQoVUNoYXIzMikKLXsKLSAgICByZXR1cm4gZmFsc2U7IC8v
IEZJWE1FOiBpbXBsZW1lbnQhCi19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYzEgPSBmb2xkQ2FzZShhW2ldKTsKLSAgICAg
ICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKLSAgICAgICAgaWYgKGMxICE9IGMyKQotICAg
ICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1pbmxp
bmUgVUNoYXIzMiBzdXJyb2dhdGVUb1VjczQoVUNoYXIgaGlnaCwgVUNoYXIgbG93KQotewotICAg
IHJldHVybiAoVUNoYXIzMihoaWdoKSA8PCAxMCkgKyBsb3cgLSAweDM1ZmRjMDA7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gV1RG
X1VuaWNvZGVXaW5DRV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjODQzNi4uZjQxMDk0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNFIHdpdGggVW5pY29k
ZVdjaGFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVu
aWNvZGVXaW5DRSBuZXZlciBjb250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29kZS4gVW5pY29kZVdj
aGFyCisgICAgICAgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBpcyBtYWlubHkgYmFz
ZWQgb24gdGhlIGZ1bmN0aW9ucworICAgICAgICBmcm9tIDx3Y2hhci5oPi4gSXQgaXMgbWVudCBh
cyBhIG1pbmltYWwgVW5pY29kZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBjYW4gYmUgdXNlZCB2
ZXJ5IGVhc3kgYW5kIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RW5j
b2Rpbmc6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRUZXh0Q29kZWNNYXBzKToKKwogMjAx
Mi0wNy0yNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjM4NTYpOiBCcmVha3MgdGhlIGJ1aWxkIHdoZW4g
ZGlzYWJsaW5nIGluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmcuY3BwCmluZGV4IGUzZDM3MmEuLjJlOTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBDU3Ry
aW5nIFRleHRFbmNvZGluZzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoLCBVbmVuY29kYWJsZQogICAgIFVURjE2Tm9ybWFsaXplZC5zZXQoZ191dGY4X3RvX3V0
ZjE2KFVURjhOb3JtYWxpemVkLmdldCgpLCAtMSwgMCwgJlVURjE2TGVuZ3RoLCAwKSk7CiAKICAg
ICByZXR1cm4gbmV3VGV4dENvZGVjKCp0aGlzKS0+ZW5jb2RlKFVURjE2Tm9ybWFsaXplZC5nZXQo
KSwgVVRGMTZMZW5ndGgsIGhhbmRsaW5nKTsKLSNlbGlmIFVTRShXSU5DRV9VTklDT0RFKQorI2Vs
aWYgT1MoV0lORE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgLy8gbm9ybWFsaXphdGlv
biB3aWxsIGJlIGRvbmUgYnkgV2luZG93cyBDRSBBUEkKICAgICBPd25QdHI8VGV4dENvZGVjPiB0
ZXh0Q29kZWMgPSBuZXdUZXh0Q29kZWMoKnRoaXMpOwogICAgIHJldHVybiB0ZXh0Q29kZWMuZ2V0
KCkgPyB0ZXh0Q29kZWMtPmVuY29kZShjaGFyYWN0ZXJzLCBsZW5ndGgsIGhhbmRsaW5nKSA6IENT
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggYmQ4YjdhNS4uNDc2M2JmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAKICNpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgImd0ay9UZXh0
Q29kZWNHdGsuaCIKICNlbmRpZgotI2lmIFVTRShXSU5DRV9VTklDT0RFKQorI2lmIE9TKFdJTkRP
V1MpICYmIFVTRShXQ0hBUl9VTklDT0RFKQogI2luY2x1ZGUgIndpbi9UZXh0Q29kZWNXaW4uaCIK
ICNlbmRpZgogCkBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVj
TWFwcygpCiAgICAgVGV4dENvZGVjR3RrOjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKGFkZFRvVGV4
dENvZGVjTWFwKTsKICNlbmRpZgogCi0jaWYgVVNFKFdJTkNFX1VOSUNPREUpCisjaWYgT1MoV0lO
RE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgVGV4dENvZGVjV2luOjpyZWdpc3RlckV4
dGVuZGVkRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRD
b2RlY1dpbjo6cmVnaXN0ZXJFeHRlbmRlZENvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDUwMjQ5OTIuLjViOTcyYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTI3
ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxh
Y2UgVW5pY29kZVdpbkNFIHdpdGggVW5pY29kZVdjaGFyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZlciBjb250YWluZWQgV2lu
Q0Ugc3BlY2lmaWMgY29kZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlzIGEgcmVwbGFjZW1lbnQg
Zm9yIGl0LCB3aGljaCBpcyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0aW9ucworICAgICAgICBm
cm9tIDx3Y2hhci5oPi4gSXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5pY29kZSBiYWNrZW5kLCB3
aGljaAorICAgICAgICBjYW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhhcyBubyBleHRlcm5hbCBk
ZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0
dXJlcy5pbjoKKwogMjAxMi0wNy0yNiAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkBy
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1vdmUgc3luY2hyb25vdXMgc3BlbGxj
aGVja2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4KaW5kZXggNjZmOTU3NS4u
ZWU2YTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbgpAQCAtMTExLDcgKzExMSw3
IEBAIFdFQkFVRElPX0lQUAogV0VCQVVESU9fTUtMCiBXRUJLSVRfSU1BR0VfREVDT0RFUlMKIFdF
QlAKLVdJTkNFX1VOSUNPREUKK1dDSEFSX1VOSUNPREUKIFdJTklORVQKIFdLX1NDUk9MTEJBUl9Q
QUlOVEVSCiBXVEZVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21h
a2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNFLmNtYWtlCmluZGV4IDI3MGYwMDMuLmM4ZmY4
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXaW5DRS5jbWFrZQpAQCAtMSw3ICsxLDcgQEAKIElOQ0xVREUoT3B0
aW9uc1dpbmRvd3MpCiAKIEFERF9ERUZJTklUSU9OUygtRF9DRV9DUlRfQUxMT1dfV0lOX01JTk1B
WCkKLUFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfV0lOQ0VfVU5JQ09ERT0xKQorQUREX0RFRklO
SVRJT05TKC1EV1RGX1VTRV9XQ0hBUl9VTklDT0RFPTEpCiBBRERfREVGSU5JVElPTlMoLURXVEZf
VVNFX1dJTklORVQ9MSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9DUFVfQVJNX1RSQURJVElPTkFM
IC1EV0lOQ0VCQVNJQykKIEFERF9ERUZJTklUSU9OUygtREpTX05PX0VYUE9SVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155037</attachid>
            <date>2012-07-27 13:18:24 -0700</date>
            <delta_ts>2012-07-27 13:44:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92539.patch</filename>
            <type>text/plain</type>
            <size>30849</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MTg5YjFlLi42YWRjY2I4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdpbkNFIG5ldmVyIGNv
bnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAgICAgICAgaXMgYSBy
ZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWluaW1hbCBVbmljb2Rl
IGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFzeSBhbmQgaGFzIG5v
IGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ0UuY21ha2U6CisKIDIwMTItMDctMjcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsu
cm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQg
ZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NTc1OTguLmNkMGZkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTEgQEAKKzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdp
bkNFIG5ldmVyIGNvbnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAg
ICAgICAgaXMgYSByZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0
aGUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWlu
aW1hbCBVbmljb2RlIGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFz
eSBhbmQgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFdURi5neXBp
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbkNF
LmNtYWtlOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VuaWNvZGUuaDoKKyAgICAgICAgKiB3dGYv
dW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVuaWNvZGUp
OgorICAgICAgICAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeSk6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OmNvbWJpbmluZ0NsYXNzKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlvblR5cGUpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjpoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KToKKyAgICAg
ICAgKFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6
Y29udmVydFdpdGhGdW5jdGlvbik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9Mb3dlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6
OnRvVXBwZXIpOgorICAgICAgICAqIHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBB
ZGRlZC4KKyAgICAgICAgKFVuaWNvZGUpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0FscGhh
bnVtZXJpYyk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzRGlnaXQpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjppc0xldHRlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzTG93ZXIpOgor
ICAgICAgICAoV1RGOjpVbmljb2RlOjppc1ByaW50YWJsZUNoYXIpOgorICAgICAgICAoV1RGOjpV
bmljb2RlOjppc1B1bmN0KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNTcGFjZSk6CisgICAg
ICAgIChXVEY6OlVuaWNvZGU6OmlzVXBwZXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0Fy
YWJpY0NoYXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKToKKyAg
ICAgICAgKFdURjo6VW5pY29kZTo6Zm9sZENhc2UpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjp0
b0xvd2VyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9VcHBlcik6CisgICAgICAgIChXVEY6
OlVuaWNvZGU6OnRvVGl0bGVDYXNlKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dW1lbWNhc2Vj
bXApOgorICAgICAgICAqIHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmg6IFJlbW92ZWQu
CisKIDIwMTItMDctMjYgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBjb25zdHJ1Y3RpbmcgVHlwZWRBcnJheSBmcm9tIGFub3RoZXIgVHlw
ZWRBcnJheSBpcyBzbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNl
L1dURi9XVEYuZ3lwaQppbmRleCBlYmI0MWE0Li4wYmIwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTIzMiw4ICsyMzIsOCBA
QAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaCcsCiAgICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2lu
Y2UvVW5pY29kZVdpbkNFLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2luY2UvVW5p
Y29kZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hh
ci5jcHAnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oJywK
ICAgICAgICAgICAgICd3dGYvd2luL01haW5UaHJlYWRXaW4uY3BwJywKICAgICAgICAgICAgICd3
dGYvd2luL093blB0cldpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi93aW5jZS9GYXN0TWFsbG9j
V2luQ0UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmOTljNGM4Li41MDcxMGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTUxNyw3ICs1MTcsNyBAQAogI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEKICNlbmRp
ZgogI2VsaWYgT1MoV0lOQ0UpCi0jZGVmaW5lIFdURl9VU0VfV0lOQ0VfVU5JQ09ERSAxCisjZGVm
aW5lIFdURl9VU0VfV0NIQVJfVU5JQ09ERSAxCiAjZWxpZiBQTEFURk9STShHVEspCiAvKiBUaGUg
R1RLKyBVbmljb2RlIGJhY2tlbmQgaXMgY29uZmlndXJhYmxlICovCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luQ0UuY21ha2UKaW5kZXggZDMwMjgyZi4uNjE0NmU2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbkNFLmNtYWtlCkBAIC0xLDggKzEsNyBAQAogTElTVChBUFBFTkQgV1RGX0hFQURFUlMK
LSAgICB1bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisgICAgdW5pY29kZS93Y2hhci9Vbmlj
b2RlV2NoYXIuaAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNvbXBhdC9jZV90aW1lLmgKLSAg
ICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUuaAogKQogCiBMSVNUKEFQUEVO
RCBXVEZfU09VUkNFUwpAQCAtMTQsMTMgKzEzLDEyIEBAIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgdGhyZWFkcy93aW4vQmluYXJ5U2VtYXBob3JlV2luLmNwcAogCiAgICAgdW5pY29kZS9D
b2xsYXRvckRlZmF1bHQuY3BwCi0gICAgdW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuY3BwCisg
ICAgdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCiAKICAgICB3aW4vTWFpblRocmVhZFdp
bi5jcHAKICAgICB3aW4vT3duUHRyV2luLmNwcAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNv
bXBhdC9jZV90aW1lLmMKLSAgICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUu
Y3BwCiApCiAKIExJU1QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvVW5pY29kZS5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2Rl
LmgKaW5kZXggY2M0NDQ3Ni4uOTI2MDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5p
Y29kZS9Vbmljb2RlLmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmgKQEAg
LTM0LDggKzM0LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIExDaGFyOwogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg+CiAjZWxpZiBVU0UoR0xJQl9VTklDT0RFKQogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaD4KLSNlbGlmIFVTRShXSU5DRV9V
TklDT0RFKQotI2luY2x1ZGUgPHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oPgorI2Vs
aWYgVVNFKFdDSEFSX1VOSUNPREUpCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmg+CiAjZWxzZQogI2Vycm9yICJVbmtub3duIFVuaWNvZGUgaW1wbGVtZW50YXRpb24i
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDgzN2JlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmljb2Rl
V2NoYXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdURiB7CituYW1l
c3BhY2UgVW5pY29kZSB7CisKK0NoYXJDYXRlZ29yeSBjYXRlZ29yeShVQ2hhcjMyKQoreworICAg
IHJldHVybiBOb0NhdGVnb3J5OyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCit1bnNpZ25lZCBj
aGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpCit7CisgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBp
bXBsZW1lbnQhCit9CisKK0RpcmVjdGlvbiBkaXJlY3Rpb24oVUNoYXIpCit7CisgICAgcmV0dXJu
IExlZnRUb1JpZ2h0OyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCitEZWNvbXBvc2l0aW9uVHlw
ZSBkZWNvbXBvc2l0aW9uVHlwZShVQ2hhcjMyKQoreworICAgIHJldHVybiBEZWNvbXBvc2l0aW9u
Tm9uZTsgLy8gRklYTUU6IGltcGxlbWVudCEKK30KKworYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9w
ZXJ0eUNvbXBsZXhDb250ZXh0KFVDaGFyMzIpCit7CisgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhN
RTogaW1wbGVtZW50IQorfQorCitVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyIGMpCit7Cisg
ICAgcmV0dXJuIGM7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKK3RlbXBsYXRlPFVDaGFyIEZ1
bmN0aW9uKFVDaGFyKT4KK3N0YXRpYyBpbmxpbmUgaW50IGNvbnZlcnRXaXRoRnVuY3Rpb24oVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3Ig
PSByZXN1bHQ7CisgICAgVUNoYXIqIHJlc3VsdEVuZCA9IHJlc3VsdCArIHN0ZDo6bWluKHJlc3Vs
dExlbmd0aCwgc291cmNlTGVuZ3RoKTsKKyAgICB3aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1
bHRFbmQpCisgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gRnVuY3Rpb24oKnNvdXJjZSsrKTsK
KworICAgIGlmIChzb3VyY2VMZW5ndGggPCByZXN1bHRMZW5ndGgpCisgICAgICAgICpyZXN1bHRJ
dGVyYXRvciA9ICdcMCc7CisKKyAgICAqaXNFcnJvciA9IHNvdXJjZUxlbmd0aCA+IHJlc3VsdExl
bmd0aDsKKyAgICByZXR1cm4gc291cmNlTGVuZ3RoOworfQorCitpbnQgZm9sZENhc2UoVUNoYXIq
IHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJj
ZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlv
bjxmb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBp
c0Vycm9yKTsKK30KKworaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0
aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikK
K3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3Vs
dExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIGlzRXJyb3IpOworfQorCitpbnQgdG9VcHBl
cihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBp
bnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQoreworICAgIHJldHVybiBjb252ZXJ0V2l0
aEZ1bmN0aW9uPHRvVXBwZXI+KHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxl
bmd0aCwgaXNFcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2Rl
V2NoYXIuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0ZWVlOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKQEAgLTAsMCAr
MSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV1RGX1VuaWNvZGVXY2hhcl9oCisjZGVmaW5lIFdURl9Vbmlj
b2RlV2NoYXJfaAorCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9T
Y3JpcHRDb2Rlc0Zyb21JQ1UuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlTWFjcm9z
RnJvbUlDVS5oPgorCit0eXBlZGVmIHdjaGFyX3QgVUNoYXI7Cit0eXBlZGVmIHVuc2lnbmVkIFVD
aGFyMzI7CisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFVuaWNvZGUgeworCitlbnVtIERp
cmVjdGlvbiB7CisgICAgTGVmdFRvUmlnaHQsCisgICAgUmlnaHRUb0xlZnQsCisgICAgRXVyb3Bl
YW5OdW1iZXIsCisgICAgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3IsCisgICAgRXVyb3BlYW5OdW1i
ZXJUZXJtaW5hdG9yLAorICAgIEFyYWJpY051bWJlciwKKyAgICBDb21tb25OdW1iZXJTZXBhcmF0
b3IsCisgICAgQmxvY2tTZXBhcmF0b3IsCisgICAgU2VnbWVudFNlcGFyYXRvciwKKyAgICBXaGl0
ZVNwYWNlTmV1dHJhbCwKKyAgICBPdGhlck5ldXRyYWwsCisgICAgTGVmdFRvUmlnaHRFbWJlZGRp
bmcsCisgICAgTGVmdFRvUmlnaHRPdmVycmlkZSwKKyAgICBSaWdodFRvTGVmdEFyYWJpYywKKyAg
ICBSaWdodFRvTGVmdEVtYmVkZGluZywKKyAgICBSaWdodFRvTGVmdE92ZXJyaWRlLAorICAgIFBv
cERpcmVjdGlvbmFsRm9ybWF0LAorICAgIE5vblNwYWNpbmdNYXJrLAorICAgIEJvdW5kYXJ5TmV1
dHJhbAorfTsKKworZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7CisgICAgRGVjb21wb3NpdGlvbk5v
bmUsCisgICAgRGVjb21wb3NpdGlvbkNhbm9uaWNhbCwKKyAgICBEZWNvbXBvc2l0aW9uQ29tcGF0
LAorICAgIERlY29tcG9zaXRpb25DaXJjbGUsCisgICAgRGVjb21wb3NpdGlvbkZpbmFsLAorICAg
IERlY29tcG9zaXRpb25Gb250LAorICAgIERlY29tcG9zaXRpb25GcmFjdGlvbiwKKyAgICBEZWNv
bXBvc2l0aW9uSW5pdGlhbCwKKyAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQsCisgICAgRGVjb21w
b3NpdGlvbk1lZGlhbCwKKyAgICBEZWNvbXBvc2l0aW9uTmFycm93LAorICAgIERlY29tcG9zaXRp
b25Ob0JyZWFrLAorICAgIERlY29tcG9zaXRpb25TbWFsbCwKKyAgICBEZWNvbXBvc2l0aW9uU3F1
YXJlLAorICAgIERlY29tcG9zaXRpb25TdWIsCisgICAgRGVjb21wb3NpdGlvblN1cGVyLAorICAg
IERlY29tcG9zaXRpb25WZXJ0aWNhbCwKKyAgICBEZWNvbXBvc2l0aW9uV2lkZQorfTsKKworZW51
bSBDaGFyQ2F0ZWdvcnkgeworICAgIE5vQ2F0ZWdvcnkgPSAwLAorICAgIE90aGVyX05vdEFzc2ln
bmVkID0gVV9NQVNLKDApLAorICAgIExldHRlcl9VcHBlcmNhc2UgPSBVX01BU0soMSksCisgICAg
TGV0dGVyX0xvd2VyY2FzZSA9IFVfTUFTSygyKSwKKyAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVV9N
QVNLKDMpLAorICAgIExldHRlcl9Nb2RpZmllciA9IFVfTUFTSyg0KSwKKyAgICBMZXR0ZXJfT3Ro
ZXIgPSBVX01BU0soNSksCisKKyAgICBNYXJrX05vblNwYWNpbmcgPSBVX01BU0soNiksCisgICAg
TWFya19FbmNsb3NpbmcgPSBVX01BU0soNyksCisgICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0g
VV9NQVNLKDgpLAorCisgICAgTnVtYmVyX0RlY2ltYWxEaWdpdCA9IFVfTUFTSyg5KSwKKyAgICBO
dW1iZXJfTGV0dGVyID0gVV9NQVNLKDEwKSwKKyAgICBOdW1iZXJfT3RoZXIgPSBVX01BU0soMTEp
LAorCisgICAgU2VwYXJhdG9yX1NwYWNlID0gVV9NQVNLKDEyKSwKKyAgICBTZXBhcmF0b3JfTGlu
ZSA9IFVfTUFTSygxMyksCisgICAgU2VwYXJhdG9yX1BhcmFncmFwaCA9IFVfTUFTSygxNCksCisK
KyAgICBPdGhlcl9Db250cm9sID0gVV9NQVNLKDE1KSwKKyAgICBPdGhlcl9Gb3JtYXQgPSBVX01B
U0soMTYpLAorICAgIE90aGVyX1ByaXZhdGVVc2UgPSBVX01BU0soMTcpLAorICAgIE90aGVyX1N1
cnJvZ2F0ZSA9IFVfTUFTSygxOCksCisKKyAgICBQdW5jdHVhdGlvbl9EYXNoID0gVV9NQVNLKDE5
KSwKKyAgICBQdW5jdHVhdGlvbl9PcGVuID0gVV9NQVNLKDIwKSwKKyAgICBQdW5jdHVhdGlvbl9D
bG9zZSA9IFVfTUFTSygyMSksCisgICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVV9NQVNLKDIy
KSwKKyAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFVfTUFTSygyMyksCisKKyAgICBTeW1ib2xfTWF0
aCA9IFVfTUFTSygyNCksCisgICAgU3ltYm9sX0N1cnJlbmN5ID0gVV9NQVNLKDI1KSwKKyAgICBT
eW1ib2xfTW9kaWZpZXIgPSBVX01BU0soMjYpLAorICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSygy
NyksCisKKyAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soMjgpLAorICAgIFB1
bmN0dWF0aW9uX0ZpbmFsUXVvdGUgPSBVX01BU0soMjkpCit9OworCisKK1dURl9FWFBPUlRfUFJJ
VkFURSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklWQVRFIERlY29t
cG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaGFzTGluZUJyZWFraW5nUHJvcGVydHlDb21wbGV4Q29udGV4dChVQ2hhcjMyKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyKTsKKworaW5s
aW5lIGJvb2wgaXNBbHBoYW51bWVyaWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dhbG51bShjKTsg
fQoraW5saW5lIGJvb2wgaXNEaWdpdChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2RpZ2l0KGMpOyB9
CitpbmxpbmUgYm9vbCBpc0xldHRlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2FscGhhKGMpOyB9
CitpbmxpbmUgYm9vbCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93ZXIoYyk7IH0K
K2lubGluZSBib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3ByaW50
KGMpOyB9CitpbmxpbmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3cHVuY3Qo
Yyk7IH0KK2lubGluZSBib29sIGlzU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFpc3dzcGFjZShj
KTsgfQoraW5saW5lIGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3VwcGVyKGMp
OyB9CisKK2lubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0dXJuIGMgPj0g
MHgwNjAwICYmIGMgPD0gMHgwNmZmOyB9CitpbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVD
aGFyMzIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9CisKK2lu
bGluZSBVQ2hhciBmb2xkQ2FzZShVQ2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihjKTsgfQoraW5s
aW5lIFVDaGFyIHRvTG93ZXIoVUNoYXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7IH0KK2lubGlu
ZSBVQ2hhciB0b1VwcGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9CitpbmxpbmUg
VUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7IH0KKworV1RG
X0VYUE9SVF9QUklWQVRFIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9y
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVz
dWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBp
c0Vycm9yKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBp
bnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBi
b29sKiBpc0Vycm9yKTsKKworaW5saW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBVQ2hhciogYSwg
Y29uc3QgVUNoYXIqIGIsIGludCBsZW4pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
ICsraSkgeworICAgICAgICBVQ2hhciBjMSA9IGZvbGRDYXNlKGFbaV0pOworICAgICAgICBVQ2hh
ciBjMiA9IGZvbGRDYXNlKGJbaV0pOworICAgICAgICBpZiAoYzEgIT0gYzIpCisgICAgICAgICAg
ICByZXR1cm4gYzEgLSBjMjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgVW5pY29kZQorfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfVW5pY29k
ZVdjaGFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29k
ZVdpbkNFLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZkYWM3ZC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0
YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRv
cmNoIE1vYmlsZSwgSW5jLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVW5pY29kZVdpbkNFLmgiCi0KLSNpbmNsdWRlIDx3Y2hhci5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKLQotVUNoYXIgdG9Mb3dlcihVQ2hhciBjKQotewotICAg
IHJldHVybiB0b3dsb3dlcihjKTsKLX0KLQotVUNoYXIgdG9VcHBlcihVQ2hhciBjKQotewotICAg
IHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotVUNoYXIgZm9sZENhc2UoVUNoYXIgYykKLXsKLSAg
ICByZXR1cm4gdG93bG93ZXIoYyk7Ci19Ci0KLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyIGMp
Ci17Ci0gICAgcmV0dXJuICEhaXN3cHJpbnQoYyk7Ci19Ci0KLWJvb2wgaXNTcGFjZShVQ2hhciBj
KQotewotICAgIHJldHVybiAhIWlzd3NwYWNlKGMpOwotfQotCi1ib29sIGlzTGV0dGVyKFVDaGFy
IGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxwaGEoYyk7Ci19Ci0KLWJvb2wgaXNVcHBlcihVQ2hh
ciBjKQotewotICAgIHJldHVybiAhIWlzd3VwcGVyKGMpOwotfQotCi1ib29sIGlzTG93ZXIoVUNo
YXIgYykKLXsKLSAgICByZXR1cm4gISFpc3dsb3dlcihjKTsKLX0KLQotYm9vbCBpc0RpZ2l0KFVD
aGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3ZGlnaXQoYyk7Ci19Ci0KLWJvb2wgaXNQdW5jdChV
Q2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3B1bmN0KGMpOwotfQotCi1ib29sIGlzQWxwaGFu
dW1lcmljKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxudW0oYyk7Ci19Ci0KLWludCB0
b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3Vy
Y2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgY29uc3QgVUNoYXIq
IHNvdXJjZUl0ZXJhdG9yID0gc291cmNlOwotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQgPSBz
b3VyY2UgKyBzb3VyY2VMZW5ndGg7Ci0gICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9yID0gcmVzdWx0
OwotICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyByZXN1bHRMZW5ndGg7Ci0KLSAgICBp
bnQgcmVtYWluaW5nQ2hhcmFjdGVycyA9IDA7Ci0gICAgaWYgKHNvdXJjZUxlbmd0aCA8PSByZXN1
bHRMZW5ndGgpCi0gICAgICAgIHdoaWxlIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVuZCkKLSAg
ICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93bG93ZXIoKnNvdXJjZUl0ZXJhdG9yKysp
OwotICAgIGVsc2UKLSAgICAgICAgd2hpbGUgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQot
ICAgICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3dsb3dlcigqc291cmNlSXRlcmF0b3Ir
Kyk7Ci0KLSAgICBpZiAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgIHJlbWFp
bmluZ0NoYXJhY3RlcnMgKz0gc291cmNlRW5kIC0gc291cmNlSXRlcmF0b3I7Ci0gICAgKmlzRXJy
b3IgPSAhIXJlbWFpbmluZ0NoYXJhY3RlcnM7Ci0gICAgaWYgKHJlc3VsdEl0ZXJhdG9yIDwgcmVz
dWx0RW5kKQotICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAwOwotCi0gICAgcmV0dXJuIChyZXN1
bHRJdGVyYXRvciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFyYWN0ZXJzOwotfQotCi1pbnQgdG9V
cHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNl
LCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQotewotICAgIGNvbnN0IFVDaGFyKiBz
b3VyY2VJdGVyYXRvciA9IHNvdXJjZTsKLSAgICBjb25zdCBVQ2hhciogc291cmNlRW5kID0gc291
cmNlICsgc291cmNlTGVuZ3RoOwotICAgIFVDaGFyKiByZXN1bHRJdGVyYXRvciA9IHJlc3VsdDsK
LSAgICBVQ2hhciogcmVzdWx0RW5kID0gcmVzdWx0ICsgcmVzdWx0TGVuZ3RoOwotCi0gICAgaW50
IHJlbWFpbmluZ0NoYXJhY3RlcnMgPSAwOwotICAgIGlmIChzb3VyY2VMZW5ndGggPD0gcmVzdWx0
TGVuZ3RoKQotICAgICAgICB3aGlsZSAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAg
ICAgICAgICAqcmVzdWx0SXRlcmF0b3IrKyA9IHRvd3VwcGVyKCpzb3VyY2VJdGVyYXRvcisrKTsK
LSAgICBlbHNlCi0gICAgICAgIHdoaWxlIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAg
ICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJjZUl0ZXJhdG9yKysp
OwotCi0gICAgaWYgKHNvdXJjZUl0ZXJhdG9yIDwgc291cmNlRW5kKQotICAgICAgICByZW1haW5p
bmdDaGFyYWN0ZXJzICs9IHNvdXJjZUVuZCAtIHNvdXJjZUl0ZXJhdG9yOwotICAgICppc0Vycm9y
ID0gISFyZW1haW5pbmdDaGFyYWN0ZXJzOwotICAgIGlmIChyZXN1bHRJdGVyYXRvciA8IHJlc3Vs
dEVuZCkKLSAgICAgICAgKnJlc3VsdEl0ZXJhdG9yID0gMDsKLQotICAgIHJldHVybiAocmVzdWx0
SXRlcmF0b3IgLSByZXN1bHQpICsgcmVtYWluaW5nQ2hhcmFjdGVyczsKLX0KLQotaW50IGZvbGRD
YXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2Us
IGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgKmlzRXJyb3IgPSBmYWxz
ZTsKLSAgICBpZiAocmVzdWx0TGVuZ3RoIDwgc291cmNlTGVuZ3RoKSB7Ci0gICAgICAgICppc0Vy
cm9yID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsKLSAgICB9Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0g
Zm9sZENhc2Uoc291cmNlW2ldKTsKLSAgICByZXR1cm4gc291cmNlTGVuZ3RoOwotfQotCi1VQ2hh
ciB0b1RpdGxlQ2FzZShVQ2hhciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQot
RGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERpcmVjdGlvbj4oVW5pY29kZUNFOjpkaXJlY3Rpb24oYykpOwotfQotCi1DaGFyQ2F0ZWdvcnkg
Y2F0ZWdvcnkodW5zaWduZWQgaW50IGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJD
YXRlZ29yeT4oVE9fTUFTSygoX19pbnQ4KSBVbmljb2RlQ0U6OmNhdGVnb3J5KGMpKSk7Ci19Ci0K
LURlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RGVjb21wb3NpdGlvblR5cGU+KFVuaWNvZGVDRTo6ZGVjb21wb3Np
dGlvblR5cGUoYykpOwotfQotCi11bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIg
YykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjpjb21iaW5pbmdDbGFzcyhjKTsKLX0KLQotVUNo
YXIgbWlycm9yZWRDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjptaXJy
b3JlZENoYXIoYyk7Ci19Ci0KLWludCBkaWdpdFZhbHVlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJu
IFVuaWNvZGVDRTo6ZGlnaXRWYWx1ZShjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQot
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dp
bmNlL1VuaWNvZGVXaW5DRS5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93aW5jZS9Vbmljb2Rl
V2luQ0UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY2M2ZjOS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdlb3Jn
ZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgV1RG
X1VuaWNvZGVXaW5DRV9oCi0jZGVmaW5lIFdURl9Vbmljb2RlV2luQ0VfaAotCi0jaW5jbHVkZSA8
d3RmL3VuaWNvZGUvU2NyaXB0Q29kZXNGcm9tSUNVLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUv
VW5pY29kZU1hY3Jvc0Zyb21JQ1UuaD4KLQotI2luY2x1ZGUgImNlX3VuaWNvZGUuaCIKLQotI2Rl
ZmluZSBUT19NQVNLKHgpICgxIDw8ICh4KSkKLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2Ug
VW5pY29kZSB7Ci0KLWVudW0gRGlyZWN0aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFVuaWNvZGVD
RTo6VV9MRUZUX1RPX1JJR0hULAotICAgIFJpZ2h0VG9MZWZ0ID0gVW5pY29kZUNFOjpVX1JJR0hU
X1RPX0xFRlQsCi0gICAgRXVyb3BlYW5OdW1iZXIgPSBVbmljb2RlQ0U6OlVfRVVST1BFQU5fTlVN
QkVSLAotICAgIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFO
X05VTUJFUl9TRVBBUkFUT1IsCi0gICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yID0gVW5pY29k
ZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SLAotICAgIEFyYWJpY051bWJlciA9IFVu
aWNvZGVDRTo6VV9BUkFCSUNfTlVNQkVSLAotICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVu
aWNvZGVDRTo6VV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiwKLSAgICBCbG9ja1NlcGFyYXRvciA9
IFVuaWNvZGVDRTo6VV9CTE9DS19TRVBBUkFUT1IsCi0gICAgU2VnbWVudFNlcGFyYXRvciA9IFVu
aWNvZGVDRTo6VV9TRUdNRU5UX1NFUEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVu
aWNvZGVDRTo6VV9XSElURV9TUEFDRV9ORVVUUkFMLAotICAgIE90aGVyTmV1dHJhbCA9IFVuaWNv
ZGVDRTo6VV9PVEhFUl9ORVVUUkFMLAotICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVW5pY29k
ZUNFOjpVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUg
PSBVbmljb2RlQ0U6OlVfTEVGVF9UT19SSUdIVF9PVkVSUklERSwKLSAgICBSaWdodFRvTGVmdEFy
YWJpYyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX0FSQUJJQywKLSAgICBSaWdodFRvTGVm
dEVtYmVkZGluZyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBS
aWdodFRvTGVmdE92ZXJyaWRlID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUs
Ci0gICAgUG9wRGlyZWN0aW9uYWxGb3JtYXQgPSBVbmljb2RlQ0U6OlVfUE9QX0RJUkVDVElPTkFM
X0ZPUk1BVCwKLSAgICBOb25TcGFjaW5nTWFyayA9IFVuaWNvZGVDRTo6VV9ESVJfTk9OX1NQQUNJ
TkdfTUFSSywKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVbmljb2RlQ0U6OlVfQk9VTkRBUllfTkVV
VFJBTAotfTsKLQotZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7Ci0gICAgRGVjb21wb3NpdGlvbk5v
bmUgPSBVbmljb2RlQ0U6OlVfRFRfTk9ORSwKLSAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0g
VW5pY29kZUNFOjpVX0RUX0NBTk9OSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVW5p
Y29kZUNFOjpVX0RUX0NPTVBBVCwKLSAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlID0gVW5pY29kZUNF
OjpVX0RUX0NJUkNMRSwKLSAgICBEZWNvbXBvc2l0aW9uRmluYWwgPSBVbmljb2RlQ0U6OlVfRFRf
RklOQUwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBVbmljb2RlQ0U6OlVfRFRfRk9OVCwKLSAg
ICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24gPSBVbmljb2RlQ0U6OlVfRFRfRlJBQ1RJT04sCi0gICAg
RGVjb21wb3NpdGlvbkluaXRpYWwgPSBVbmljb2RlQ0U6OlVfRFRfSU5JVElBTCwKLSAgICBEZWNv
bXBvc2l0aW9uSXNvbGF0ZWQgPSBVbmljb2RlQ0U6OlVfRFRfSVNPTEFURUQsCi0gICAgRGVjb21w
b3NpdGlvbk1lZGlhbCA9IFVuaWNvZGVDRTo6VV9EVF9NRURJQUwsCi0gICAgRGVjb21wb3NpdGlv
bk5hcnJvdyA9IFVuaWNvZGVDRTo6VV9EVF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJl
YWsgPSBVbmljb2RlQ0U6OlVfRFRfTk9CUkVBSywKLSAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBV
bmljb2RlQ0U6OlVfRFRfU01BTEwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFVuaWNvZGVD
RTo6VV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1YiA9IFVuaWNvZGVDRTo6VV9EVF9T
VUIsCi0gICAgRGVjb21wb3NpdGlvblN1cGVyID0gVW5pY29kZUNFOjpVX0RUX1NVUEVSLAotICAg
IERlY29tcG9zaXRpb25WZXJ0aWNhbCA9IFVuaWNvZGVDRTo6VV9EVF9WRVJUSUNBTCwKLSAgICBE
ZWNvbXBvc2l0aW9uV2lkZSA9IFVuaWNvZGVDRTo6VV9EVF9XSURFCi19OwotCi1lbnVtIENoYXJD
YXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29yeSA9ICAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0g
VE9fTUFTSyhVbmljb2RlQ0U6OlVfR0VORVJBTF9PVEhFUl9UWVBFUyksCi0gICAgTGV0dGVyX1Vw
cGVyY2FzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1VQUEVSQ0FTRV9MRVRURVIpLAotICAgIExl
dHRlcl9Mb3dlcmNhc2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwK
LSAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfVElUTEVDQVNFX0xF
VFRFUiksCi0gICAgTGV0dGVyX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJ
RVJfTEVUVEVSKSwKLSAgICBMZXR0ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhF
Ul9MRVRURVIpLAotCi0gICAgTWFya19Ob25TcGFjaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
Tk9OX1NQQUNJTkdfTUFSSyksCi0gICAgTWFya19FbmNsb3NpbmcgPSBUT19NQVNLKFVuaWNvZGVD
RTo6VV9FTkNMT1NJTkdfTUFSSyksCi0gICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVE9fTUFT
SyhVbmljb2RlQ0U6OlVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyksCi0KLSAgICBOdW1iZXJfRGVj
aW1hbERpZ2l0ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAot
ICAgIE51bWJlcl9MZXR0ZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MRVRURVJfTlVNQkVSKSwK
LSAgICBOdW1iZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9OVU1CRVIpLAot
Ci0gICAgU2VwYXJhdG9yX1NwYWNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfU1BBQ0VfU0VQQVJB
VE9SKSwKLSAgICBTZXBhcmF0b3JfTGluZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0xJTkVfU0VQ
QVJBVE9SKSwKLSAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
UEFSQUdSQVBIX1NFUEFSQVRPUiksCi0KLSAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfQ09OVFJPTF9DSEFSKSwKLSAgICBPdGhlcl9Gb3JtYXQgPSBUT19NQVNLKFVuaWNv
ZGVDRTo6VV9GT1JNQVRfQ0hBUiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFRPX01BU0soVW5p
Y29kZUNFOjpVX1BSSVZBVEVfVVNFX0NIQVIpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRPX01B
U0soVW5pY29kZUNFOjpVX1NVUlJPR0FURSksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVE9f
TUFTSyhVbmljb2RlQ0U6OlVfREFTSF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3Bl
biA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVh
dGlvbl9DbG9zZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0VORF9QVU5DVFVBVElPTiksCi0gICAg
UHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OTkVDVE9SX1BV
TkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFRPX01BU0soVW5pY29kZUNFOjpV
X09USEVSX1BVTkNUVUFUSU9OKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVE9fTUFTSyhVbmljb2Rl
Q0U6OlVfTUFUSF9TWU1CT0wpLAotICAgIFN5bWJvbF9DdXJyZW5jeSA9IFRPX01BU0soVW5pY29k
ZUNFOjpVX0NVUlJFTkNZX1NZTUJPTCksCi0gICAgU3ltYm9sX01vZGlmaWVyID0gVE9fTUFTSyhV
bmljb2RlQ0U6OlVfTU9ESUZJRVJfU1lNQk9MKSwKLSAgICBTeW1ib2xfT3RoZXIgPSBUT19NQVNL
KFVuaWNvZGVDRTo6VV9PVEhFUl9TWU1CT0wpLAotCi0gICAgUHVuY3R1YXRpb25fSW5pdGlhbFF1
b3RlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfSU5JVElBTF9QVU5DVFVBVElPTiksCi0gICAgUHVu
Y3R1YXRpb25fRmluYWxRdW90ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0ZJTkFMX1BVTkNUVUFU
SU9OKQotfTsKLQotQ2hhckNhdGVnb3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCk7Ci0KLWJvb2wg
aXNTcGFjZShVQ2hhcik7Ci1ib29sIGlzTGV0dGVyKFVDaGFyKTsKLWJvb2wgaXNQcmludGFibGVD
aGFyKFVDaGFyKTsKLWJvb2wgaXNVcHBlcihVQ2hhcik7Ci1ib29sIGlzTG93ZXIoVUNoYXIpOwot
Ym9vbCBpc1B1bmN0KFVDaGFyKTsKLWJvb2wgaXNEaWdpdChVQ2hhcik7Ci1ib29sIGlzQWxwaGFu
dW1lcmljKFVDaGFyKTsKLWlubGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoVUNoYXIgYykgeyBy
ZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9Ci1pbmxpbmUgYm9vbCBpc0hp
Z2hTdXJyb2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZDgwMDsgfQot
aW5saW5lIGJvb2wgaXNMb3dTdXJyb2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDAp
ID09IDB4ZGMwMDsgfQotCi1VQ2hhciB0b0xvd2VyKFVDaGFyKTsKLVVDaGFyIHRvVXBwZXIoVUNo
YXIpOwotVUNoYXIgZm9sZENhc2UoVUNoYXIpOwotVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIpOwot
aW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci1pbnQgdG9VcHBlcihV
Q2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQg
c291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLWludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0
LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3Ro
LCBib29sKiBpc0Vycm9yKTsKLQotaW50IGRpZ2l0VmFsdWUoVUNoYXIpOwotCi1VQ2hhciBtaXJy
b3JlZENoYXIoVUNoYXIzMik7Ci11bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIp
OwotRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMik7Ci1EaXJlY3Rp
b24gZGlyZWN0aW9uKFVDaGFyMzIpOwotaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyKFVDaGFyMzIg
YykKLXsKLSAgICByZXR1cm4gYyA+PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Ci19Ci0KLWlubGlu
ZSBib29sIGhhc0xpbmVCcmVha2luZ1Byb3BlcnR5Q29tcGxleENvbnRleHQoVUNoYXIzMikKLXsK
LSAgICByZXR1cm4gZmFsc2U7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCi19Ci0KLWlubGluZSBpbnQg
dW1lbWNhc2VjbXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYzEgPSBm
b2xkQ2FzZShhW2ldKTsKLSAgICAgICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKLSAgICAg
ICAgaWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotCi1pbmxpbmUgVUNoYXIzMiBzdXJyb2dhdGVUb1VjczQoVUNoYXIgaGln
aCwgVUNoYXIgbG93KQotewotICAgIHJldHVybiAoVUNoYXIzMihoaWdoKSA8PCAxMCkgKyBsb3cg
LSAweDM1ZmRjMDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNl
IFdURgotCi0jZW5kaWYgLy8gV1RGX1VuaWNvZGVXaW5DRV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjODQz
Ni4uZjQxMDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTI3ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgVW5p
Y29kZVdpbkNFIHdpdGggVW5pY29kZVdjaGFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZlciBjb250YWluZWQgV2luQ0Ugc3Bl
Y2lmaWMgY29kZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGl0
LCB3aGljaCBpcyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0aW9ucworICAgICAgICBmcm9tIDx3
Y2hhci5oPi4gSXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5pY29kZSBiYWNrZW5kLCB3aGljaAor
ICAgICAgICBjYW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhhcyBubyBleHRlcm5hbCBkZXBlbmRl
bmNpZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RW5jb2Rpbmc6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRU
ZXh0Q29kZWNNYXBzKToKKwogMjAxMi0wNy0yNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0
aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjM4NTYpOiBC
cmVha3MgdGhlIGJ1aWxkIHdoZW4gZGlzYWJsaW5nIGluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmluZGV4IGUzZDM3MmEuLjJlOTA3OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAg
LTEyNSw3ICsxMjUsNyBAQCBDU3RyaW5nIFRleHRFbmNvZGluZzo6ZW5jb2RlKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZQogICAgIFVURjE2Tm9ybWFs
aXplZC5zZXQoZ191dGY4X3RvX3V0ZjE2KFVURjhOb3JtYWxpemVkLmdldCgpLCAtMSwgMCwgJlVU
RjE2TGVuZ3RoLCAwKSk7CiAKICAgICByZXR1cm4gbmV3VGV4dENvZGVjKCp0aGlzKS0+ZW5jb2Rl
KFVURjE2Tm9ybWFsaXplZC5nZXQoKSwgVVRGMTZMZW5ndGgsIGhhbmRsaW5nKTsKLSNlbGlmIFVT
RShXSU5DRV9VTklDT0RFKQorI2VsaWYgT1MoV0lORE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUp
CiAgICAgLy8gbm9ybWFsaXphdGlvbiB3aWxsIGJlIGRvbmUgYnkgV2luZG93cyBDRSBBUEkKICAg
ICBPd25QdHI8VGV4dENvZGVjPiB0ZXh0Q29kZWMgPSBuZXdUZXh0Q29kZWMoKnRoaXMpOwogICAg
IHJldHVybiB0ZXh0Q29kZWMuZ2V0KCkgPyB0ZXh0Q29kZWMtPmVuY29kZShjaGFyYWN0ZXJzLCBs
ZW5ndGgsIGhhbmRsaW5nKSA6IENTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggYmQ4YjdhNS4uNDc2
M2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpZiBVU0UoR0xJQl9VTklDT0RF
KQogI2luY2x1ZGUgImd0ay9UZXh0Q29kZWNHdGsuaCIKICNlbmRpZgotI2lmIFVTRShXSU5DRV9V
TklDT0RFKQorI2lmIE9TKFdJTkRPV1MpICYmIFVTRShXQ0hBUl9VTklDT0RFKQogI2luY2x1ZGUg
Indpbi9UZXh0Q29kZWNXaW4uaCIKICNlbmRpZgogCkBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGlj
IHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCiAgICAgVGV4dENvZGVjR3RrOjpyZWdpc3RlckV4
dGVuZGVkQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKICNlbmRpZgogCi0jaWYgVVNFKFdJTkNF
X1VOSUNPREUpCisjaWYgT1MoV0lORE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgVGV4
dENvZGVjV2luOjpyZWdpc3RlckV4dGVuZGVkRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGlu
Z05hbWVNYXApOwogICAgIFRleHRDb2RlY1dpbjo6cmVnaXN0ZXJFeHRlbmRlZENvZGVjcyhhZGRU
b1RleHRDb2RlY01hcCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDUwMjQ5OTIuLjViOTcyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNFIHdpdGggVW5pY29kZVdjaGFyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaWNvZGVXaW5D
RSBuZXZlciBjb250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29kZS4gVW5pY29kZVdjaGFyCisgICAg
ICAgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBpcyBtYWlubHkgYmFzZWQgb24gdGhl
IGZ1bmN0aW9ucworICAgICAgICBmcm9tIDx3Y2hhci5oPi4gSXQgaXMgbWVudCBhcyBhIG1pbmlt
YWwgVW5pY29kZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBjYW4gYmUgdXNlZCB2ZXJ5IGVhc3kg
YW5kIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbjoKKwogMjAxMi0wNy0yNiAgTmltYSBHaGFuYXZh
dGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1v
dmUgc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVy
ZXMuaW4KaW5kZXggNjZmOTU3NS4uZWU2YTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJl
cy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIFdFQkFVRElPX0lQUAogV0VCQVVESU9fTUtMCiBXRUJL
SVRfSU1BR0VfREVDT0RFUlMKIFdFQlAKLVdJTkNFX1VOSUNPREUKK1dDSEFSX1VOSUNPREUKIFdJ
TklORVQKIFdLX1NDUk9MTEJBUl9QQUlOVEVSCiBXVEZVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ0UuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNFLmNtYWtl
CmluZGV4IDI3MGYwMDMuLmM4ZmY4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ0UuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DRS5jbWFrZQpAQCAtMSw3
ICsxLDcgQEAKIElOQ0xVREUoT3B0aW9uc1dpbmRvd3MpCiAKIEFERF9ERUZJTklUSU9OUygtRF9D
RV9DUlRfQUxMT1dfV0lOX01JTk1BWCkKLUFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfV0lOQ0Vf
VU5JQ09ERT0xKQorQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9XQ0hBUl9VTklDT0RFPTEpCiBB
RERfREVGSU5JVElPTlMoLURXVEZfVVNFX1dJTklORVQ9MSkKIEFERF9ERUZJTklUSU9OUygtRFdU
Rl9DUFVfQVJNX1RSQURJVElPTkFMIC1EV0lOQ0VCQVNJQykKIEFERF9ERUZJTklUSU9OUygtREpT
X05PX0VYUE9SVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155040</attachid>
            <date>2012-07-27 13:44:28 -0700</date>
            <delta_ts>2012-07-27 15:26:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92539.patch</filename>
            <type>text/plain</type>
            <size>30870</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MTg5YjFlLi42YWRjY2I4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdpbkNFIG5ldmVyIGNv
bnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAgICAgICAgaXMgYSBy
ZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWluaW1hbCBVbmljb2Rl
IGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFzeSBhbmQgaGFzIG5v
IGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ0UuY21ha2U6CisKIDIwMTItMDctMjcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsu
cm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQg
ZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NTc1OTguLmNkMGZkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTEgQEAKKzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdp
bkNFIG5ldmVyIGNvbnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAg
ICAgICAgaXMgYSByZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0
aGUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWlu
aW1hbCBVbmljb2RlIGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFz
eSBhbmQgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFdURi5neXBp
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbkNF
LmNtYWtlOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VuaWNvZGUuaDoKKyAgICAgICAgKiB3dGYv
dW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVuaWNvZGUp
OgorICAgICAgICAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeSk6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OmNvbWJpbmluZ0NsYXNzKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlvblR5cGUpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjpoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KToKKyAgICAg
ICAgKFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6
Y29udmVydFdpdGhGdW5jdGlvbik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9Mb3dlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6
OnRvVXBwZXIpOgorICAgICAgICAqIHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBB
ZGRlZC4KKyAgICAgICAgKFVuaWNvZGUpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0FscGhh
bnVtZXJpYyk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzRGlnaXQpOgorICAgICAgICAoV1RG
OjpVbmljb2RlOjppc0xldHRlcik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmlzTG93ZXIpOgor
ICAgICAgICAoV1RGOjpVbmljb2RlOjppc1ByaW50YWJsZUNoYXIpOgorICAgICAgICAoV1RGOjpV
bmljb2RlOjppc1B1bmN0KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNTcGFjZSk6CisgICAg
ICAgIChXVEY6OlVuaWNvZGU6OmlzVXBwZXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc0Fy
YWJpY0NoYXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKToKKyAg
ICAgICAgKFdURjo6VW5pY29kZTo6Zm9sZENhc2UpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjp0
b0xvd2VyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9VcHBlcik6CisgICAgICAgIChXVEY6
OlVuaWNvZGU6OnRvVGl0bGVDYXNlKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dW1lbWNhc2Vj
bXApOgorICAgICAgICAqIHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmg6IFJlbW92ZWQu
CisKIDIwMTItMDctMjYgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBjb25zdHJ1Y3RpbmcgVHlwZWRBcnJheSBmcm9tIGFub3RoZXIgVHlw
ZWRBcnJheSBpcyBzbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNl
L1dURi9XVEYuZ3lwaQppbmRleCBlYmI0MWE0Li4wYmIwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTIzMiw4ICsyMzIsOCBA
QAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaCcsCiAgICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2lu
Y2UvVW5pY29kZVdpbkNFLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2luY2UvVW5p
Y29kZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hh
ci5jcHAnLAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oJywK
ICAgICAgICAgICAgICd3dGYvd2luL01haW5UaHJlYWRXaW4uY3BwJywKICAgICAgICAgICAgICd3
dGYvd2luL093blB0cldpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi93aW5jZS9GYXN0TWFsbG9j
V2luQ0UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmOTljNGM4Li41MDcxMGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTUxNyw3ICs1MTcsNyBAQAogI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEKICNlbmRp
ZgogI2VsaWYgT1MoV0lOQ0UpCi0jZGVmaW5lIFdURl9VU0VfV0lOQ0VfVU5JQ09ERSAxCisjZGVm
aW5lIFdURl9VU0VfV0NIQVJfVU5JQ09ERSAxCiAjZWxpZiBQTEFURk9STShHVEspCiAvKiBUaGUg
R1RLKyBVbmljb2RlIGJhY2tlbmQgaXMgY29uZmlndXJhYmxlICovCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luQ0UuY21ha2UKaW5kZXggZDMwMjgyZi4uNjE0NmU2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbkNFLmNtYWtlCkBAIC0xLDggKzEsNyBAQAogTElTVChBUFBFTkQgV1RGX0hFQURFUlMK
LSAgICB1bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisgICAgdW5pY29kZS93Y2hhci9Vbmlj
b2RlV2NoYXIuaAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNvbXBhdC9jZV90aW1lLmgKLSAg
ICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUuaAogKQogCiBMSVNUKEFQUEVO
RCBXVEZfU09VUkNFUwpAQCAtMTQsMTMgKzEzLDEyIEBAIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgdGhyZWFkcy93aW4vQmluYXJ5U2VtYXBob3JlV2luLmNwcAogCiAgICAgdW5pY29kZS9D
b2xsYXRvckRlZmF1bHQuY3BwCi0gICAgdW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuY3BwCisg
ICAgdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCiAKICAgICB3aW4vTWFpblRocmVhZFdp
bi5jcHAKICAgICB3aW4vT3duUHRyV2luLmNwcAogCiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNv
bXBhdC9jZV90aW1lLmMKLSAgICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUu
Y3BwCiApCiAKIExJU1QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvVW5pY29kZS5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2Rl
LmgKaW5kZXggY2M0NDQ3Ni4uOTI2MDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5p
Y29kZS9Vbmljb2RlLmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmgKQEAg
LTM0LDggKzM0LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIExDaGFyOwogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg+CiAjZWxpZiBVU0UoR0xJQl9VTklDT0RFKQogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2dsaWIvVW5pY29kZUdMaWIuaD4KLSNlbGlmIFVTRShXSU5DRV9V
TklDT0RFKQotI2luY2x1ZGUgPHd0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oPgorI2Vs
aWYgVVNFKFdDSEFSX1VOSUNPREUpCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmg+CiAjZWxzZQogI2Vycm9yICJVbmtub3duIFVuaWNvZGUgaW1wbGVtZW50YXRpb24i
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29k
ZVdjaGFyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDgzN2JlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmljb2Rl
V2NoYXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdURiB7CituYW1l
c3BhY2UgVW5pY29kZSB7CisKK0NoYXJDYXRlZ29yeSBjYXRlZ29yeShVQ2hhcjMyKQoreworICAg
IHJldHVybiBOb0NhdGVnb3J5OyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCit1bnNpZ25lZCBj
aGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpCit7CisgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBp
bXBsZW1lbnQhCit9CisKK0RpcmVjdGlvbiBkaXJlY3Rpb24oVUNoYXIpCit7CisgICAgcmV0dXJu
IExlZnRUb1JpZ2h0OyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCitEZWNvbXBvc2l0aW9uVHlw
ZSBkZWNvbXBvc2l0aW9uVHlwZShVQ2hhcjMyKQoreworICAgIHJldHVybiBEZWNvbXBvc2l0aW9u
Tm9uZTsgLy8gRklYTUU6IGltcGxlbWVudCEKK30KKworYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9w
ZXJ0eUNvbXBsZXhDb250ZXh0KFVDaGFyMzIpCit7CisgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhN
RTogaW1wbGVtZW50IQorfQorCitVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyIGMpCit7Cisg
ICAgcmV0dXJuIGM7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKK3RlbXBsYXRlPFVDaGFyIEZ1
bmN0aW9uKFVDaGFyKT4KK3N0YXRpYyBpbmxpbmUgaW50IGNvbnZlcnRXaXRoRnVuY3Rpb24oVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3Ig
PSByZXN1bHQ7CisgICAgVUNoYXIqIHJlc3VsdEVuZCA9IHJlc3VsdCArIHN0ZDo6bWluKHJlc3Vs
dExlbmd0aCwgc291cmNlTGVuZ3RoKTsKKyAgICB3aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1
bHRFbmQpCisgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gRnVuY3Rpb24oKnNvdXJjZSsrKTsK
KworICAgIGlmIChzb3VyY2VMZW5ndGggPCByZXN1bHRMZW5ndGgpCisgICAgICAgICpyZXN1bHRJ
dGVyYXRvciA9ICdcMCc7CisKKyAgICAqaXNFcnJvciA9IHNvdXJjZUxlbmd0aCA+IHJlc3VsdExl
bmd0aDsKKyAgICByZXR1cm4gc291cmNlTGVuZ3RoOworfQorCitpbnQgZm9sZENhc2UoVUNoYXIq
IHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJj
ZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlv
bjxmb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBp
c0Vycm9yKTsKK30KKworaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0
aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikK
K3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3Vs
dExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIGlzRXJyb3IpOworfQorCitpbnQgdG9VcHBl
cihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBp
bnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQoreworICAgIHJldHVybiBjb252ZXJ0V2l0
aEZ1bmN0aW9uPHRvVXBwZXI+KHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxl
bmd0aCwgaXNFcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2Rl
V2NoYXIuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjMjAyNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKQEAgLTAsMCAr
MSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV1RGX1VuaWNvZGVXY2hhcl9oCisjZGVmaW5lIFdURl9Vbmlj
b2RlV2NoYXJfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNp
bmNsdWRlIDx3dGYvdW5pY29kZS9TY3JpcHRDb2Rlc0Zyb21JQ1UuaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlTWFjcm9zRnJvbUlDVS5oPgorCit0eXBlZGVmIHdjaGFyX3QgVUNoYXI7
Cit0eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7CisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNl
IFVuaWNvZGUgeworCitlbnVtIERpcmVjdGlvbiB7CisgICAgTGVmdFRvUmlnaHQsCisgICAgUmln
aHRUb0xlZnQsCisgICAgRXVyb3BlYW5OdW1iZXIsCisgICAgRXVyb3BlYW5OdW1iZXJTZXBhcmF0
b3IsCisgICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yLAorICAgIEFyYWJpY051bWJlciwKKyAg
ICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCisgICAgQmxvY2tTZXBhcmF0b3IsCisgICAgU2VnbWVu
dFNlcGFyYXRvciwKKyAgICBXaGl0ZVNwYWNlTmV1dHJhbCwKKyAgICBPdGhlck5ldXRyYWwsCisg
ICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCisgICAgTGVmdFRvUmlnaHRPdmVycmlkZSwKKyAgICBS
aWdodFRvTGVmdEFyYWJpYywKKyAgICBSaWdodFRvTGVmdEVtYmVkZGluZywKKyAgICBSaWdodFRv
TGVmdE92ZXJyaWRlLAorICAgIFBvcERpcmVjdGlvbmFsRm9ybWF0LAorICAgIE5vblNwYWNpbmdN
YXJrLAorICAgIEJvdW5kYXJ5TmV1dHJhbAorfTsKKworZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7
CisgICAgRGVjb21wb3NpdGlvbk5vbmUsCisgICAgRGVjb21wb3NpdGlvbkNhbm9uaWNhbCwKKyAg
ICBEZWNvbXBvc2l0aW9uQ29tcGF0LAorICAgIERlY29tcG9zaXRpb25DaXJjbGUsCisgICAgRGVj
b21wb3NpdGlvbkZpbmFsLAorICAgIERlY29tcG9zaXRpb25Gb250LAorICAgIERlY29tcG9zaXRp
b25GcmFjdGlvbiwKKyAgICBEZWNvbXBvc2l0aW9uSW5pdGlhbCwKKyAgICBEZWNvbXBvc2l0aW9u
SXNvbGF0ZWQsCisgICAgRGVjb21wb3NpdGlvbk1lZGlhbCwKKyAgICBEZWNvbXBvc2l0aW9uTmFy
cm93LAorICAgIERlY29tcG9zaXRpb25Ob0JyZWFrLAorICAgIERlY29tcG9zaXRpb25TbWFsbCwK
KyAgICBEZWNvbXBvc2l0aW9uU3F1YXJlLAorICAgIERlY29tcG9zaXRpb25TdWIsCisgICAgRGVj
b21wb3NpdGlvblN1cGVyLAorICAgIERlY29tcG9zaXRpb25WZXJ0aWNhbCwKKyAgICBEZWNvbXBv
c2l0aW9uV2lkZQorfTsKKworZW51bSBDaGFyQ2F0ZWdvcnkgeworICAgIE5vQ2F0ZWdvcnkgPSAw
LAorICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9NQVNLKDApLAorICAgIExldHRlcl9VcHBlcmNh
c2UgPSBVX01BU0soMSksCisgICAgTGV0dGVyX0xvd2VyY2FzZSA9IFVfTUFTSygyKSwKKyAgICBM
ZXR0ZXJfVGl0bGVjYXNlID0gVV9NQVNLKDMpLAorICAgIExldHRlcl9Nb2RpZmllciA9IFVfTUFT
Syg0KSwKKyAgICBMZXR0ZXJfT3RoZXIgPSBVX01BU0soNSksCisKKyAgICBNYXJrX05vblNwYWNp
bmcgPSBVX01BU0soNiksCisgICAgTWFya19FbmNsb3NpbmcgPSBVX01BU0soNyksCisgICAgTWFy
a19TcGFjaW5nQ29tYmluaW5nID0gVV9NQVNLKDgpLAorCisgICAgTnVtYmVyX0RlY2ltYWxEaWdp
dCA9IFVfTUFTSyg5KSwKKyAgICBOdW1iZXJfTGV0dGVyID0gVV9NQVNLKDEwKSwKKyAgICBOdW1i
ZXJfT3RoZXIgPSBVX01BU0soMTEpLAorCisgICAgU2VwYXJhdG9yX1NwYWNlID0gVV9NQVNLKDEy
KSwKKyAgICBTZXBhcmF0b3JfTGluZSA9IFVfTUFTSygxMyksCisgICAgU2VwYXJhdG9yX1BhcmFn
cmFwaCA9IFVfTUFTSygxNCksCisKKyAgICBPdGhlcl9Db250cm9sID0gVV9NQVNLKDE1KSwKKyAg
ICBPdGhlcl9Gb3JtYXQgPSBVX01BU0soMTYpLAorICAgIE90aGVyX1ByaXZhdGVVc2UgPSBVX01B
U0soMTcpLAorICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFVfTUFTSygxOCksCisKKyAgICBQdW5jdHVh
dGlvbl9EYXNoID0gVV9NQVNLKDE5KSwKKyAgICBQdW5jdHVhdGlvbl9PcGVuID0gVV9NQVNLKDIw
KSwKKyAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFVfTUFTSygyMSksCisgICAgUHVuY3R1YXRpb25f
Q29ubmVjdG9yID0gVV9NQVNLKDIyKSwKKyAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFVfTUFTSygy
MyksCisKKyAgICBTeW1ib2xfTWF0aCA9IFVfTUFTSygyNCksCisgICAgU3ltYm9sX0N1cnJlbmN5
ID0gVV9NQVNLKDI1KSwKKyAgICBTeW1ib2xfTW9kaWZpZXIgPSBVX01BU0soMjYpLAorICAgIFN5
bWJvbF9PdGhlciA9IFVfTUFTSygyNyksCisKKyAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUg
PSBVX01BU0soMjgpLAorICAgIFB1bmN0dWF0aW9uX0ZpbmFsUXVvdGUgPSBVX01BU0soMjkpCit9
OworCisKK1dURl9FWFBPUlRfUFJJVkFURSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMy
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIpOworV1RG
X0VYUE9SVF9QUklWQVRFIERlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFy
MzIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzTGluZUJyZWFraW5nUHJvcGVydHlDb21w
bGV4Q29udGV4dChVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVk
Q2hhcihVQ2hhcjMyKTsKKworaW5saW5lIGJvb2wgaXNBbHBoYW51bWVyaWMoVUNoYXIgYykgeyBy
ZXR1cm4gISFpc3dhbG51bShjKTsgfQoraW5saW5lIGJvb2wgaXNEaWdpdChVQ2hhciBjKSB7IHJl
dHVybiAhIWlzd2RpZ2l0KGMpOyB9CitpbmxpbmUgYm9vbCBpc0xldHRlcihVQ2hhciBjKSB7IHJl
dHVybiAhIWlzd2FscGhhKGMpOyB9CitpbmxpbmUgYm9vbCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0
dXJuICEhaXN3bG93ZXIoYyk7IH0KK2lubGluZSBib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBj
KSB7IHJldHVybiAhIWlzd3ByaW50KGMpOyB9CitpbmxpbmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMp
IHsgcmV0dXJuICEhaXN3cHVuY3QoYyk7IH0KK2lubGluZSBib29sIGlzU3BhY2UoVUNoYXIgYykg
eyByZXR1cm4gISFpc3dzcGFjZShjKTsgfQoraW5saW5lIGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7
IHJldHVybiAhIWlzd3VwcGVyKGMpOyB9CisKK2lubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hh
cjMyIGMpIHsgcmV0dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNmZmOyB9CitpbmxpbmUgYm9v
bCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyMzIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2Vw
YXJhdG9yX1NwYWNlOyB9CisKK2lubGluZSBVQ2hhciBmb2xkQ2FzZShVQ2hhciBjKSB7IHJldHVy
biB0b3dsb3dlcihjKTsgfQoraW5saW5lIFVDaGFyIHRvTG93ZXIoVUNoYXIgYykgeyByZXR1cm4g
dG93bG93ZXIoYyk7IH0KK2lubGluZSBVQ2hhciB0b1VwcGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRv
d3VwcGVyKGMpOyB9CitpbmxpbmUgVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIgYykgeyByZXR1cm4g
dG93dXBwZXIoYyk7IH0KKworV1RGX0VYUE9SVF9QUklWQVRFIGludCBmb2xkQ2FzZShVQ2hhciog
cmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNl
TGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9Mb3dlcihV
Q2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQg
c291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9V
cHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNl
LCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKKworaW5saW5lIGludCB1bWVtY2Fz
ZWNtcChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW4pCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBVQ2hhciBjMSA9IGZvbGRDYXNl
KGFbaV0pOworICAgICAgICBVQ2hhciBjMiA9IGZvbGRDYXNlKGJbaV0pOworICAgICAgICBpZiAo
YzEgIT0gYzIpCisgICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgVW5pY29kZQorfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBXVEZfVW5pY29kZVdjaGFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUv
d2luY2UvVW5pY29kZVdpbkNFLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZk
YWM3ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVX
aW5DRS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KLSAqICBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgotICogIENvcHly
aWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVW5pY29kZVdpbkNFLmgiCi0KLSNpbmNsdWRlIDx3Y2hh
ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKLQotVUNoYXIgdG9M
b3dlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0b3dsb3dlcihjKTsKLX0KLQotVUNoYXIgdG9V
cHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotVUNoYXIgZm9s
ZENhc2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gdG93bG93ZXIoYyk7Ci19Ci0KLWJvb2wgaXNQ
cmludGFibGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3cHJpbnQoYyk7Ci19Ci0K
LWJvb2wgaXNTcGFjZShVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3NwYWNlKGMpOwotfQot
Ci1ib29sIGlzTGV0dGVyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxwaGEoYyk7Ci19
Ci0KLWJvb2wgaXNVcHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3VwcGVyKGMpOwot
fQotCi1ib29sIGlzTG93ZXIoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gISFpc3dsb3dlcihjKTsK
LX0KLQotYm9vbCBpc0RpZ2l0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3ZGlnaXQoYyk7
Ci19Ci0KLWJvb2wgaXNQdW5jdChVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3B1bmN0KGMp
OwotfQotCi1ib29sIGlzQWxwaGFudW1lcmljKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3
YWxudW0oYyk7Ci19Ci0KLWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5n
dGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3Ip
Ci17Ci0gICAgY29uc3QgVUNoYXIqIHNvdXJjZUl0ZXJhdG9yID0gc291cmNlOwotICAgIGNvbnN0
IFVDaGFyKiBzb3VyY2VFbmQgPSBzb3VyY2UgKyBzb3VyY2VMZW5ndGg7Ci0gICAgVUNoYXIqIHJl
c3VsdEl0ZXJhdG9yID0gcmVzdWx0OwotICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyBy
ZXN1bHRMZW5ndGg7Ci0KLSAgICBpbnQgcmVtYWluaW5nQ2hhcmFjdGVycyA9IDA7Ci0gICAgaWYg
KHNvdXJjZUxlbmd0aCA8PSByZXN1bHRMZW5ndGgpCi0gICAgICAgIHdoaWxlIChzb3VyY2VJdGVy
YXRvciA8IHNvdXJjZUVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93bG93
ZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotICAgIGVsc2UKLSAgICAgICAgd2hpbGUgKHJlc3VsdEl0
ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3ds
b3dlcigqc291cmNlSXRlcmF0b3IrKyk7Ci0KLSAgICBpZiAoc291cmNlSXRlcmF0b3IgPCBzb3Vy
Y2VFbmQpCi0gICAgICAgIHJlbWFpbmluZ0NoYXJhY3RlcnMgKz0gc291cmNlRW5kIC0gc291cmNl
SXRlcmF0b3I7Ci0gICAgKmlzRXJyb3IgPSAhIXJlbWFpbmluZ0NoYXJhY3RlcnM7Ci0gICAgaWYg
KHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAw
OwotCi0gICAgcmV0dXJuIChyZXN1bHRJdGVyYXRvciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFy
YWN0ZXJzOwotfQotCi1pbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3Ro
LCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQot
ewotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VJdGVyYXRvciA9IHNvdXJjZTsKLSAgICBjb25zdCBV
Q2hhciogc291cmNlRW5kID0gc291cmNlICsgc291cmNlTGVuZ3RoOwotICAgIFVDaGFyKiByZXN1
bHRJdGVyYXRvciA9IHJlc3VsdDsKLSAgICBVQ2hhciogcmVzdWx0RW5kID0gcmVzdWx0ICsgcmVz
dWx0TGVuZ3RoOwotCi0gICAgaW50IHJlbWFpbmluZ0NoYXJhY3RlcnMgPSAwOwotICAgIGlmIChz
b3VyY2VMZW5ndGggPD0gcmVzdWx0TGVuZ3RoKQotICAgICAgICB3aGlsZSAoc291cmNlSXRlcmF0
b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgICAgICAqcmVzdWx0SXRlcmF0b3IrKyA9IHRvd3VwcGVy
KCpzb3VyY2VJdGVyYXRvcisrKTsKLSAgICBlbHNlCi0gICAgICAgIHdoaWxlIChyZXN1bHRJdGVy
YXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBw
ZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotCi0gICAgaWYgKHNvdXJjZUl0ZXJhdG9yIDwgc291cmNl
RW5kKQotICAgICAgICByZW1haW5pbmdDaGFyYWN0ZXJzICs9IHNvdXJjZUVuZCAtIHNvdXJjZUl0
ZXJhdG9yOwotICAgICppc0Vycm9yID0gISFyZW1haW5pbmdDaGFyYWN0ZXJzOwotICAgIGlmIChy
ZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgKnJlc3VsdEl0ZXJhdG9yID0gMDsK
LQotICAgIHJldHVybiAocmVzdWx0SXRlcmF0b3IgLSByZXN1bHQpICsgcmVtYWluaW5nQ2hhcmFj
dGVyczsKLX0KLQotaW50IGZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgs
IGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17
Ci0gICAgKmlzRXJyb3IgPSBmYWxzZTsKLSAgICBpZiAocmVzdWx0TGVuZ3RoIDwgc291cmNlTGVu
Z3RoKSB7Ci0gICAgICAgICppc0Vycm9yID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUxl
bmd0aDsKLSAgICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkK
LSAgICAgICAgcmVzdWx0W2ldID0gZm9sZENhc2Uoc291cmNlW2ldKTsKLSAgICByZXR1cm4gc291
cmNlTGVuZ3RoOwotfQotCi1VQ2hhciB0b1RpdGxlQ2FzZShVQ2hhciBjKQotewotICAgIHJldHVy
biB0b3d1cHBlcihjKTsKLX0KLQotRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERpcmVjdGlvbj4oVW5pY29kZUNFOjpkaXJlY3Rpb24oYykp
OwotfQotCi1DaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkodW5zaWduZWQgaW50IGMpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENoYXJDYXRlZ29yeT4oVE9fTUFTSygoX19pbnQ4KSBVbmljb2RlQ0U6
OmNhdGVnb3J5KGMpKSk7Ci19Ci0KLURlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBl
KFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVjb21wb3NpdGlvblR5cGU+
KFVuaWNvZGVDRTo6ZGVjb21wb3NpdGlvblR5cGUoYykpOwotfQotCi11bnNpZ25lZCBjaGFyIGNv
bWJpbmluZ0NsYXNzKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjpjb21iaW5p
bmdDbGFzcyhjKTsKLX0KLQotVUNoYXIgbWlycm9yZWRDaGFyKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gVW5pY29kZUNFOjptaXJyb3JlZENoYXIoYyk7Ci19Ci0KLWludCBkaWdpdFZhbHVlKFVD
aGFyIGMpCi17Ci0gICAgcmV0dXJuIFVuaWNvZGVDRTo6ZGlnaXRWYWx1ZShjKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oIGIvU291cmNlL1dURi93dGYv
dW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTY2M2ZjOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1Vu
aWNvZGVXaW5DRS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+Ci0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
KgotICovCi0KLSNpZm5kZWYgV1RGX1VuaWNvZGVXaW5DRV9oCi0jZGVmaW5lIFdURl9Vbmljb2Rl
V2luQ0VfaAotCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvU2NyaXB0Q29kZXNGcm9tSUNVLmg+Ci0j
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZU1hY3Jvc0Zyb21JQ1UuaD4KLQotI2luY2x1ZGUg
ImNlX3VuaWNvZGUuaCIKLQotI2RlZmluZSBUT19NQVNLKHgpICgxIDw8ICh4KSkKLQotbmFtZXNw
YWNlIFdURiB7Ci1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVudW0gRGlyZWN0aW9uIHsKLSAgICBM
ZWZ0VG9SaWdodCA9IFVuaWNvZGVDRTo6VV9MRUZUX1RPX1JJR0hULAotICAgIFJpZ2h0VG9MZWZ0
ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlQsCi0gICAgRXVyb3BlYW5OdW1iZXIgPSBVbmlj
b2RlQ0U6OlVfRVVST1BFQU5fTlVNQkVSLAotICAgIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0g
VW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IsCi0gICAgRXVyb3BlYW5OdW1i
ZXJUZXJtaW5hdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SLAot
ICAgIEFyYWJpY051bWJlciA9IFVuaWNvZGVDRTo6VV9BUkFCSUNfTlVNQkVSLAotICAgIENvbW1v
bk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiwK
LSAgICBCbG9ja1NlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9CTE9DS19TRVBBUkFUT1IsCi0gICAg
U2VnbWVudFNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9TRUdNRU5UX1NFUEFSQVRPUiwKLSAgICBX
aGl0ZVNwYWNlTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9XSElURV9TUEFDRV9ORVVUUkFMLAotICAg
IE90aGVyTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9PVEhFUl9ORVVUUkFMLAotICAgIExlZnRUb1Jp
Z2h0RW1iZWRkaW5nID0gVW5pY29kZUNFOjpVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HLAotICAg
IExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVbmljb2RlQ0U6OlVfTEVGVF9UT19SSUdIVF9PVkVSUklE
RSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX0FS
QUJJQywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19M
RUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlID0gVW5pY29kZUNFOjpVX1JJ
R0hUX1RPX0xFRlRfT1ZFUlJJREUsCi0gICAgUG9wRGlyZWN0aW9uYWxGb3JtYXQgPSBVbmljb2Rl
Q0U6OlVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwKLSAgICBOb25TcGFjaW5nTWFyayA9IFVuaWNv
ZGVDRTo6VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVbmlj
b2RlQ0U6OlVfQk9VTkRBUllfTkVVVFJBTAotfTsKLQotZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7
Ci0gICAgRGVjb21wb3NpdGlvbk5vbmUgPSBVbmljb2RlQ0U6OlVfRFRfTk9ORSwKLSAgICBEZWNv
bXBvc2l0aW9uQ2Fub25pY2FsID0gVW5pY29kZUNFOjpVX0RUX0NBTk9OSUNBTCwKLSAgICBEZWNv
bXBvc2l0aW9uQ29tcGF0ID0gVW5pY29kZUNFOjpVX0RUX0NPTVBBVCwKLSAgICBEZWNvbXBvc2l0
aW9uQ2lyY2xlID0gVW5pY29kZUNFOjpVX0RUX0NJUkNMRSwKLSAgICBEZWNvbXBvc2l0aW9uRmlu
YWwgPSBVbmljb2RlQ0U6OlVfRFRfRklOQUwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBVbmlj
b2RlQ0U6OlVfRFRfRk9OVCwKLSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24gPSBVbmljb2RlQ0U6
OlVfRFRfRlJBQ1RJT04sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwgPSBVbmljb2RlQ0U6OlVf
RFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBVbmljb2RlQ0U6OlVfRFRf
SVNPTEFURUQsCi0gICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IFVuaWNvZGVDRTo6VV9EVF9NRURJ
QUwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFVuaWNvZGVDRTo6VV9EVF9OQVJST1csCi0g
ICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVbmljb2RlQ0U6OlVfRFRfTk9CUkVBSywKLSAgICBE
ZWNvbXBvc2l0aW9uU21hbGwgPSBVbmljb2RlQ0U6OlVfRFRfU01BTEwsCi0gICAgRGVjb21wb3Np
dGlvblNxdWFyZSA9IFVuaWNvZGVDRTo6VV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1
YiA9IFVuaWNvZGVDRTo6VV9EVF9TVUIsCi0gICAgRGVjb21wb3NpdGlvblN1cGVyID0gVW5pY29k
ZUNFOjpVX0RUX1NVUEVSLAotICAgIERlY29tcG9zaXRpb25WZXJ0aWNhbCA9IFVuaWNvZGVDRTo6
VV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uV2lkZSA9IFVuaWNvZGVDRTo6VV9EVF9X
SURFCi19OwotCi1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29yeSA9ICAwLAotICAg
IE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfR0VORVJBTF9PVEhFUl9U
WVBFUyksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1VQUEVS
Q0FTRV9MRVRURVIpLAotICAgIExldHRlcl9Mb3dlcmNhc2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6
VV9MT1dFUkNBU0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfVElUTEVDQVNFX0xFVFRFUiksCi0gICAgTGV0dGVyX01vZGlmaWVyID0gVE9fTUFT
SyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfTEVUVEVSKSwKLSAgICBMZXR0ZXJfT3RoZXIgPSBUT19N
QVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9MRVRURVIpLAotCi0gICAgTWFya19Ob25TcGFjaW5nID0g
VE9fTUFTSyhVbmljb2RlQ0U6OlVfTk9OX1NQQUNJTkdfTUFSSyksCi0gICAgTWFya19FbmNsb3Np
bmcgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkNMT1NJTkdfTUFSSyksCi0gICAgTWFya19TcGFj
aW5nQ29tYmluaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09NQklOSU5HX1NQQUNJTkdfTUFS
SyksCi0KLSAgICBOdW1iZXJfRGVjaW1hbERpZ2l0ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfREVD
SU1BTF9ESUdJVF9OVU1CRVIpLAotICAgIE51bWJlcl9MZXR0ZXIgPSBUT19NQVNLKFVuaWNvZGVD
RTo6VV9MRVRURVJfTlVNQkVSKSwKLSAgICBOdW1iZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVD
RTo6VV9PVEhFUl9OVU1CRVIpLAotCi0gICAgU2VwYXJhdG9yX1NwYWNlID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfU1BBQ0VfU0VQQVJBVE9SKSwKLSAgICBTZXBhcmF0b3JfTGluZSA9IFRPX01BU0so
VW5pY29kZUNFOjpVX0xJTkVfU0VQQVJBVE9SKSwKLSAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0g
VE9fTUFTSyhVbmljb2RlQ0U6OlVfUEFSQUdSQVBIX1NFUEFSQVRPUiksCi0KLSAgICBPdGhlcl9D
b250cm9sID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OVFJPTF9DSEFSKSwKLSAgICBPdGhlcl9G
b3JtYXQgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9GT1JNQVRfQ0hBUiksCi0gICAgT3RoZXJfUHJp
dmF0ZVVzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1BSSVZBVEVfVVNFX0NIQVIpLAotICAgIE90
aGVyX1N1cnJvZ2F0ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NVUlJPR0FURSksCi0KLSAgICBQ
dW5jdHVhdGlvbl9EYXNoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfREFTSF9QVU5DVFVBVElPTiks
Ci0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NUQVJUX1BVTkNU
VUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0VO
RF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9PdGhlciA9
IFRPX01BU0soVW5pY29kZUNFOjpVX09USEVSX1BVTkNUVUFUSU9OKSwKLQotICAgIFN5bWJvbF9N
YXRoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTUFUSF9TWU1CT0wpLAotICAgIFN5bWJvbF9DdXJy
ZW5jeSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NVUlJFTkNZX1NZTUJPTCksCi0gICAgU3ltYm9s
X01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfU1lNQk9MKSwKLSAgICBT
eW1ib2xfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9TWU1CT0wpLAotCi0gICAg
UHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfSU5JVElBTF9Q
VU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSA9IFRPX01BU0soVW5pY29k
ZUNFOjpVX0ZJTkFMX1BVTkNUVUFUSU9OKQotfTsKLQotQ2hhckNhdGVnb3J5IGNhdGVnb3J5KHVu
c2lnbmVkIGludCk7Ci0KLWJvb2wgaXNTcGFjZShVQ2hhcik7Ci1ib29sIGlzTGV0dGVyKFVDaGFy
KTsKLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyKTsKLWJvb2wgaXNVcHBlcihVQ2hhcik7Ci1i
b29sIGlzTG93ZXIoVUNoYXIpOwotYm9vbCBpc1B1bmN0KFVDaGFyKTsKLWJvb2wgaXNEaWdpdChV
Q2hhcik7Ci1ib29sIGlzQWxwaGFudW1lcmljKFVDaGFyKTsKLWlubGluZSBib29sIGlzU2VwYXJh
dG9yU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNl
OyB9Ci1pbmxpbmUgYm9vbCBpc0hpZ2hTdXJyb2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAw
eGZjMDApID09IDB4ZDgwMDsgfQotaW5saW5lIGJvb2wgaXNMb3dTdXJyb2dhdGUoVUNoYXIgYykg
eyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZGMwMDsgfQotCi1VQ2hhciB0b0xvd2VyKFVDaGFy
KTsKLVVDaGFyIHRvVXBwZXIoVUNoYXIpOwotVUNoYXIgZm9sZENhc2UoVUNoYXIpOwotVUNoYXIg
dG9UaXRsZUNhc2UoVUNoYXIpOwotaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3Vs
dExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNF
cnJvcik7Ci1pbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25z
dCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLWludCBm
b2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291
cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLQotaW50IGRpZ2l0VmFsdWUo
VUNoYXIpOwotCi1VQ2hhciBtaXJyb3JlZENoYXIoVUNoYXIzMik7Ci11bnNpZ25lZCBjaGFyIGNv
bWJpbmluZ0NsYXNzKFVDaGFyMzIpOwotRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5
cGUoVUNoYXIzMik7Ci1EaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIpOwotaW5saW5lIGJvb2wg
aXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gYyA+PSAweDA2MDAgJiYgYyA8
PSAweDA2RkY7Ci19Ci0KLWlubGluZSBib29sIGhhc0xpbmVCcmVha2luZ1Byb3BlcnR5Q29tcGxl
eENvbnRleHQoVUNoYXIzMikKLXsKLSAgICByZXR1cm4gZmFsc2U7IC8vIEZJWE1FOiBpbXBsZW1l
bnQhCi19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVD
aGFyKiBiLCBpbnQgbGVuKQotewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsK
LSAgICAgICAgVUNoYXIgYzEgPSBmb2xkQ2FzZShhW2ldKTsKLSAgICAgICAgVUNoYXIgYzIgPSBm
b2xkQ2FzZShiW2ldKTsKLSAgICAgICAgaWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJu
IGMxIC0gYzI7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgVUNoYXIzMiBzdXJy
b2dhdGVUb1VjczQoVUNoYXIgaGlnaCwgVUNoYXIgbG93KQotewotICAgIHJldHVybiAoVUNoYXIz
MihoaWdoKSA8PCAxMCkgKyBsb3cgLSAweDM1ZmRjMDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFVu
aWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gV1RGX1VuaWNvZGVXaW5DRV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNjVjODQzNi4uZjQxMDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNFIHdpdGggVW5pY29kZVdjaGFyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZl
ciBjb250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29kZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlz
IGEgcmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBpcyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0
aW9ucworICAgICAgICBmcm9tIDx3Y2hhci5oPi4gSXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5p
Y29kZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBjYW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhh
cyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2Rpbmc6OmVuY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleHRlbmRUZXh0Q29kZWNNYXBzKToKKwogMjAxMi0wNy0yNyAgVGhpYWdv
IE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIxMjM4NTYpOiBCcmVha3MgdGhlIGJ1aWxkIHdoZW4gZGlzYWJsaW5nIGluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmlu
ZGV4IGUzZDM3MmEuLjJlOTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRFbmNvZGluZy5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBDU3RyaW5nIFRleHRFbmNvZGlu
Zzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29k
YWJsZQogICAgIFVURjE2Tm9ybWFsaXplZC5zZXQoZ191dGY4X3RvX3V0ZjE2KFVURjhOb3JtYWxp
emVkLmdldCgpLCAtMSwgMCwgJlVURjE2TGVuZ3RoLCAwKSk7CiAKICAgICByZXR1cm4gbmV3VGV4
dENvZGVjKCp0aGlzKS0+ZW5jb2RlKFVURjE2Tm9ybWFsaXplZC5nZXQoKSwgVVRGMTZMZW5ndGgs
IGhhbmRsaW5nKTsKLSNlbGlmIFVTRShXSU5DRV9VTklDT0RFKQorI2VsaWYgT1MoV0lORE9XUykg
JiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgLy8gbm9ybWFsaXphdGlvbiB3aWxsIGJlIGRvbmUg
YnkgV2luZG93cyBDRSBBUEkKICAgICBPd25QdHI8VGV4dENvZGVjPiB0ZXh0Q29kZWMgPSBuZXdU
ZXh0Q29kZWMoKnRoaXMpOwogICAgIHJldHVybiB0ZXh0Q29kZWMuZ2V0KCkgPyB0ZXh0Q29kZWMt
PmVuY29kZShjaGFyYWN0ZXJzLCBsZW5ndGgsIGhhbmRsaW5nKSA6IENTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5j
cHAKaW5kZXggYmQ4YjdhNS4uNDc2M2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAK
ICNpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgImd0ay9UZXh0Q29kZWNHdGsuaCIKICNl
bmRpZgotI2lmIFVTRShXSU5DRV9VTklDT0RFKQorI2lmIE9TKFdJTkRPV1MpICYmIFVTRShXQ0hB
Ul9VTklDT0RFKQogI2luY2x1ZGUgIndpbi9UZXh0Q29kZWNXaW4uaCIKICNlbmRpZgogCkBAIC0z
MTEsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCiAgICAgVGV4
dENvZGVjR3RrOjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKICNl
bmRpZgogCi0jaWYgVVNFKFdJTkNFX1VOSUNPREUpCisjaWYgT1MoV0lORE9XUykgJiYgVVNFKFdD
SEFSX1VOSUNPREUpCiAgICAgVGV4dENvZGVjV2luOjpyZWdpc3RlckV4dGVuZGVkRW5jb2RpbmdO
YW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRDb2RlY1dpbjo6cmVnaXN0
ZXJFeHRlbmRlZENvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDUwMjQ5OTIuLjViOTcyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNF
IHdpdGggVW5pY29kZVdjaGFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZlciBjb250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29k
ZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBp
cyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0aW9ucworICAgICAgICBmcm9tIDx3Y2hhci5oPi4g
SXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5pY29kZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBj
YW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbjoKKwogMjAx
Mi0wNy0yNiAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBSZW1vdmUgc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBjb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXRE
YXRhVXNlRmVhdHVyZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4KaW5kZXggNjZmOTU3NS4uZWU2YTNkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YVVz
ZUZlYXR1cmVzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIFdFQkFVRElPX0lQ
UAogV0VCQVVESU9fTUtMCiBXRUJLSVRfSU1BR0VfREVDT0RFUlMKIFdFQlAKLVdJTkNFX1VOSUNP
REUKK1dDSEFSX1VOSUNPREUKIFdJTklORVQKIFdLX1NDUk9MTEJBUl9QQUlOVEVSCiBXVEZVUkwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNFLmNtYWtlCmluZGV4IDI3MGYwMDMuLmM4ZmY4YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW5DRS5jbWFrZQpAQCAtMSw3ICsxLDcgQEAKIElOQ0xVREUoT3B0aW9uc1dpbmRvd3MpCiAK
IEFERF9ERUZJTklUSU9OUygtRF9DRV9DUlRfQUxMT1dfV0lOX01JTk1BWCkKLUFERF9ERUZJTklU
SU9OUygtRFdURl9VU0VfV0lOQ0VfVU5JQ09ERT0xKQorQUREX0RFRklOSVRJT05TKC1EV1RGX1VT
RV9XQ0hBUl9VTklDT0RFPTEpCiBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX1dJTklORVQ9MSkK
IEFERF9ERUZJTklUSU9OUygtRFdURl9DUFVfQVJNX1RSQURJVElPTkFMIC1EV0lOQ0VCQVNJQykK
IEFERF9ERUZJTklUSU9OUygtREpTX05PX0VYUE9SVCkK
</data>
<flag name="commit-queue"
          id="164460"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155066</attachid>
            <date>2012-07-27 15:26:53 -0700</date>
            <delta_ts>2012-07-27 15:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92539.patch</filename>
            <type>text/plain</type>
            <size>31581</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MTg5YjFlLi42YWRjY2I4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdpbkNFIG5ldmVyIGNv
bnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAgICAgICAgaXMgYSBy
ZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWluaW1hbCBVbmljb2Rl
IGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFzeSBhbmQgaGFzIG5v
IGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ0UuY21ha2U6CisKIDIwMTItMDctMjcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsu
cm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQg
ZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NTc1OTguLjY4NThlZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTIgQEAKKzIwMTItMDctMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBVbmljb2RlV2luQ0Ugd2l0aCBVbmljb2RlV2NoYXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pY29kZVdp
bkNFIG5ldmVyIGNvbnRhaW5lZCBXaW5DRSBzcGVjaWZpYyBjb2RlLiBVbmljb2RlV2NoYXIKKyAg
ICAgICAgaXMgYSByZXBsYWNlbWVudCBmb3IgaXQsIHdoaWNoIGlzIG1haW5seSBiYXNlZCBvbiB0
aGUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gPHdjaGFyLmg+LiBJdCBpcyBtZW50IGFzIGEgbWlu
aW1hbCBVbmljb2RlIGJhY2tlbmQsIHdoaWNoCisgICAgICAgIGNhbiBiZSB1c2VkIHZlcnkgZWFz
eSBhbmQgaGFzIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFdURi5neXAv
V1RGLmd5cDoKKyAgICAgICAgKiBXVEYuZ3lwaToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW5DRS5jbWFrZToKKyAgICAgICAgKiB3dGYvdW5pY29k
ZS9Vbmljb2RlLmg6CisgICAgICAgICogd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNw
cDogQWRkZWQuCisgICAgICAgIChVbmljb2RlKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6Y2F0
ZWdvcnkpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjpjb21iaW5pbmdDbGFzcyk6CisgICAgICAg
IChXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmRlY29t
cG9zaXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aGFzTGluZUJyZWFraW5nUHJv
cGVydHlDb21wbGV4Q29udGV4dCk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6Om1pcnJvcmVkQ2hh
cik6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNvbnZlcnRXaXRoRnVuY3Rpb24pOgorICAgICAg
ICAoV1RGOjpVbmljb2RlOjpmb2xkQ2FzZSk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OnRvTG93
ZXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjp0b1VwcGVyKToKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaDogQWRkZWQuCisgICAgICAgIChVbmljb2RlKToKKyAg
ICAgICAgKFdURjo6VW5pY29kZTo6aXNBbHBoYW51bWVyaWMpOgorICAgICAgICAoV1RGOjpVbmlj
b2RlOjppc0RpZ2l0KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNMZXR0ZXIpOgorICAgICAg
ICAoV1RGOjpVbmljb2RlOjppc0xvd2VyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNQcmlu
dGFibGVDaGFyKToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNQdW5jdCk6CisgICAgICAgIChX
VEY6OlVuaWNvZGU6OmlzU3BhY2UpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjppc1VwcGVyKToK
KyAgICAgICAgKFdURjo6VW5pY29kZTo6aXNBcmFiaWNDaGFyKToKKyAgICAgICAgKFdURjo6VW5p
Y29kZTo6aXNTZXBhcmF0b3JTcGFjZSk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmZvbGRDYXNl
KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6dG9Mb3dlcik6CisgICAgICAgIChXVEY6OlVuaWNv
ZGU6OnRvVXBwZXIpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjp0b1RpdGxlQ2FzZSk6CisgICAg
ICAgIChXVEY6OlVuaWNvZGU6OnVtZW1jYXNlY21wKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS93
aW5jZS9Vbmljb2RlV2luQ0UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi91bmljb2RlL3dp
bmNlL1VuaWNvZGVXaW5DRS5oOiBSZW1vdmVkLgorCiAyMDEyLTA3LTI2ICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgY29uc3RydWN0aW5n
IFR5cGVkQXJyYXkgZnJvbSBhbm90aGVyIFR5cGVkQXJyYXkgaXMgc2xvdwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYuZ3lwL1dURi5neXAgYi9Tb3VyY2UvV1RGL1dURi5neXAvV1RGLmd5cApp
bmRleCBkYjgyZGQyLi41MGIxMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5neXAvV1RG
Lmd5cAorKysgYi9Tb3VyY2UvV1RGL1dURi5neXAvV1RGLmd5cApAQCAtMTIyLDkgKzEyMiw5IEBA
CiAgICAgICAgIFsnZXhjbHVkZScsICcuLi93dGYvdXJsJ10sCiAgICAgICAgIFsnZXhjbHVkZScs
ICcuLi93dGYvd2luY2UnXSwKICAgICAgICAgWydleGNsdWRlJywgJy4uL3d0Zi93eCddLAotICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnLi4vd3RmL3VuaWNvZGUvd2luY2UnXSwKICAgICAgICAgWydleGNs
dWRlJywgJy4uL3d0Zi91bmljb2RlL2dsaWInXSwKICAgICAgICAgWydleGNsdWRlJywgJy4uL3d0
Zi91bmljb2RlL3F0NCddLAorICAgICAgICBbJ2V4Y2x1ZGUnLCAnLi4vd3RmL3VuaWNvZGUvd2No
YXInXSwKICAgICAgICAgIyBHTGliL0dUSywgZXZlbiB0aG91Z2ggaXRzIG5hbWUgZG9lc24ndCBy
ZWFsbHkgaW5kaWNhdGUuCiAgICAgICAgIFsnZXhjbHVkZScsICcvKGd0a3xnbGlifGdvYmplY3Qp
Ly4qXFwuKGNwcHxoKSQnXSwKICAgICAgICAgWydleGNsdWRlJywgJyhEZWZhdWx0fEd0a3xNYWN8
Tm9uZXxRdHxXaW58V3h8RWZsfFN5bWJpYW4pXFwuKGNwcHxtbSkkJ10sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRleCBlYmI0MWE0Li4w
YmIwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYv
V1RGLmd5cGkKQEAgLTIzMiw4ICsyMzIsOCBAQAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL2ds
aWIvVW5pY29kZUdMaWIuaCcsCiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9y
SUNVLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUvcXQ0L1VuaWNvZGVRdDQuaCcsCi0g
ICAgICAgICAgICAnd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcCcsCi0gICAgICAg
ICAgICAnd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmgnLAorICAgICAgICAgICAgJ3d0
Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5jcHAnLAorICAgICAgICAgICAgJ3d0Zi91bmlj
b2RlL3djaGFyL1VuaWNvZGVXY2hhci5oJywKICAgICAgICAgICAgICd3dGYvd2luL01haW5UaHJl
YWRXaW4uY3BwJywKICAgICAgICAgICAgICd3dGYvd2luL093blB0cldpbi5jcHAnLAogICAgICAg
ICAgICAgJ3d0Zi93aW5jZS9GYXN0TWFsbG9jV2luQ0UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmOTlj
NGM4Li41MDcxMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTUxNyw3ICs1MTcsNyBAQAogI2RlZmluZSBX
VEZfVVNFX1FUNF9VTklDT0RFIDEKICNlbmRpZgogI2VsaWYgT1MoV0lOQ0UpCi0jZGVmaW5lIFdU
Rl9VU0VfV0lOQ0VfVU5JQ09ERSAxCisjZGVmaW5lIFdURl9VU0VfV0NIQVJfVU5JQ09ERSAxCiAj
ZWxpZiBQTEFURk9STShHVEspCiAvKiBUaGUgR1RLKyBVbmljb2RlIGJhY2tlbmQgaXMgY29uZmln
dXJhYmxlICovCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW5D
RS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luQ0UuY21ha2UKaW5kZXggZDMwMjgy
Zi4uNjE0NmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW5DRS5jbWFr
ZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbkNFLmNtYWtlCkBAIC0xLDggKzEsNyBA
QAogTElTVChBUFBFTkQgV1RGX0hFQURFUlMKLSAgICB1bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5D
RS5oCisgICAgdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaAogCiAgICAgJHszUkRQQVJUWV9E
SVJ9L2NlLWNvbXBhdC9jZV90aW1lLmgKLSAgICAkezNSRFBBUlRZX0RJUn0vY2UtY29tcGF0L2Nl
X3VuaWNvZGUuaAogKQogCiBMSVNUKEFQUEVORCBXVEZfU09VUkNFUwpAQCAtMTQsMTMgKzEzLDEy
IEBAIExJU1QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgdGhyZWFkcy93aW4vQmluYXJ5U2VtYXBo
b3JlV2luLmNwcAogCiAgICAgdW5pY29kZS9Db2xsYXRvckRlZmF1bHQuY3BwCi0gICAgdW5pY29k
ZS93aW5jZS9Vbmljb2RlV2luQ0UuY3BwCisgICAgdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIu
Y3BwCiAKICAgICB3aW4vTWFpblRocmVhZFdpbi5jcHAKICAgICB3aW4vT3duUHRyV2luLmNwcAog
CiAgICAgJHszUkRQQVJUWV9ESVJ9L2NlLWNvbXBhdC9jZV90aW1lLmMKLSAgICAkezNSRFBBUlRZ
X0RJUn0vY2UtY29tcGF0L2NlX3VuaWNvZGUuY3BwCiApCiAKIExJU1QoQVBQRU5EIFdURl9MSUJS
QVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVW5pY29kZS5oIGIvU291
cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmgKaW5kZXggY2M0NDQ3Ni4uOTI2MDIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9Vbmljb2RlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdW5pY29kZS9Vbmljb2RlLmgKQEAgLTM0LDggKzM0LDggQEAgdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIExDaGFyOwogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg+CiAj
ZWxpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgPHd0Zi91bmljb2RlL2dsaWIvVW5pY29k
ZUdMaWIuaD4KLSNlbGlmIFVTRShXSU5DRV9VTklDT0RFKQotI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L3dpbmNlL1VuaWNvZGVXaW5DRS5oPgorI2VsaWYgVVNFKFdDSEFSX1VOSUNPREUpCisjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmg+CiAjZWxzZQogI2Vycm9yICJVbmtu
b3duIFVuaWNvZGUgaW1wbGVtZW50YXRpb24iCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Vu
aWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zNDgzN2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29k
ZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJVbmljb2RlV2NoYXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgVW5pY29kZSB7CisKK0NoYXJDYXRlZ29y
eSBjYXRlZ29yeShVQ2hhcjMyKQoreworICAgIHJldHVybiBOb0NhdGVnb3J5OyAvLyBGSVhNRTog
aW1wbGVtZW50IQorfQorCit1bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpCit7
CisgICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKK0RpcmVjdGlvbiBkaXJl
Y3Rpb24oVUNoYXIpCit7CisgICAgcmV0dXJuIExlZnRUb1JpZ2h0OyAvLyBGSVhNRTogaW1wbGVt
ZW50IQorfQorCitEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBvc2l0aW9uVHlwZShVQ2hhcjMyKQor
eworICAgIHJldHVybiBEZWNvbXBvc2l0aW9uTm9uZTsgLy8gRklYTUU6IGltcGxlbWVudCEKK30K
KworYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KFVDaGFyMzIpCit7
CisgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCitVQ2hhcjMyIG1p
cnJvcmVkQ2hhcihVQ2hhcjMyIGMpCit7CisgICAgcmV0dXJuIGM7IC8vIEZJWE1FOiBpbXBsZW1l
bnQhCit9CisKK3RlbXBsYXRlPFVDaGFyIEZ1bmN0aW9uKFVDaGFyKT4KK3N0YXRpYyBpbmxpbmUg
aW50IGNvbnZlcnRXaXRoRnVuY3Rpb24oVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwg
Y29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sK
KyAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3IgPSByZXN1bHQ7CisgICAgVUNoYXIqIHJlc3VsdEVu
ZCA9IHJlc3VsdCArIHN0ZDo6bWluKHJlc3VsdExlbmd0aCwgc291cmNlTGVuZ3RoKTsKKyAgICB3
aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1bHRFbmQpCisgICAgICAgICpyZXN1bHRJdGVyYXRv
cisrID0gRnVuY3Rpb24oKnNvdXJjZSsrKTsKKworICAgIGlmIChzb3VyY2VMZW5ndGggPCByZXN1
bHRMZW5ndGgpCisgICAgICAgICpyZXN1bHRJdGVyYXRvciA9ICdcMCc7CisKKyAgICAqaXNFcnJv
ciA9IHNvdXJjZUxlbmd0aCA+IHJlc3VsdExlbmd0aDsKKyAgICByZXR1cm4gc291cmNlTGVuZ3Ro
OworfQorCitpbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29u
c3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAg
ICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjxmb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5n
dGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKK30KKworaW50IHRvTG93ZXIoVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5j
dGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgs
IGlzRXJyb3IpOworfQorCitpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9y
KQoreworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHRvVXBwZXI+KHJlc3VsdCwgcmVz
dWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxlbmd0aCwgaXNFcnJvcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNv
ZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTBjMjAyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2No
YXIvVW5pY29kZVdjaGFyLmgKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV1RGX1VuaWNv
ZGVXY2hhcl9oCisjZGVmaW5lIFdURl9Vbmljb2RlV2NoYXJfaAorCisjaW5jbHVkZSA8c3RkaW50
Lmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9TY3JpcHRDb2Rl
c0Zyb21JQ1UuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlTWFjcm9zRnJvbUlDVS5o
PgorCit0eXBlZGVmIHdjaGFyX3QgVUNoYXI7Cit0eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7CisK
K25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFVuaWNvZGUgeworCitlbnVtIERpcmVjdGlvbiB7
CisgICAgTGVmdFRvUmlnaHQsCisgICAgUmlnaHRUb0xlZnQsCisgICAgRXVyb3BlYW5OdW1iZXIs
CisgICAgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3IsCisgICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5h
dG9yLAorICAgIEFyYWJpY051bWJlciwKKyAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCisgICAg
QmxvY2tTZXBhcmF0b3IsCisgICAgU2VnbWVudFNlcGFyYXRvciwKKyAgICBXaGl0ZVNwYWNlTmV1
dHJhbCwKKyAgICBPdGhlck5ldXRyYWwsCisgICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCisgICAg
TGVmdFRvUmlnaHRPdmVycmlkZSwKKyAgICBSaWdodFRvTGVmdEFyYWJpYywKKyAgICBSaWdodFRv
TGVmdEVtYmVkZGluZywKKyAgICBSaWdodFRvTGVmdE92ZXJyaWRlLAorICAgIFBvcERpcmVjdGlv
bmFsRm9ybWF0LAorICAgIE5vblNwYWNpbmdNYXJrLAorICAgIEJvdW5kYXJ5TmV1dHJhbAorfTsK
KworZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7CisgICAgRGVjb21wb3NpdGlvbk5vbmUsCisgICAg
RGVjb21wb3NpdGlvbkNhbm9uaWNhbCwKKyAgICBEZWNvbXBvc2l0aW9uQ29tcGF0LAorICAgIERl
Y29tcG9zaXRpb25DaXJjbGUsCisgICAgRGVjb21wb3NpdGlvbkZpbmFsLAorICAgIERlY29tcG9z
aXRpb25Gb250LAorICAgIERlY29tcG9zaXRpb25GcmFjdGlvbiwKKyAgICBEZWNvbXBvc2l0aW9u
SW5pdGlhbCwKKyAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQsCisgICAgRGVjb21wb3NpdGlvbk1l
ZGlhbCwKKyAgICBEZWNvbXBvc2l0aW9uTmFycm93LAorICAgIERlY29tcG9zaXRpb25Ob0JyZWFr
LAorICAgIERlY29tcG9zaXRpb25TbWFsbCwKKyAgICBEZWNvbXBvc2l0aW9uU3F1YXJlLAorICAg
IERlY29tcG9zaXRpb25TdWIsCisgICAgRGVjb21wb3NpdGlvblN1cGVyLAorICAgIERlY29tcG9z
aXRpb25WZXJ0aWNhbCwKKyAgICBEZWNvbXBvc2l0aW9uV2lkZQorfTsKKworZW51bSBDaGFyQ2F0
ZWdvcnkgeworICAgIE5vQ2F0ZWdvcnkgPSAwLAorICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9N
QVNLKDApLAorICAgIExldHRlcl9VcHBlcmNhc2UgPSBVX01BU0soMSksCisgICAgTGV0dGVyX0xv
d2VyY2FzZSA9IFVfTUFTSygyKSwKKyAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVV9NQVNLKDMpLAor
ICAgIExldHRlcl9Nb2RpZmllciA9IFVfTUFTSyg0KSwKKyAgICBMZXR0ZXJfT3RoZXIgPSBVX01B
U0soNSksCisKKyAgICBNYXJrX05vblNwYWNpbmcgPSBVX01BU0soNiksCisgICAgTWFya19FbmNs
b3NpbmcgPSBVX01BU0soNyksCisgICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVV9NQVNLKDgp
LAorCisgICAgTnVtYmVyX0RlY2ltYWxEaWdpdCA9IFVfTUFTSyg5KSwKKyAgICBOdW1iZXJfTGV0
dGVyID0gVV9NQVNLKDEwKSwKKyAgICBOdW1iZXJfT3RoZXIgPSBVX01BU0soMTEpLAorCisgICAg
U2VwYXJhdG9yX1NwYWNlID0gVV9NQVNLKDEyKSwKKyAgICBTZXBhcmF0b3JfTGluZSA9IFVfTUFT
SygxMyksCisgICAgU2VwYXJhdG9yX1BhcmFncmFwaCA9IFVfTUFTSygxNCksCisKKyAgICBPdGhl
cl9Db250cm9sID0gVV9NQVNLKDE1KSwKKyAgICBPdGhlcl9Gb3JtYXQgPSBVX01BU0soMTYpLAor
ICAgIE90aGVyX1ByaXZhdGVVc2UgPSBVX01BU0soMTcpLAorICAgIE90aGVyX1N1cnJvZ2F0ZSA9
IFVfTUFTSygxOCksCisKKyAgICBQdW5jdHVhdGlvbl9EYXNoID0gVV9NQVNLKDE5KSwKKyAgICBQ
dW5jdHVhdGlvbl9PcGVuID0gVV9NQVNLKDIwKSwKKyAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFVf
TUFTSygyMSksCisgICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVV9NQVNLKDIyKSwKKyAgICBQ
dW5jdHVhdGlvbl9PdGhlciA9IFVfTUFTSygyMyksCisKKyAgICBTeW1ib2xfTWF0aCA9IFVfTUFT
SygyNCksCisgICAgU3ltYm9sX0N1cnJlbmN5ID0gVV9NQVNLKDI1KSwKKyAgICBTeW1ib2xfTW9k
aWZpZXIgPSBVX01BU0soMjYpLAorICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSygyNyksCisKKyAg
ICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soMjgpLAorICAgIFB1bmN0dWF0aW9u
X0ZpbmFsUXVvdGUgPSBVX01BU0soMjkpCit9OworCisKK1dURl9FWFBPUlRfUFJJVkFURSBDaGFy
Q2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
Y2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBEaXJlY3Rp
b24gZGlyZWN0aW9uKFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklWQVRFIERlY29tcG9zaXRpb25U
eXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzTGluZUJyZWFraW5nUHJvcGVydHlDb21wbGV4Q29udGV4dChVQ2hhcjMyKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyKTsKKworaW5saW5lIGJvb2wg
aXNBbHBoYW51bWVyaWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dhbG51bShjKTsgfQoraW5saW5l
IGJvb2wgaXNEaWdpdChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2RpZ2l0KGMpOyB9CitpbmxpbmUg
Ym9vbCBpc0xldHRlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2FscGhhKGMpOyB9CitpbmxpbmUg
Ym9vbCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93ZXIoYyk7IH0KK2lubGluZSBi
b29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3ByaW50KGMpOyB9Citp
bmxpbmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3cHVuY3QoYyk7IH0KK2lu
bGluZSBib29sIGlzU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFpc3dzcGFjZShjKTsgfQoraW5s
aW5lIGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3VwcGVyKGMpOyB9CisKK2lu
bGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0dXJuIGMgPj0gMHgwNjAwICYm
IGMgPD0gMHgwNmZmOyB9CitpbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyMzIgYykg
eyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9CisKK2lubGluZSBVQ2hh
ciBmb2xkQ2FzZShVQ2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihjKTsgfQoraW5saW5lIFVDaGFy
IHRvTG93ZXIoVUNoYXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7IH0KK2lubGluZSBVQ2hhciB0
b1VwcGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9CitpbmxpbmUgVUNoYXIgdG9U
aXRsZUNhc2UoVUNoYXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7IH0KKworV1RGX0VYUE9SVF9Q
UklWQVRFIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25z
dCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3Ro
LCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0
TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vy
cm9yKTsKKworaW5saW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNo
YXIqIGIsIGludCBsZW4pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewor
ICAgICAgICBVQ2hhciBjMSA9IGZvbGRDYXNlKGFbaV0pOworICAgICAgICBVQ2hhciBjMiA9IGZv
bGRDYXNlKGJbaV0pOworICAgICAgICBpZiAoYzEgIT0gYzIpCisgICAgICAgICAgICByZXR1cm4g
YzEgLSBjMjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgVW5p
Y29kZQorfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfVW5pY29kZVdjaGFyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZkYWM3ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0
YWlrb3NAa2RlLm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diA8YXBAbnlwb3AuY29tPgotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmls
ZSwgSW5jLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVW5pY29k
ZVdpbkNFLmgiCi0KLSNpbmNsdWRlIDx3Y2hhci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVz
cGFjZSBVbmljb2RlIHsKLQotVUNoYXIgdG9Mb3dlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0
b3dsb3dlcihjKTsKLX0KLQotVUNoYXIgdG9VcHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiB0
b3d1cHBlcihjKTsKLX0KLQotVUNoYXIgZm9sZENhc2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4g
dG93bG93ZXIoYyk7Ci19Ci0KLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyIGMpCi17Ci0gICAg
cmV0dXJuICEhaXN3cHJpbnQoYyk7Ci19Ci0KLWJvb2wgaXNTcGFjZShVQ2hhciBjKQotewotICAg
IHJldHVybiAhIWlzd3NwYWNlKGMpOwotfQotCi1ib29sIGlzTGV0dGVyKFVDaGFyIGMpCi17Ci0g
ICAgcmV0dXJuICEhaXN3YWxwaGEoYyk7Ci19Ci0KLWJvb2wgaXNVcHBlcihVQ2hhciBjKQotewot
ICAgIHJldHVybiAhIWlzd3VwcGVyKGMpOwotfQotCi1ib29sIGlzTG93ZXIoVUNoYXIgYykKLXsK
LSAgICByZXR1cm4gISFpc3dsb3dlcihjKTsKLX0KLQotYm9vbCBpc0RpZ2l0KFVDaGFyIGMpCi17
Ci0gICAgcmV0dXJuICEhaXN3ZGlnaXQoYyk7Ci19Ci0KLWJvb2wgaXNQdW5jdChVQ2hhciBjKQot
ewotICAgIHJldHVybiAhIWlzd3B1bmN0KGMpOwotfQotCi1ib29sIGlzQWxwaGFudW1lcmljKFVD
aGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxudW0oYyk7Ci19Ci0KLWludCB0b0xvd2VyKFVD
aGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBz
b3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgY29uc3QgVUNoYXIqIHNvdXJjZUl0
ZXJhdG9yID0gc291cmNlOwotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQgPSBzb3VyY2UgKyBz
b3VyY2VMZW5ndGg7Ci0gICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9yID0gcmVzdWx0OwotICAgIFVD
aGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyByZXN1bHRMZW5ndGg7Ci0KLSAgICBpbnQgcmVtYWlu
aW5nQ2hhcmFjdGVycyA9IDA7Ci0gICAgaWYgKHNvdXJjZUxlbmd0aCA8PSByZXN1bHRMZW5ndGgp
Ci0gICAgICAgIHdoaWxlIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVuZCkKLSAgICAgICAgICAg
ICpyZXN1bHRJdGVyYXRvcisrID0gdG93bG93ZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotICAgIGVs
c2UKLSAgICAgICAgd2hpbGUgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAg
ICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3dsb3dlcigqc291cmNlSXRlcmF0b3IrKyk7Ci0KLSAg
ICBpZiAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgIHJlbWFpbmluZ0NoYXJh
Y3RlcnMgKz0gc291cmNlRW5kIC0gc291cmNlSXRlcmF0b3I7Ci0gICAgKmlzRXJyb3IgPSAhIXJl
bWFpbmluZ0NoYXJhY3RlcnM7Ci0gICAgaWYgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5kKQot
ICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAwOwotCi0gICAgcmV0dXJuIChyZXN1bHRJdGVyYXRv
ciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFyYWN0ZXJzOwotfQotCi1pbnQgdG9VcHBlcihVQ2hh
ciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291
cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQotewotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VJdGVy
YXRvciA9IHNvdXJjZTsKLSAgICBjb25zdCBVQ2hhciogc291cmNlRW5kID0gc291cmNlICsgc291
cmNlTGVuZ3RoOwotICAgIFVDaGFyKiByZXN1bHRJdGVyYXRvciA9IHJlc3VsdDsKLSAgICBVQ2hh
ciogcmVzdWx0RW5kID0gcmVzdWx0ICsgcmVzdWx0TGVuZ3RoOwotCi0gICAgaW50IHJlbWFpbmlu
Z0NoYXJhY3RlcnMgPSAwOwotICAgIGlmIChzb3VyY2VMZW5ndGggPD0gcmVzdWx0TGVuZ3RoKQot
ICAgICAgICB3aGlsZSAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgICAgICAq
cmVzdWx0SXRlcmF0b3IrKyA9IHRvd3VwcGVyKCpzb3VyY2VJdGVyYXRvcisrKTsKLSAgICBlbHNl
Ci0gICAgICAgIHdoaWxlIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgICAg
ICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJjZUl0ZXJhdG9yKyspOwotCi0gICAg
aWYgKHNvdXJjZUl0ZXJhdG9yIDwgc291cmNlRW5kKQotICAgICAgICByZW1haW5pbmdDaGFyYWN0
ZXJzICs9IHNvdXJjZUVuZCAtIHNvdXJjZUl0ZXJhdG9yOwotICAgICppc0Vycm9yID0gISFyZW1h
aW5pbmdDaGFyYWN0ZXJzOwotICAgIGlmIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAg
ICAgICAgKnJlc3VsdEl0ZXJhdG9yID0gMDsKLQotICAgIHJldHVybiAocmVzdWx0SXRlcmF0b3Ig
LSByZXN1bHQpICsgcmVtYWluaW5nQ2hhcmFjdGVyczsKLX0KLQotaW50IGZvbGRDYXNlKFVDaGFy
KiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3Vy
Y2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgKmlzRXJyb3IgPSBmYWxzZTsKLSAgICBp
ZiAocmVzdWx0TGVuZ3RoIDwgc291cmNlTGVuZ3RoKSB7Ci0gICAgICAgICppc0Vycm9yID0gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsKLSAgICB9Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gZm9sZENhc2Uo
c291cmNlW2ldKTsKLSAgICByZXR1cm4gc291cmNlTGVuZ3RoOwotfQotCi1VQ2hhciB0b1RpdGxl
Q2FzZShVQ2hhciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotRGlyZWN0aW9u
IGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERpcmVjdGlv
bj4oVW5pY29kZUNFOjpkaXJlY3Rpb24oYykpOwotfQotCi1DaGFyQ2F0ZWdvcnkgY2F0ZWdvcnko
dW5zaWduZWQgaW50IGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJDYXRlZ29yeT4o
VE9fTUFTSygoX19pbnQ4KSBVbmljb2RlQ0U6OmNhdGVnb3J5KGMpKSk7Ci19Ci0KLURlY29tcG9z
aXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RGVjb21wb3NpdGlvblR5cGU+KFVuaWNvZGVDRTo6ZGVjb21wb3NpdGlvblR5cGUo
YykpOwotfQotCi11bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIgYykKLXsKLSAg
ICByZXR1cm4gVW5pY29kZUNFOjpjb21iaW5pbmdDbGFzcyhjKTsKLX0KLQotVUNoYXIgbWlycm9y
ZWRDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjptaXJyb3JlZENoYXIo
Yyk7Ci19Ci0KLWludCBkaWdpdFZhbHVlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFVuaWNvZGVD
RTo6ZGlnaXRWYWx1ZShjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNv
ZGVXaW5DRS5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY2M2ZjOS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTc4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29z
IDxzdGFpa29zQGtkZS5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgPGFwQG55cG9wLmNvbT4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgV1RGX1VuaWNvZGVX
aW5DRV9oCi0jZGVmaW5lIFdURl9Vbmljb2RlV2luQ0VfaAotCi0jaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvU2NyaXB0Q29kZXNGcm9tSUNVLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZU1h
Y3Jvc0Zyb21JQ1UuaD4KLQotI2luY2x1ZGUgImNlX3VuaWNvZGUuaCIKLQotI2RlZmluZSBUT19N
QVNLKHgpICgxIDw8ICh4KSkKLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2UgVW5pY29kZSB7
Ci0KLWVudW0gRGlyZWN0aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFVuaWNvZGVDRTo6VV9MRUZU
X1RPX1JJR0hULAotICAgIFJpZ2h0VG9MZWZ0ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlQs
Ci0gICAgRXVyb3BlYW5OdW1iZXIgPSBVbmljb2RlQ0U6OlVfRVVST1BFQU5fTlVNQkVSLAotICAg
IEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9T
RVBBUkFUT1IsCi0gICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yID0gVW5pY29kZUNFOjpVX0VV
Uk9QRUFOX05VTUJFUl9URVJNSU5BVE9SLAotICAgIEFyYWJpY051bWJlciA9IFVuaWNvZGVDRTo6
VV9BUkFCSUNfTlVNQkVSLAotICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6
VV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiwKLSAgICBCbG9ja1NlcGFyYXRvciA9IFVuaWNvZGVD
RTo6VV9CTE9DS19TRVBBUkFUT1IsCi0gICAgU2VnbWVudFNlcGFyYXRvciA9IFVuaWNvZGVDRTo6
VV9TRUdNRU5UX1NFUEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVuaWNvZGVDRTo6
VV9XSElURV9TUEFDRV9ORVVUUkFMLAotICAgIE90aGVyTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9P
VEhFUl9ORVVUUkFMLAotICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVW5pY29kZUNFOjpVX0xF
RlRfVE9fUklHSFRfRU1CRURESU5HLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVbmljb2Rl
Q0U6OlVfTEVGVF9UT19SSUdIVF9PVkVSUklERSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYyA9IFVu
aWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX0FSQUJJQywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGlu
ZyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVm
dE92ZXJyaWRlID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUsCi0gICAgUG9w
RGlyZWN0aW9uYWxGb3JtYXQgPSBVbmljb2RlQ0U6OlVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwK
LSAgICBOb25TcGFjaW5nTWFyayA9IFVuaWNvZGVDRTo6VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywK
LSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVbmljb2RlQ0U6OlVfQk9VTkRBUllfTkVVVFJBTAotfTsK
LQotZW51bSBEZWNvbXBvc2l0aW9uVHlwZSB7Ci0gICAgRGVjb21wb3NpdGlvbk5vbmUgPSBVbmlj
b2RlQ0U6OlVfRFRfTk9ORSwKLSAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0gVW5pY29kZUNF
OjpVX0RUX0NBTk9OSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVW5pY29kZUNFOjpV
X0RUX0NPTVBBVCwKLSAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlID0gVW5pY29kZUNFOjpVX0RUX0NJ
UkNMRSwKLSAgICBEZWNvbXBvc2l0aW9uRmluYWwgPSBVbmljb2RlQ0U6OlVfRFRfRklOQUwsCi0g
ICAgRGVjb21wb3NpdGlvbkZvbnQgPSBVbmljb2RlQ0U6OlVfRFRfRk9OVCwKLSAgICBEZWNvbXBv
c2l0aW9uRnJhY3Rpb24gPSBVbmljb2RlQ0U6OlVfRFRfRlJBQ1RJT04sCi0gICAgRGVjb21wb3Np
dGlvbkluaXRpYWwgPSBVbmljb2RlQ0U6OlVfRFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9u
SXNvbGF0ZWQgPSBVbmljb2RlQ0U6OlVfRFRfSVNPTEFURUQsCi0gICAgRGVjb21wb3NpdGlvbk1l
ZGlhbCA9IFVuaWNvZGVDRTo6VV9EVF9NRURJQUwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9
IFVuaWNvZGVDRTo6VV9EVF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVbmlj
b2RlQ0U6OlVfRFRfTk9CUkVBSywKLSAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBVbmljb2RlQ0U6
OlVfRFRfU01BTEwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFVuaWNvZGVDRTo6VV9EVF9T
UVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1YiA9IFVuaWNvZGVDRTo6VV9EVF9TVUIsCi0gICAg
RGVjb21wb3NpdGlvblN1cGVyID0gVW5pY29kZUNFOjpVX0RUX1NVUEVSLAotICAgIERlY29tcG9z
aXRpb25WZXJ0aWNhbCA9IFVuaWNvZGVDRTo6VV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0
aW9uV2lkZSA9IFVuaWNvZGVDRTo6VV9EVF9XSURFCi19OwotCi1lbnVtIENoYXJDYXRlZ29yeSB7
Ci0gICAgTm9DYXRlZ29yeSA9ICAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhV
bmljb2RlQ0U6OlVfR0VORVJBTF9PVEhFUl9UWVBFUyksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9
IFRPX01BU0soVW5pY29kZUNFOjpVX1VQUEVSQ0FTRV9MRVRURVIpLAotICAgIExldHRlcl9Mb3dl
cmNhc2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwKLSAgICBMZXR0
ZXJfVGl0bGVjYXNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfVElUTEVDQVNFX0xFVFRFUiksCi0g
ICAgTGV0dGVyX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfTEVUVEVS
KSwKLSAgICBMZXR0ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9MRVRURVIp
LAotCi0gICAgTWFya19Ob25TcGFjaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTk9OX1NQQUNJ
TkdfTUFSSyksCi0gICAgTWFya19FbmNsb3NpbmcgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkNM
T1NJTkdfTUFSSyksCi0gICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVE9fTUFTSyhVbmljb2Rl
Q0U6OlVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyksCi0KLSAgICBOdW1iZXJfRGVjaW1hbERpZ2l0
ID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAotICAgIE51bWJl
cl9MZXR0ZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MRVRURVJfTlVNQkVSKSwKLSAgICBOdW1i
ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9OVU1CRVIpLAotCi0gICAgU2Vw
YXJhdG9yX1NwYWNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfU1BBQ0VfU0VQQVJBVE9SKSwKLSAg
ICBTZXBhcmF0b3JfTGluZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0xJTkVfU0VQQVJBVE9SKSwK
LSAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfUEFSQUdSQVBI
X1NFUEFSQVRPUiksCi0KLSAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
Q09OVFJPTF9DSEFSKSwKLSAgICBPdGhlcl9Gb3JtYXQgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9G
T1JNQVRfQ0hBUiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFRPX01BU0soVW5pY29kZUNFOjpV
X1BSSVZBVEVfVVNFX0NIQVIpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRPX01BU0soVW5pY29k
ZUNFOjpVX1NVUlJPR0FURSksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfREFTSF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFRPX01B
U0soVW5pY29kZUNFOjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9z
ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0VORF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRp
b25fQ29ubmVjdG9yID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OTkVDVE9SX1BVTkNUVUFUSU9O
KSwKLSAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFRPX01BU0soVW5pY29kZUNFOjpVX09USEVSX1BV
TkNUVUFUSU9OKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTUFU
SF9TWU1CT0wpLAotICAgIFN5bWJvbF9DdXJyZW5jeSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NV
UlJFTkNZX1NZTUJPTCksCi0gICAgU3ltYm9sX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6
OlVfTU9ESUZJRVJfU1lNQk9MKSwKLSAgICBTeW1ib2xfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVD
RTo6VV9PVEhFUl9TWU1CT0wpLAotCi0gICAgUHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlID0gVE9f
TUFTSyhVbmljb2RlQ0U6OlVfSU5JVElBTF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25f
RmluYWxRdW90ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0ZJTkFMX1BVTkNUVUFUSU9OKQotfTsK
LQotQ2hhckNhdGVnb3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCk7Ci0KLWJvb2wgaXNTcGFjZShV
Q2hhcik7Ci1ib29sIGlzTGV0dGVyKFVDaGFyKTsKLWJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFy
KTsKLWJvb2wgaXNVcHBlcihVQ2hhcik7Ci1ib29sIGlzTG93ZXIoVUNoYXIpOwotYm9vbCBpc1B1
bmN0KFVDaGFyKTsKLWJvb2wgaXNEaWdpdChVQ2hhcik7Ci1ib29sIGlzQWxwaGFudW1lcmljKFVD
aGFyKTsKLWlubGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gY2F0
ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9Ci1pbmxpbmUgYm9vbCBpc0hpZ2hTdXJyb2dh
dGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZDgwMDsgfQotaW5saW5lIGJv
b2wgaXNMb3dTdXJyb2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZGMw
MDsgfQotCi1VQ2hhciB0b0xvd2VyKFVDaGFyKTsKLVVDaGFyIHRvVXBwZXIoVUNoYXIpOwotVUNo
YXIgZm9sZENhc2UoVUNoYXIpOwotVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIpOwotaW50IHRvTG93
ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci1pbnQgdG9VcHBlcihVQ2hhciogcmVz
dWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVu
Z3RoLCBib29sKiBpc0Vycm9yKTsKLWludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVz
dWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBp
c0Vycm9yKTsKLQotaW50IGRpZ2l0VmFsdWUoVUNoYXIpOwotCi1VQ2hhciBtaXJyb3JlZENoYXIo
VUNoYXIzMik7Ci11bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpOwotRGVjb21w
b3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMik7Ci1EaXJlY3Rpb24gZGlyZWN0
aW9uKFVDaGFyMzIpOwotaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKLXsKLSAg
ICByZXR1cm4gYyA+PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Ci19Ci0KLWlubGluZSBib29sIGhh
c0xpbmVCcmVha2luZ1Byb3BlcnR5Q29tcGxleENvbnRleHQoVUNoYXIzMikKLXsKLSAgICByZXR1
cm4gZmFsc2U7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCi19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2Vj
bXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYzEgPSBmb2xkQ2FzZShh
W2ldKTsKLSAgICAgICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKLSAgICAgICAgaWYgKGMx
ICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCi1pbmxpbmUgVUNoYXIzMiBzdXJyb2dhdGVUb1VjczQoVUNoYXIgaGlnaCwgVUNoYXIg
bG93KQotewotICAgIHJldHVybiAoVUNoYXIzMihoaWdoKSA8PCAxMCkgKyBsb3cgLSAweDM1ZmRj
MDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgotCi0j
ZW5kaWYgLy8gV1RGX1VuaWNvZGVXaW5DRV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjODQzNi4uZjQxMDk0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNF
IHdpdGggVW5pY29kZVdjaGFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZlciBjb250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29k
ZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBp
cyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0aW9ucworICAgICAgICBmcm9tIDx3Y2hhci5oPi4g
SXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5pY29kZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBj
YW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhhcyBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0RW5jb2Rpbmc6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRUZXh0Q29kZWNN
YXBzKToKKwogMjAxMi0wNy0yNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2Fu
dG9zQGludGVsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjM4NTYpOiBCcmVha3MgdGhl
IGJ1aWxkIHdoZW4gZGlzYWJsaW5nIGluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCmluZGV4IGUzZDM3MmEuLjJlOTA3OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKQEAgLTEyNSw3ICsx
MjUsNyBAQCBDU3RyaW5nIFRleHRFbmNvZGluZzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZQogICAgIFVURjE2Tm9ybWFsaXplZC5zZXQo
Z191dGY4X3RvX3V0ZjE2KFVURjhOb3JtYWxpemVkLmdldCgpLCAtMSwgMCwgJlVURjE2TGVuZ3Ro
LCAwKSk7CiAKICAgICByZXR1cm4gbmV3VGV4dENvZGVjKCp0aGlzKS0+ZW5jb2RlKFVURjE2Tm9y
bWFsaXplZC5nZXQoKSwgVVRGMTZMZW5ndGgsIGhhbmRsaW5nKTsKLSNlbGlmIFVTRShXSU5DRV9V
TklDT0RFKQorI2VsaWYgT1MoV0lORE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgLy8g
bm9ybWFsaXphdGlvbiB3aWxsIGJlIGRvbmUgYnkgV2luZG93cyBDRSBBUEkKICAgICBPd25QdHI8
VGV4dENvZGVjPiB0ZXh0Q29kZWMgPSBuZXdUZXh0Q29kZWMoKnRoaXMpOwogICAgIHJldHVybiB0
ZXh0Q29kZWMuZ2V0KCkgPyB0ZXh0Q29kZWMtPmVuY29kZShjaGFyYWN0ZXJzLCBsZW5ndGgsIGhh
bmRsaW5nKSA6IENTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggYmQ4YjdhNS4uNDc2M2JmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdp
c3RyeS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1
ZGUgImd0ay9UZXh0Q29kZWNHdGsuaCIKICNlbmRpZgotI2lmIFVTRShXSU5DRV9VTklDT0RFKQor
I2lmIE9TKFdJTkRPV1MpICYmIFVTRShXQ0hBUl9VTklDT0RFKQogI2luY2x1ZGUgIndpbi9UZXh0
Q29kZWNXaW4uaCIKICNlbmRpZgogCkBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgZXh0
ZW5kVGV4dENvZGVjTWFwcygpCiAgICAgVGV4dENvZGVjR3RrOjpyZWdpc3RlckV4dGVuZGVkQ29k
ZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKICNlbmRpZgogCi0jaWYgVVNFKFdJTkNFX1VOSUNPREUp
CisjaWYgT1MoV0lORE9XUykgJiYgVVNFKFdDSEFSX1VOSUNPREUpCiAgICAgVGV4dENvZGVjV2lu
OjpyZWdpc3RlckV4dGVuZGVkRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXAp
OwogICAgIFRleHRDb2RlY1dpbjo6cmVnaXN0ZXJFeHRlbmRlZENvZGVjcyhhZGRUb1RleHRDb2Rl
Y01hcCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDUwMjQ5OTIu
LjViOTcyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlcGxhY2UgVW5pY29kZVdpbkNFIHdpdGggVW5pY29kZVdjaGFyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaWNvZGVXaW5DRSBuZXZlciBj
b250YWluZWQgV2luQ0Ugc3BlY2lmaWMgY29kZS4gVW5pY29kZVdjaGFyCisgICAgICAgIGlzIGEg
cmVwbGFjZW1lbnQgZm9yIGl0LCB3aGljaCBpcyBtYWlubHkgYmFzZWQgb24gdGhlIGZ1bmN0aW9u
cworICAgICAgICBmcm9tIDx3Y2hhci5oPi4gSXQgaXMgbWVudCBhcyBhIG1pbmltYWwgVW5pY29k
ZSBiYWNrZW5kLCB3aGljaAorICAgICAgICBjYW4gYmUgdXNlZCB2ZXJ5IGVhc3kgYW5kIGhhcyBu
byBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BYm91
dERhdGFVc2VGZWF0dXJlcy5pbjoKKwogMjAxMi0wNy0yNiAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1vdmUgc3luY2hy
b25vdXMgc3BlbGxjaGVja2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhVXNlRmVhdHVyZXMuaW4KaW5k
ZXggNjZmOTU3NS4uZWU2YTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YVVzZUZlYXR1cmVzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFVc2VGZWF0dXJlcy5pbgpAQCAt
MTExLDcgKzExMSw3IEBAIFdFQkFVRElPX0lQUAogV0VCQVVESU9fTUtMCiBXRUJLSVRfSU1BR0Vf
REVDT0RFUlMKIFdFQlAKLVdJTkNFX1VOSUNPREUKK1dDSEFSX1VOSUNPREUKIFdJTklORVQKIFdL
X1NDUk9MTEJBUl9QQUlOVEVSCiBXVEZVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luQ0UuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNFLmNtYWtlCmluZGV4IDI3
MGYwMDMuLmM4ZmY4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DRS5jbWFrZQpAQCAtMSw3ICsxLDcgQEAK
IElOQ0xVREUoT3B0aW9uc1dpbmRvd3MpCiAKIEFERF9ERUZJTklUSU9OUygtRF9DRV9DUlRfQUxM
T1dfV0lOX01JTk1BWCkKLUFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfV0lOQ0VfVU5JQ09ERT0x
KQorQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9XQ0hBUl9VTklDT0RFPTEpCiBBRERfREVGSU5J
VElPTlMoLURXVEZfVVNFX1dJTklORVQ9MSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9DUFVfQVJN
X1RSQURJVElPTkFMIC1EV0lOQ0VCQVNJQykKIEFERF9ERUZJTklUSU9OUygtREpTX05PX0VYUE9S
VCkK
</data>
<flag name="review"
          id="164464"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>