<?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>152231</bug_id>
          
          <creation_ts>2015-12-13 14:05:43 -0800</creation_ts>
          <short_desc>[JSC] Add ceil() support for x86 and expose it to B3</short_desc>
          <delta_ts>2015-12-15 01:14:42 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148847</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-13 14:05:43 -0800</bug_when>
    <thetext>[JSC] Add ceil() support for x86 and expose it to B3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148848</commentid>
    <comment_count>1</comment_count>
      <attachid>267270</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-13 14:07:47 -0800</bug_when>
    <thetext>Created attachment 267270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148859</commentid>
    <comment_count>2</comment_count>
      <attachid>267273</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-13 16:19:38 -0800</bug_when>
    <thetext>Created attachment 267273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149080</commentid>
    <comment_count>3</comment_count>
      <attachid>267273</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-14 13:11:07 -0800</bug_when>
    <thetext>Comment on attachment 267273
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149117</commentid>
    <comment_count>4</comment_count>
      <attachid>267273</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-14 14:44:48 -0800</bug_when>
    <thetext>Comment on attachment 267273
Patch

Clearing flags on attachment: 267273

Committed r194062: &lt;http://trac.webkit.org/changeset/194062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149118</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-14 14:44:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149119</commentid>
    <comment_count>6</comment_count>
      <attachid>267273</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 14:49:55 -0800</bug_when>
    <thetext>Comment on attachment 267273
Patch

I think it&apos;s weird that this is implemented as a B3 opcode.  This is the kind of thing that we could do with a Patchpoint.  The benefit of a Patchpoint is:

- You don&apos;t need to add an Air opcode where isValidForm() returns true even when the opcode is not allowed.
- You don&apos;t need to add so much code.

I&apos;m really concerned with Inst::isValidForm() being wrong after your patch lands.  If you want to add Ceil to Air, then I think that this patch should be blocked on making opcode_generator.rb understand the notion of conditional instructions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149125</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 15:13:58 -0800</bug_when>
    <thetext>We should take a chill pill on putting new opcodes into B3.  There are too many opcodes for very specific math things.  This isn&apos;t scalable.  If we allowed everyone to add their favorite X86 opcodes as B3 opcodes, we&apos;d have an unmaintainable compiler.  It&apos;s very important to punt some subset of target instructions, even if it means that there exist hypothetical optimizations opportunities that we possibly overlook because of it.

The way that LLVM approached ceil is that it&apos;s an intrinsic.  B3&apos;s answer to intrinsics is Patchpoint.  We should probably have used Patchpoint here.  If at some time in the future we find that we need to also support algebraic optimizations on Ceil (or whatever fancy thing someone comes up with), then we can think about what it would look like to make Patchpoint reveal enough about its semantics that ReduceStrength could do things to it.  Or, if we find a benchmark where Ceil-as-Patchpoint is a performance problem then we could embark on a project to give it its own B3 opcode.  But I suspect that we won&apos;t need any of that for a long time, and that all that the users of Ceil want is things that you could get from a Patchpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149239</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-15 01:14:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 267273 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 267273
&gt; 
&gt; Committed r194062: &lt;http://trac.webkit.org/changeset/194062&gt;

Just to document:
 - a fix landed in https://trac.webkit.org/changeset/194071
 - an ARM buildfix landed in https://trac.webkit.org/changeset/194101</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267270</attachid>
            <date>2015-12-13 14:07:47 -0800</date>
            <delta_ts>2015-12-13 16:19:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152231-20151213140712.patch</filename>
            <type>text/plain</type>
            <size>37863</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTAyYmM2NzgwZGM1MmU3ZTZkZDFkNjNjNjA0Njk2OGRiNTQ0NWY3Li4wYjY2ZTVlOGMxZjNiNzBj
ODVhY2Q1N2Y2ZWFmZmJlM2M1MWJiN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNS0xMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgY2VpbCgpIHN1cHBvcnQgZm9yIHg4NiBhbmQgZXhw
b3NlIGl0IHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTIyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3N0IHg4NiBDUFVzIHdlIGNhcmUgYWJvdXQgc3VwcG9ydCBjZWlsKCkgbmF0aXZlbHkK
KyAgICAgICAgd2l0aCB0aGUgcm91bmQgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBleHBvc2UgdGhhdCBiZWhpbmQgYSBydW50aW1lIGZsYWcsIHVzZSBpdAorICAgICAgICBpbiB0
aGUgTWF0aC5jZWlsKCkgdGh1bmsgYW5kIGV4cG9zZSBpdCB0byBCMy4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdXBw
b3J0c0Zsb2F0aW5nUG9pbnRDZWlsKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJTSDQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnN1cHBvcnRzRmxvYXRp
bmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjZWlsRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNlaWxGbG9hdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRDZWlsKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzTFpDTlQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpyb3VuZHNzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNz
X21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNkX3JyKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNkX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptZmVuY2UpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjp0aHJlZUJ5dGVPcCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmNlaWxDb25zdGFudCk6
CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25z
dEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpjZWls
Q29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzQ29uc3RGbG9hdFZhbHVlLmg6CisgICAgICAgICog
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6CisgICAgICAgICogYjMvQjNM
b3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIp
OgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAg
ICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6VmFsdWU6OmNlaWxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6ZWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6a2V5KToKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAg
ICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2VpbEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2Vp
bEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2VpbE1lbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Q2VpbENlaWxBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENlaWxJVG9ENjQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdENlaWxJVG9EMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dENlaWxBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdENlaWxBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6
OkIzOjpwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyk6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Y2VpbDY0KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2VpbFRodW5rR2VuZXJhdG9yKToKKwogMjAxNS0xMi0xMiAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtBUk1dIEFkZCB0aGUgbWlzc2lu
ZyBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUgZnVuY3Rpb25zIGFmdGVyIHIxOTM5NzQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKaW5kZXggZDYyOTgzZWEyYmUwZGEwMGU2NWMzNmZkYWNkMDIxYzA2MTllZTk2MC4uM2Rk
Y2YyYWIyNjU1MmUzMTUxYWZiNGUyMGIyNWYxNTQxZDU2MjczYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEx
OTksNiArMTE5OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRUcnVuY2F0ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRTcXJ0KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRDZWlsKCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgZW51
bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRy
dW5jYXRlU3VjY2Vzc2Z1bCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDA2NTY0OTJiOTg0NWMwN2E4YjJl
N2RmMmY5YjRmM2NmOTQ3MDAzYTEuLjI3OThkNzM4NGI3OTU2NmI5OTU0MmQzMGE3ZDMwNTE5MDUx
M2I4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC04NTYsNiArODU2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwoKSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBsb2FkRG91YmxlKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBkZjM2ODQ1YjFjYzg5
ZDQ0Njk5ODBmZTI0YTBiYzdjNTU4ZjZkZmNkLi43Y2RhM2Y4OWJmZTI1OWI5ZWUzN2E0NmJlNWIz
ZWYxZmMyYjc0MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTEyMDksNiArMTIwOSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENl
aWwoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gU3RhY2sgbWFuaXB1bGF0aW9uIG9wZXJh
dGlvbnM6CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJTSDQuaAppbmRleCAxYTQwODY1NzdlZDQzOTM0MDA3YmMzMjM4MWY0YzJj
N2QxNmVhYzFlLi5hNGQ0MDFkYjg0N2EzZGM2NTY0MzhiMzdiNmViZTA5MzY3YmQyZmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oCkBAIC0xMDkxLDYgKzEwOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7IHJldHVybiB0cnVlOyB9CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50Q2VpbCgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCmlu
ZGV4IGI0NjlmNGQyMmJhZGVkNjY1MzU5NjRkMDM3NzNkOTcxMjJlYTZlM2YuLjBjYmYzYTc3OWQz
YmI3YjIwZmZjZTk2YjYxNGMwY2FkYjNmOWU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCkBA
IC01NTIsNyArNTUyLDggQEAgdm9pZCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJvYmUoTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OlByb2JlRnVuY3Rpb24gZnVuY3QKIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpTU0UyQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c19zc2Uy
Q2hlY2tTdGF0ZSA9IE5vdENoZWNrZWRTU0UyOwogI2VuZGlmCiAKLU1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpMWkNOVENoZWNrU3RhdGUgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnNfbHpjbnRD
aGVja1N0YXRlID0gTFpDTlRDaGVja1N0YXRlOjpOb3RDaGVja2VkOworTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c19zc2U0
XzFDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkOworTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c19s
emNudENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQ7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggYTg1MDQ1ZWZhZDVmN2UyZGY4ZTY2
N2EzMmE0NGI0MmI4MDE2MTgwMy4uZDcyZTg5ZDExNDRiYzBhMDJlZWYwMGNkYjUyYTYxYjRjOTE3
NjA4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtNTcwLDYgKzU3MCwyNSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcnBkX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IGNlaWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfcnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91
bmRpbmdUeXBlOjpUb3dhcmRJbmZpbml0aSk7CisgICAgfQorCisgICAgdm9pZCBjZWlsRG91Ymxl
KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIucm91bmRzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZBc3NlbWJsZXI6OlJv
dW5kaW5nVHlwZTo6VG93YXJkSW5maW5pdGkpOworICAgIH0KKworICAgIHZvaWQgY2VpbEZsb2F0
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5yb3VuZHNzX3JyKHNyYywgZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6
VG93YXJkSW5maW5pdGkpOworICAgIH0KKworICAgIHZvaWQgY2VpbEZsb2F0KEFkZHJlc3Mgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6
VG93YXJkSW5maW5pdGkpOworICAgIH0KIAogICAgIC8vIE1lbW9yeSBhY2Nlc3Mgb3BlcmF0aW9u
czoKICAgICAvLwpAQCAtMTc3Nyw2ICsxNzk2LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgIH0KIAorICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwoKQorICAgIHsKKyAgICAgICAgaWYg
KHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpIHsKKyAg
ICAgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgICAg
IGludCBjcHVJbmZvWzRdOworICAgICAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOworICAg
ICAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5H
KQorI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICBhc20gKAorICAgICAgICAgICAgICAgICJt
b3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAg
ICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICAgICAgOiAiPWciIChmbGFncykKKyAg
ICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3gi
LCAiJWVkeCIKKyAgICAgICAgICAgICAgICApOworI2Vsc2UKKyAgICAgICAgICAgIGFzbSAoCisg
ICAgICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAgICAgICAgICAgICAgICJwdXNo
bCAlJWVieDsiCisgICAgICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICAgICAicG9w
bCAlJWVieDsiCisgICAgICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAg
ICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgICAgIDoKKyAgICAgICAgICAgICAgICA6
ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICAgICApOworI2VuZGlmCisjZW5k
aWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgICAgICAgICAgc19zc2U0XzFDaGVja1N0
YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURD
aGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVj
a1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKwogI2lmIEVOQUJMRShNQVNN
X1BST0JFKQogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSwgdm9pZCog
YXJnMik7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCkBAIC0xODE3LDEwICsxODcyLDEw
IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9hc3NlbWJsZXIuY21vdmxfcnIoY29uZCwgc3JjLCBk
ZXN0KTsKICNlbmRpZgogICAgIH0KLSAgICAKKwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTFpD
TlQoKQogICAgIHsKLSAgICAgICAgaWYgKHNfbHpjbnRDaGVja1N0YXRlID09IExaQ05UQ2hlY2tT
dGF0ZTo6Tm90Q2hlY2tlZCkgeworICAgICAgICBpZiAoc19semNudENoZWNrU3RhdGUgPT0gQ1BV
SURDaGVja1N0YXRlOjpOb3RDaGVja2VkKSB7CiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOwog
I2lmIENPTVBJTEVSKE1TVkMpCiAgICAgICAgICAgICBpbnQgY3B1SW5mb1s0XTsKQEAgLTE4NDks
OSArMTkwNCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICApOwogI2VuZGlmCiAjZW5k
aWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAgICAgICAgICAgc19semNudENoZWNrU3Rh
dGUgPSAoZmxhZ3MgJiAweDIwKSA/IExaQ05UQ2hlY2tTdGF0ZTo6U2V0IDogTFpDTlRDaGVja1N0
YXRlOjpDbGVhcjsKKyAgICAgICAgICAgIHNfbHpjbnRDaGVja1N0YXRlID0gKGZsYWdzICYgMHgy
MCkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHNfbHpjbnRDaGVja1N0YXRlID09IExaQ05UQ2hlY2tTdGF0
ZTo6U2V0OworICAgICAgICByZXR1cm4gc19semNudENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0
YXRlOjpTZXQ7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjAyMSwxMiArMjA3NiwxMyBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotICAgIGVudW0gY2xhc3MgTFpDTlRDaGVja1N0YXRlIHsKKyAgICBl
bnVtIGNsYXNzIENQVUlEQ2hlY2tTdGF0ZSB7CiAgICAgICAgIE5vdENoZWNrZWQsCiAgICAgICAg
IENsZWFyLAogICAgICAgICBTZXQKICAgICB9OwotICAgIHN0YXRpYyBMWkNOVENoZWNrU3RhdGUg
c19semNudENoZWNrU3RhdGU7CisgICAgc3RhdGljIENQVUlEQ2hlY2tTdGF0ZSBzX3NzZTRfMUNo
ZWNrU3RhdGU7CisgICAgc3RhdGljIENQVUlEQ2hlY2tTdGF0ZSBzX2x6Y250Q2hlY2tTdGF0ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggODhiM2NkZjU1YjJlMWYxZjAyODYxNjJkOWQ2ODM1
NjkyMDQ0ZDY5Mi4uZTBiOTQzNjZhOGUzMzFhNDA3ZDJjMDBhMzdiYjI4Y2QzM2Y2MDE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0y
NjQsNiArMjY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX0NWVFNJMlNEX1ZzZEVkICA9IDB4
MkEsCiAgICAgICAgIE9QMl9DVlRUU0QyU0lfR2RXc2QgPSAweDJDLAogICAgICAgICBPUDJfVUNP
TUlTRF9Wc2RXc2QgID0gMHgyRSwKKyAgICAgICAgT1AyXzNCWVRFX0VTQ0FQRV8zQSA9IDB4M0Es
CiAgICAgICAgIE9QMl9DTU9WQ0MgICAgICAgICAgPSAweDQwLAogICAgICAgICBPUDJfQUREU0Rf
VnNkV3NkICAgID0gMHg1OCwKICAgICAgICAgT1AyX01VTFNEX1ZzZFdzZCAgICA9IDB4NTksCkBA
IC0yODAsNyArMjgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVkRfRWRWZCAgICAgICA9
IDB4N0UsCiAgICAgICAgIE9QMl9KQ0NfcmVsMzIgICAgICAgPSAweDgwLAogICAgICAgICBPUF9T
RVRDQyAgICAgICAgICAgID0gMHg5MCwKLSAgICAgICAgT1AyXzNCWVRFX0VTQ0FQRSAgICA9IDB4
QUUsCisgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAweEFFLAogICAgICAgICBPUDJfSU1V
TF9HdkV2ICAgICAgID0gMHhBRiwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYs
CiAgICAgICAgIE9QMl9CU1IgICAgICAgICAgICAgPSAweEJELApAQCAtMjk1LDcgKzI5Niw5IEBA
IHByaXZhdGU6CiAgICAgfSBUd29CeXRlT3Bjb2RlSUQ7CiAgICAgCiAgICAgdHlwZWRlZiBlbnVt
IHsKLSAgICAgICAgT1AzX01GRU5DRSAgICAgICAgICA9IDB4RjAsCisgICAgICAgIE9QM19ST1VO
RFNTX1Zzc1dzc0liID0gMHgwQSwKKyAgICAgICAgT1AzX1JPVU5EU0RfVnNkV3NkSWIgPSAweDBC
LAorICAgICAgICBPUDNfTUZFTkNFICAgICAgICAgICA9IDB4RjAsCiAgICAgfSBUaHJlZUJ5dGVP
cGNvZGVJRDsKIAogICAgIApAQCAtMjMzNCw2ICsyMzM3LDQxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3Qs
IGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgZW51bSBjbGFzcyBSb3VuZGluZ1R5cGUgOiB1
aW50OF90IHsKKyAgICAgICAgVG9OZWFyZXN0V2l0aFRpZXNUb0V2ZW4gPSAwLAorICAgICAgICBU
b3dhcmROZWdhdGl2ZUluZmluaXRpID0gMSwKKyAgICAgICAgVG93YXJkSW5maW5pdGkgPSAyLAor
ICAgICAgICBUb3dhcmRaZXJvID0gMworICAgIH07CisKKyAgICB2b2lkIHJvdW5kc3NfcnIoWE1N
UmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0LCBSb3VuZGluZ1R5cGUgcm91bmRpbmcp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7CisgICAgICAg
IG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfM0EsIE9QM19ST1VORFNT
X1Zzc1dzc0liLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmRpbmcpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJvdW5kc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBY
TU1SZWdpc3RlcklEIGRzdCwgUm91bmRpbmdUeXBlIHJvdW5kaW5nKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOworICAgICAgICBtX2Zvcm1hdHRlci50aHJl
ZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUk9VTkRTU19Wc3NXc3NJYiwgKFJlZ2lz
dGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kaW5nKSk7CisgICAgfQorCisgICAgdm9pZCByb3Vu
ZHNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCwgUm91bmRpbmdUeXBl
IHJvdW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYp
OworICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFXzNBLCBP
UDNfUk9VTkRTRF9Wc2RXc2RJYiwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwor
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5k
aW5nKSk7CisgICAgfQorCisgICAgdm9pZCByb3VuZHNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QsIFJvdW5kaW5nVHlwZSByb3VuZGluZykKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV8zQSwgT1AzX1JPVU5EU0RfVnNkV3Nk
SWIsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZGluZykpOworICAgIH0KKwogICAg
IC8vIE1pc2MgaW5zdHJ1Y3Rpb25zOgogCiAgICAgdm9pZCBpbnQzKCkKQEAgLTIzNTMsNyArMjM5
MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAgewotICAgICAgICBt
X2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDNfTUZFTkNFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CiAgICAgfQogCiAg
ICAgLy8gQXNzZW1ibGVyIGFkbWluIG1ldGhvZHM6CkBAIC0yODMyLDEyICsyODcwLDMyIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVGhy
ZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlKQorICAgICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVP
cGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7
CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKHR3b0J5dGVQcmVmaXgpOwor
ICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcChUd29CeXRlT3Bjb2RlSUQgdHdvQnl0ZVByZWZp
eCwgVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNp
emUpOworICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgcm0pOworICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29CeXRlUHJlZml4KTsKKyAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHJlZ2lzdGVy
TW9kUk0ocmVnLCBybSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3
b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IGRpc3BsYWNlbWVudCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKKyAgICAg
ICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwogICAgICAgICAgICAgbV9idWZm
ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZm
ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUDJfM0JZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcs
IGJhc2UsIGRpc3BsYWNlbWVudCk7CiAgICAgICAgIH0KIAogI2lmIENQVShYODZfNjQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCmluZGV4IGEw
NDFjMGZkYTM0NmQ1NTk5ZDdkODA1YzdjN2RkNTUxYWZlNjI5MDUuLjI1YjBhMzNmYWNjOWM2OTIz
ODQxYjc2ZjIwMGRhNzJlNGU3M2E0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCkBAIC05Miw2ICs5MiwxMSBAQCBWYWx1ZSogQ29uc3RE
b3VibGVWYWx1ZTo6YWJzQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogICAgIHJldHVy
biBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgZmFicyhtX3ZhbHVlKSk7CiB9
CiAKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpjZWlsQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9j
KSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4o
KSwgY2VpbChtX3ZhbHVlKSk7Cit9CisKIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpzcXJ0Q29u
c3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogewogICAgIHJldHVybiBwcm9jLmFkZDxDb25z
dERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3FydChtX3ZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKaW5kZXggZGE5YTM5NWViODhjMWY3MWVh
ZmRhOTE1MjAxZTI1M2M5Mjk1NmQzYi4uY2NlMzQwZjU0YmFkOTMwMTlmOTJhNjM4OTlmNzIxNTJh
NGI2YTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3Vi
bGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFs
dWUuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGJpdHdpc2VDYXN0Q29u
c3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGRvdWJsZVRvRmxv
YXRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYWJzQ29u
c3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGNlaWxDb25zdGFu
dChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogc3FydENvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXggNDU4N2E4NzQ4ZWNjNmY0ZGQxZjMx
MWU0OTZjYzMzMDM0ODMxM2FkOC4uNGM1N2I4ZTdiMjM0MmY4YTAzZWVmN2E2YWRkMTZhMzc1OTky
Y2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUu
Y3BwCkBAIC05Miw2ICs5MiwxMSBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjphYnNDb25zdGFu
dChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRW
YWx1ZT4ob3JpZ2luKCksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKG1fdmFsdWUpKSk7CiB9CiAK
K1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmNlaWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIGNl
aWxmKG1fdmFsdWUpKTsKK30KKwogVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3FydENvbnN0YW50
KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9h
dFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQobV92YWx1ZSkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKaW5kZXggZGMzOGJl
M2Y1NDU0NDdjODVhN2NhNDhkY2UxY2E3YjAxNDFhZjE5My4uOWY5OWNiMjYwNDhhYTQ4YWM2MzU2
NGIwZjg2YWQxZTMwMDQ2Mjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3RGbG9hdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3RGbG9hdFZhbHVlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBiaXR3
aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBm
bG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFs
dWUqIGFic0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBj
ZWlsQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIHNxcnRD
b25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFRyaVN0YXRlIGVxdWFs
Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcAppbmRleCAyNzBjYzQxYTU0MjI1NDIzNTNmNWNlN2Q4OGQ1MzNjZGQ5ZDQ1MTJl
Li42NjhmNjAwMzYzOTYyNWFhY2U5ZDQ0YWY2YWM4NThhYzJlOTc3YmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwCkBAIC0zMCw4ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJC
M0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKICNpbmNsdWRl
ICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5o
IgogCkBAIC04NSw2ICs4NywyNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQ2VpbDogeworICAgICAgICAgICAgICAgIGlm
IChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50Q2VpbCgpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJl
c3MgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91
YmxlKQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkFkZHJlc3MgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGNlaWwpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBGbG9hdCkKKyAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0UHRy
VmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBjZWlsZik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAg
ICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDQ2FsbFZh
bHVlPihtX2luZGV4LAorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT50eXBlKCksCisgICAg
ICAgICAgICAgICAgICAgIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZmZlY3RzOjpu
b25lKCksCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcywKKyAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJl
cGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IGJiZTA5MmU4YTlmOGQwZWU3OTZhMmIxMDFkNGQ4Mzc1MTEzMDkzMDQuLjkyNzZhZDJiZDdm
NDZmYmE2MGFlYWIyYjA4NjRiYzQ5MTUwNTM0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xNTA1LDYgKzE1MDUsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQ2VpbDogeworICAgICAg
ICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29wcywgQ2VpbERvdWJsZSwgQ2VpbEZs
b2F0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIFNxcnQ6IHsKICAgICAgICAgICAgIGFwcGVuZFVuT3A8QWlyOjpPb3Bz
LCBBaXI6Ok9vcHMsIFNxcnREb3VibGUsIFNxcnRGbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKaW5k
ZXggMzZlMjBlYzBkYjUwZWJjNTYzNjlmNTljMzQyZTM0M2JlNWI2NWYyYi4uOGFiNGI5ZWJmMDQ4
NTdlNjQ4MDM4NDExMWQxZGFjZDVmMDA4NTA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBBYnM6CiAgICAgICAgIG91dC5wcmlu
dCgiQWJzIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENlaWw6CisgICAgICAgIG91dC5w
cmludCgiQ2VpbCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcXJ0OgogICAgICAgICBv
dXQucHJpbnQoIlNxcnQiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAppbmRleCAxYzBiODZhMzZlYjgxZWUzNjFjYzVmODhhMmFjZTNkZTY3ZDdhMzk1Li41
YmQ0ZjI0MDEzMjkzOWQxN2QwYmU1Y2E1MDk5MGE0NzcyNzk3Yzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaApAQCAtODYsNiArODYsNyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qg
ewogCiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgbWF0aC4KICAgICBBYnMsCisgICAgQ2VpbCwKICAg
ICBTcXJ0LAogCiAgICAgLy8gQ2FzdHMgYW5kIHN1Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCmluZGV4IDg2ODg0ZmFiOTQ0YTM3
ZGU0YWQxN2U2Yzk2ZjVjNzUwZDQ0YzgwMDAuLjhlODM2YzBkODE0NzkyMjc3ZWI3MjQwZjVkYjYz
MGNiYTEyZmZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZURvdWJsZVRvRmxvYXQuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHZvaWQgYXR0ZW1wdFNpbXBsaWZp
Y2F0aW9uKFZhbHVlKiBjYW5kaWRhdGUpCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBYnM6CisgICAgY2FzZSBDZWlsOgogICAgIGNhc2UgU3FydDoKICAgICAgICAgaWYgKGNh
bmRpZGF0ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKICAgICAgICAg
ICAgIGNhbmRpZGF0ZS0+Y2hpbGQoMCkgPSBjYW5kaWRhdGUtPmNoaWxkKDApLT5jaGlsZCgwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA4
NTZjMWMxZTY3ZDQzODFlYzMxNzYxYThhMjI4ODBiN2YxNjRiZmFmLi5jMWIzYTBkNjQxOTIxMjAx
MmU1YTA2NTYwODQwZjdmZjJhZDNlNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC01MzgsNiArNTM4LDMyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIENlaWw6CisgICAg
ICAgICAgICAvLyBUdXJuIHRoaXM6IENlaWwoY29uc3RhbnQpCisgICAgICAgICAgICAvLyBJbnRv
IHRoaXM6IGNlaWw8dmFsdWUtPnR5cGUoKT4oY29uc3RhbnQpCisgICAgICAgICAgICBpZiAoVmFs
dWUqIGNvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNlaWxDb25zdGFudChtX3Byb2MpKSB7
CisgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogQ2VpbChDZWlsKHZhbHVlKSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQ2VpbCh2YWx1
ZSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQ2VpbCkg
eworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUdXJuIHRoaXM6IENlaWwoSVRvRCh2YWx1ZSkpCisgICAgICAgICAgICAvLyBJ
bnRvIHRoaXM6IElUb0QodmFsdWUpCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhh
dCB3b3JrcyBmb3IgSW50NjQgYmVjYXVzZSBib3RoIEFSTTY0IGFuZCB4ODZfNjQKKyAgICAgICAg
ICAgIC8vIHBlcmZvcm0gcm91bmRpbmcgd2hlbiBjb252ZXJ0aW5nIGEgNjRiaXQgaW50ZWdlciB0
byBkb3VibGUuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09
IElUb0QpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1f
dmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3FydDoKICAgICAgICAgICAgIC8v
IFR1cm4gdGhpczogU3FydChjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogc3Fy
dDx2YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlk
YXRlLmNwcAppbmRleCAyM2RkMzMzMWYxNjc5MGU0Y2JkZDFhMGFlNDNmNjY5Y2FjY2E1YmU0Li43
OTZjNThkNDIzNzVlN2ViNDdlMjlmMTVmY2ZjYjZkNzQ2Y2VmOGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yMTAsNiArMjEwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFiczoKKyAg
ICAgICAgICAgIGNhc2UgQ2VpbDoKICAgICAgICAgICAgIGNhc2UgU3FydDoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkpLCAoIkF0ICIsICp2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmlu
ZGV4IDc5M2EyZjM1MDE0NGFlMWIyOTFkOGNlZGQ4ZTZlMjg4MWMyZDVmNmYuLmU5ZDZmYjQzMGZk
Yzg3M2I0ZmJhNWU0ZTZjYWI1NjYyZmVjNGI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKQEAgLTIyNiw2ICsyMjYsMTEgQEAgVmFsdWUqIFZhbHVlOjphYnNDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitWYWx1ZSogVmFsdWU6
OmNlaWxDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOwor
fQorCiBWYWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzYzLDYgKzM2OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVj
dHMoKSBjb25zdAogICAgIGNhc2UgWlNocjoKICAgICBjYXNlIENsejoKICAgICBjYXNlIEFiczoK
KyAgICBjYXNlIENlaWw6CiAgICAgY2FzZSBTcXJ0OgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAg
ICAgY2FzZSBTRXh0ODoKQEAgLTQ0MCw2ICs0NDYsNyBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KG9wY29kZSgpLCB0eXBlKCkpOwogICAgIGNh
c2UgSWRlbnRpdHk6CiAgICAgY2FzZSBBYnM6CisgICAgY2FzZSBDZWlsOgogICAgIGNhc2UgU3Fy
dDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgpAQCAtNTQ3LDYgKzU1NCw3IEBA
IFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZh
bHVlKiBzZWNvbmRDaGlsZCkKICAgICBjYXNlIFpTaHI6CiAgICAgY2FzZSBDbHo6CiAgICAgY2Fz
ZSBBYnM6CisgICAgY2FzZSBDZWlsOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNlIENoZWNrQWRk
OgogICAgIGNhc2UgQ2hlY2tTdWI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCBh
NjExOGIxMTExODNiNjBkOWNiNzg1YzMxZTg5NmRjMjk5NmI2NjRhLi4xZjdiMmZlMTczYTAwOWNl
ZmQ1ZDY1ZTkzMDNmMWJiODRlNzYxYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgK
QEAgLTEzMiw2ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSogZG91YmxlVG9G
bG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGZsb2F0
VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBh
YnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiBjZWlsQ29u
c3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogc3FydENvbnN0YW50
KFByb2NlZHVyZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBUcmlTdGF0ZSBlcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBkYjkzODg1OTdjMWFjYzc3Y2Y3NGEzNzg4ZjAy
MDM1ZjgxMjI0YTJlLi42YjM0NmIzMzU2YjA3NGY4NzJkNTI1YTViNWQ5NDJlODUyNGU3Y2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAg
LTIzMSw2ICsyMzEsMTQgQEAgTm90NjQgVUQ6RwogICAgIFRtcAogICAgIEFkZHIKIAorQ2VpbERv
dWJsZSBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCitDZWlsRmxvYXQg
VTpGLCBVRDpGCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKwogU3FydERvdWJsZSBVOkYs
IFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAppbmRleCBlOTc5ODRlMTQ1NTYzOTk0MjMwNDFkNWM5ZWEzZTI0ZjczZmJiZDhiLi4z
OTFjZTEyZDJhMTY2MTQ2MjEyODBmYjc1YmQwMDcwMTY1MWUxOWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcApAQCAtMzIyNyw2ICszMjI3LDE3NSBAQCB2b2lkIHRlc3RBYnNBcmdX
aXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQogICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGVmZmVjdCwgZmFicyhhKSkpOwogfQogCit2b2lkIHRlc3RDZWlsQXJnKGRvdWJsZSBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBDZWlsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgY2VpbChhKSkpOworfQorCit2b2lkIHRlc3RDZWlsSW1tKGRvdWJsZSBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgY2VpbChhKSkpOworfQor
Cit2b2lkIHRlc3RDZWlsTWVtKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENl
aWwsIE9yaWdpbigpLCBsb2FkRG91YmxlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJmEpLCBjZWlsKGEpKSk7Cit9CisKK3ZvaWQgdGVzdENl
aWxDZWlsQXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGZpcnN0Q2VpbCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKSk7CisgICAgVmFsdWUqIHNlY29uZENlaWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdENlaWwpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNlY29uZENlaWwpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBjZWlsKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1l
bnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpKTsKKworICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY2VpbChzdGF0aWNfY2FzdDxkb3Vi
bGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsSVRvRDMyKGludDY0X3QgYSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVu
dEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwg
YXJndW1lbnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY2VpbChzdGF0aWNfY2Fz
dDxkb3VibGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsQXJnKGZsb2F0IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsSW1tKGZsb2F0IGEpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihjZWlsZihhKSkpKTsKK30KKwordm9pZCB0ZXN0Q2VpbE1lbShmbG9hdCBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVt
b3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsQ2VpbEFyZyhmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0Q2VpbCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogc2Vj
b25kQ2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGZp
cnN0Q2VpbCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgc2Vjb25kQ2VpbCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBjZWlsZihhKSkp
OworfQorCit2b2lkIHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFs
dWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENl
aWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOworfQorCit2b2lk
IHRlc3RDZWlsQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZs
b2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2lu
KCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwg
T3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgZG91
YmxlIGVmZmVjdCA9IDA7CisgICAgaW50MzJfdCByZXN1bHRWYWx1ZSA9IGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCAmZWZmZWN0KTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChyZXN1bHRWYWx1ZSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxm
KGEpKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgY2VpbGYoYSkpKTsKK30KKwog
dm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTc0
ODIsNiArNzY1MSwxMiBAQCB2b2lkIHBvcHVsYXRlV2l0aEludGVyZXN0aW5nVmFsdWVzKFZlY3Rv
cjxPcGVyYW5kPEZsb2F0VHlwZT4+JiBvcGVyYW5kcykKIHsKICAgICBvcGVyYW5kcy5hcHBlbmQo
eyAiMC4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuKSB9KTsKICAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiLTAuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC4pIH0pOworICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICIwLjQiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuNSkgfSk7CisgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgIi0wLjQiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0wLjUpIH0pOwor
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLjUiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuNSkg
fSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLjUiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KC0wLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLjYiLCBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KDAuNSkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLjYiLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KC0wLjUpIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxLiIsIHN0YXRp
Y19jYXN0PEZsb2F0VHlwZT4oMS4pIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMS4iLCBz
dGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0xLikgfSk7CiAgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjIu
Iiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigyLikgfSk7CkBAIC04MTAwLDYgKzgyNzUsMTkgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0
aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OwogICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAKKyAgICBSVU5fVU5BUlkodGVzdENl
aWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0Q2VpbEltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdENlaWxDZWlsQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigp
KTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJVG9ENjQsIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdENlaWxJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworCiAgICAgUlVOX1VOQVJZKHRlc3RTcXJ0QXJnLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0U3FydE1lbSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEIzT3V0cHV0LmgKaW5kZXggNGE0NDgyZDQyNzE4Nzc1MDE3MGNiODYwYjc1ZjE5NTQ5YjViZGJi
NS4uNTRiOTgxZTE2NWZkN2EwYWYxM2NmNjk0YTc5NTRiMGRiYTQ0Mzg0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVm
dCwgY2FzdFRvSW50MzIocmlnaHQpKTsgfQogICAgIExWYWx1ZSBiaXROb3QoTFZhbHVlKTsKIAot
ICAgIExWYWx1ZSBjZWlsNjQoTFZhbHVlIG9wZXJhbmQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1
ZSBjZWlsNjQoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkNlaWwsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICBMVmFsdWUg
Y3RsejMyKExWYWx1ZSBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpDbHosIG9yaWdpbigpLCBvcGVyYW5kKTsgfQogICAgIExWYWx1ZSBh
ZGRXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0K
ICAgICBMVmFsdWUgc3ViV2l0aE92ZXJmbG93MzIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyBDUkFTSCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKaW5kZXggM2Q1MmQxMjcyODBhNDM1ZTc5OTJjYzYwYTI3MTgzNjZmZmYyM2E5Ni4uNTE5
ZmZlMzNmN2IyM2E2ZTQ0NmYyNmM4OTk4OTFhYzNjMDY0Mzg0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtODI4LDExICs4MjgsMTEgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgaml0
LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1w
LmxpbmsoJmppdCk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Ci0jaWYgQ1BVKEFS
TTY0KQotICAgIGppdC5jZWlsRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotI2Vsc2UKLSAgICBqaXQuY2FsbERvdWJsZVRv
RG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihjZWlsKSk7Ci0jZW5k
aWYgLy8gQ1BVKEFSTTY0KQorICAgIGlmIChqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50Q2VpbCgp
KQorICAgICAgICBqaXQuY2VpbERvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5jYWxs
RG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwp
KTsKKwogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGRvdWJsZVJlc3VsdDsKICAg
ICBqaXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBS
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIGRvdWJsZVJlc3VsdCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6ZnBSZWdUMSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267273</attachid>
            <date>2015-12-13 16:19:38 -0800</date>
            <delta_ts>2015-12-14 14:44:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152231-20151213161902.patch</filename>
            <type>text/plain</type>
            <size>38970</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTAyYmM2NzgwZGM1MmU3ZTZkZDFkNjNjNjA0Njk2OGRiNTQ0NWY3Li4wYjY2ZTVlOGMxZjNiNzBj
ODVhY2Q1N2Y2ZWFmZmJlM2M1MWJiN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNS0xMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgY2VpbCgpIHN1cHBvcnQgZm9yIHg4NiBhbmQgZXhw
b3NlIGl0IHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTIyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3N0IHg4NiBDUFVzIHdlIGNhcmUgYWJvdXQgc3VwcG9ydCBjZWlsKCkgbmF0aXZlbHkK
KyAgICAgICAgd2l0aCB0aGUgcm91bmQgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBleHBvc2UgdGhhdCBiZWhpbmQgYSBydW50aW1lIGZsYWcsIHVzZSBpdAorICAgICAgICBpbiB0
aGUgTWF0aC5jZWlsKCkgdGh1bmsgYW5kIGV4cG9zZSBpdCB0byBCMy4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdXBw
b3J0c0Zsb2F0aW5nUG9pbnRDZWlsKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJTSDQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OnN1cHBvcnRzRmxvYXRp
bmdQb2ludENlaWwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5jcHA6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjZWlsRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNlaWxGbG9hdCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRDZWlsKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzTFpDTlQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpyb3VuZHNzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNz
X21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNkX3JyKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpyb3VuZHNkX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptZmVuY2UpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjp0aHJlZUJ5dGVPcCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmNlaWxDb25zdGFudCk6
CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25z
dEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpjZWls
Q29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzQ29uc3RGbG9hdFZhbHVlLmg6CisgICAgICAgICog
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6CisgICAgICAgICogYjMvQjNM
b3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIp
OgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAg
ICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6VmFsdWU6OmNlaWxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6ZWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6a2V5KToKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAg
ICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2VpbEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2Vp
bEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2VpbE1lbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Q2VpbENlaWxBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENlaWxJVG9ENjQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdENlaWxJVG9EMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dENlaWxBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdENlaWxBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6
OkIzOjpwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyk6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Y2VpbDY0KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2VpbFRodW5rR2VuZXJhdG9yKToKKwogMjAxNS0xMi0xMiAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtBUk1dIEFkZCB0aGUgbWlzc2lu
ZyBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUgZnVuY3Rpb25zIGFmdGVyIHIxOTM5NzQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKaW5kZXggZDYyOTgzZWEyYmUwZGEwMGU2NWMzNmZkYWNkMDIxYzA2MTllZTk2MC4uM2Rk
Y2YyYWIyNjU1MmUzMTUxYWZiNGUyMGIyNWYxNTQxZDU2MjczYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEx
OTksNiArMTE5OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRUcnVuY2F0ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRTcXJ0KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRDZWlsKCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgZW51
bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRy
dW5jYXRlU3VjY2Vzc2Z1bCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDA2NTY0OTJiOTg0NWMwN2E4YjJl
N2RmMmY5YjRmM2NmOTQ3MDAzYTEuLjYyM2YyYjY1ZjA1NDU3YTdiMzJmNTM0MjYxODcyNTY3NmMy
YzNjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC04NTYsNiArODU2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwoKSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBsb2FkRG91YmxlKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMDQ2LDYgKzEwNDcsMTIgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci52bmVnKGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNlaWxEb3VibGUoRlBSZWdpc3RlcklELCBGUFJl
Z2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludENl
aWwoKSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJU
b0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci52bW92KGZwVGVtcFJlZ2lzdGVyLCBzcmMsIHNyYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRl
eCBkZjM2ODQ1YjFjYzg5ZDQ0Njk5ODBmZTI0YTBiYzdjNTU4ZjZkZmNkLi5iMzRhNTMzNDhlNTkw
YTYzOTdhMDExMTc5MTIzOTU2Y2I5YzI3ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTYyNSw2ICs2MjUsMTIg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBjZWlsRG91YmxlKEZQUmVnaXN0ZXJJ
RCwgRlBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRDZWlsKCkpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxl
TG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsK
QEAgLTEyMDksNiArMTIxNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENlaWwoKSB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgLy8gU3RhY2sgbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnM6CiAgICAgLy8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAppbmRl
eCAxYTQwODY1NzdlZDQzOTM0MDA3YmMzMjM4MWY0YzJjN2QxNmVhYzFlLi4wZjQ2ZjhmNWEwMWI4
NGUzZDJkODVlMzM5NzNhZmY4ZTFjMjUyYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0xMDkxLDYgKzEwOTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUo
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50
U3FydCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRBYnMoKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Q2VpbCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIG1vdmVEb3VibGVU
b0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0
MikKICAgICB7CkBAIC0xNTc0LDYgKzE1NzUsMTIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5kYWJzKGRlc3QpOwogICAgIH0KIAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCBjZWlsRG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnRDZWlsKCkpOworICAgICAgICBDUkFTSCgpOwor
ICAgIH0KKwogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJl
c3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uY3BwCmluZGV4IGI0NjlmNGQyMmJhZGVkNjY1MzU5NjRkMDM3NzNk
OTcxMjJlYTZlM2YuLjBjYmYzYTc3OWQzYmI3YjIwZmZjZTk2YjYxNGMwY2FkYjNmOWU4ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uY3BwCkBAIC01NTIsNyArNTUyLDggQEAgdm9pZCBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6cHJvYmUoTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OlByb2JlRnVuY3Rp
b24gZnVuY3QKIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTdGF0ZSBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c19zc2UyQ2hlY2tTdGF0ZSA9IE5vdENoZWNrZWRTU0UyOwogI2Vu
ZGlmCiAKLU1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpMWkNOVENoZWNrU3RhdGUgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OnNfbHpjbnRDaGVja1N0YXRlID0gTFpDTlRDaGVja1N0YXRlOjpOb3RD
aGVja2VkOworTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c19zc2U0XzFDaGVja1N0YXRlID0gQ1BVSURDaGVja1N0YXRlOjpO
b3RDaGVja2VkOworTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OkNQVUlEQ2hlY2tTdGF0ZSBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6c19semNudENoZWNrU3RhdGUgPSBDUFVJRENoZWNrU3RhdGU6
Ok5vdENoZWNrZWQ7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5k
ZXggYTg1MDQ1ZWZhZDVmN2UyZGY4ZTY2N2EzMmE0NGI0MmI4MDE2MTgwMy4uZDcyZTg5ZDExNDRi
YzBhMDJlZWYwMGNkYjUyYTYxYjRjOTE3NjA4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtNTcw
LDYgKzU3MCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBkX3JyKHNyYywg
ZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGNlaWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfcnIoc3Jj
LCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRJbmZpbml0aSk7CisgICAg
fQorCisgICAgdm9pZCBjZWlsRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkSW5maW5pdGkpOworICAg
IH0KKworICAgIHZvaWQgY2VpbEZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNzX3JyKHNyYywgZHN0LCBYODZB
c3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkSW5maW5pdGkpOworICAgIH0KKworICAgIHZv
aWQgY2VpbEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIucm91bmRzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZB
c3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkSW5maW5pdGkpOworICAgIH0KIAogICAgIC8v
IE1lbW9yeSBhY2Nlc3Mgb3BlcmF0aW9uczoKICAgICAvLwpAQCAtMTc3Nyw2ICsxNzk2LDQyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludENl
aWwoKQorICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNr
U3RhdGU6Ok5vdENoZWNrZWQpIHsKKyAgICAgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09N
UElMRVIoTVNWQykKKyAgICAgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICAgICAgX19j
cHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOworI2Vs
aWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICBh
c20gKAorICAgICAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICAg
ICAiY3B1aWQ7IgorICAgICAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAg
ICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAg
OiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICAgICApOworI2Vs
c2UKKyAgICAgICAgICAgIGFzbSAoCisgICAgICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7
IgorICAgICAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAgICAgICAgImNwdWlk
OyIKKyAgICAgICAgICAgICAgICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAgICAgIm1vdmwg
JSVlY3gsICUwOyIKKyAgICAgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAg
ICAgIDoKKyAgICAgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAg
ICAgICAgICApOworI2VuZGlmCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAg
ICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/IENQVUlE
Q2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0Owor
ICAgIH0KKwogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5j
dGlvbiwgdm9pZCogYXJnMSwgdm9pZCogYXJnMik7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJP
QkUpCkBAIC0xODE3LDEwICsxODcyLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9hc3NlbWJs
ZXIuY21vdmxfcnIoY29uZCwgc3JjLCBkZXN0KTsKICNlbmRpZgogICAgIH0KLSAgICAKKwogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzTFpDTlQoKQogICAgIHsKLSAgICAgICAgaWYgKHNfbHpjbnRD
aGVja1N0YXRlID09IExaQ05UQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkgeworICAgICAgICBpZiAo
c19semNudENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKSB7CiAgICAg
ICAgICAgICBpbnQgZmxhZ3MgPSAwOwogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgICAgICAgICBp
bnQgY3B1SW5mb1s0XTsKQEAgLTE4NDksOSArMTkwNCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgICAgICApOwogI2VuZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQotICAg
ICAgICAgICAgc19semNudENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAweDIwKSA/IExaQ05UQ2hlY2tT
dGF0ZTo6U2V0IDogTFpDTlRDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgICAgIHNfbHpjbnRD
aGVja1N0YXRlID0gKGZsYWdzICYgMHgyMCkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlE
Q2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNfbHpjbnRDaGVj
a1N0YXRlID09IExaQ05UQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICByZXR1cm4gc19semNudENo
ZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MjAyMSwxMiArMjA3NiwxMyBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAotICAgIGVudW0gY2xhc3Mg
TFpDTlRDaGVja1N0YXRlIHsKKyAgICBlbnVtIGNsYXNzIENQVUlEQ2hlY2tTdGF0ZSB7CiAgICAg
ICAgIE5vdENoZWNrZWQsCiAgICAgICAgIENsZWFyLAogICAgICAgICBTZXQKICAgICB9OwotICAg
IHN0YXRpYyBMWkNOVENoZWNrU3RhdGUgc19semNudENoZWNrU3RhdGU7CisgICAgc3RhdGljIENQ
VUlEQ2hlY2tTdGF0ZSBzX3NzZTRfMUNoZWNrU3RhdGU7CisgICAgc3RhdGljIENQVUlEQ2hlY2tT
dGF0ZSBzX2x6Y250Q2hlY2tTdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggODhiM2Nk
ZjU1YjJlMWYxZjAyODYxNjJkOWQ2ODM1NjkyMDQ0ZDY5Mi4uZTBiOTQzNjZhOGUzMzFhNDA3ZDJj
MDBhMzdiYjI4Y2QzM2Y2MDE0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yNjQsNiArMjY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
T1AyX0NWVFNJMlNEX1ZzZEVkICA9IDB4MkEsCiAgICAgICAgIE9QMl9DVlRUU0QyU0lfR2RXc2Qg
PSAweDJDLAogICAgICAgICBPUDJfVUNPTUlTRF9Wc2RXc2QgID0gMHgyRSwKKyAgICAgICAgT1Ay
XzNCWVRFX0VTQ0FQRV8zQSA9IDB4M0EsCiAgICAgICAgIE9QMl9DTU9WQ0MgICAgICAgICAgPSAw
eDQwLAogICAgICAgICBPUDJfQUREU0RfVnNkV3NkICAgID0gMHg1OCwKICAgICAgICAgT1AyX01V
TFNEX1ZzZFdzZCAgICA9IDB4NTksCkBAIC0yODAsNyArMjgxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgT1AyX01PVkRfRWRWZCAgICAgICA9IDB4N0UsCiAgICAgICAgIE9QMl9KQ0NfcmVsMzIgICAg
ICAgPSAweDgwLAogICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKLSAgICAgICAg
T1AyXzNCWVRFX0VTQ0FQRSAgICA9IDB4QUUsCisgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUg
PSAweEFFLAogICAgICAgICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKICAgICAgICAgT1Ay
X01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAgIE9QMl9CU1IgICAgICAgICAgICAgPSAw
eEJELApAQCAtMjk1LDcgKzI5Niw5IEBAIHByaXZhdGU6CiAgICAgfSBUd29CeXRlT3Bjb2RlSUQ7
CiAgICAgCiAgICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgT1AzX01GRU5DRSAgICAgICAgICA9
IDB4RjAsCisgICAgICAgIE9QM19ST1VORFNTX1Zzc1dzc0liID0gMHgwQSwKKyAgICAgICAgT1Az
X1JPVU5EU0RfVnNkV3NkSWIgPSAweDBCLAorICAgICAgICBPUDNfTUZFTkNFICAgICAgICAgICA9
IDB4RjAsCiAgICAgfSBUaHJlZUJ5dGVPcGNvZGVJRDsKIAogICAgIApAQCAtMjMzNCw2ICsyMzM3
LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0Rf
VnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgZW51
bSBjbGFzcyBSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsKKyAgICAgICAgVG9OZWFyZXN0V2l0aFRp
ZXNUb0V2ZW4gPSAwLAorICAgICAgICBUb3dhcmROZWdhdGl2ZUluZmluaXRpID0gMSwKKyAgICAg
ICAgVG93YXJkSW5maW5pdGkgPSAyLAorICAgICAgICBUb3dhcmRaZXJvID0gMworICAgIH07CisK
KyAgICB2b2lkIHJvdW5kc3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0
LCBSb3VuZGluZ1R5cGUgcm91bmRpbmcpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV82Nik7CisgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllU
RV9FU0NBUEVfM0EsIE9QM19ST1VORFNTX1Zzc1dzc0liLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdp
c3RlcklEKXNyYyk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoc3RhdGljX2Nhc3Q8
dWludDhfdD4ocm91bmRpbmcpKTsKKyAgICB9CisKKyAgICB2b2lkIHJvdW5kc3NfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCwgUm91bmRpbmdUeXBlIHJv
dW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOwor
ICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNf
Uk9VTkRTU19Wc3NXc3NJYiwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kaW5nKSk7
CisgICAgfQorCisgICAgdm9pZCByb3VuZHNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCwgUm91bmRpbmdUeXBlIHJvdW5kaW5nKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOworICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVP
cChPUDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUk9VTkRTRF9Wc2RXc2RJYiwgKFJlZ2lzdGVySUQp
ZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kaW5nKSk7CisgICAgfQorCisgICAgdm9pZCByb3VuZHNk
X21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QsIFJvdW5k
aW5nVHlwZSByb3VuZGluZykKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
U1NFXzY2KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQ
RV8zQSwgT1AzX1JPVU5EU0RfVnNkV3NkSWIsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChzdGF0aWNfY2FzdDx1aW50OF90Pihy
b3VuZGluZykpOworICAgIH0KKwogICAgIC8vIE1pc2MgaW5zdHJ1Y3Rpb25zOgogCiAgICAgdm9p
ZCBpbnQzKCkKQEAgLTIzNTMsNyArMjM5MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIG1m
ZW5jZSgpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDNfTUZFTkNF
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwg
T1AzX01GRU5DRSk7CiAgICAgfQogCiAgICAgLy8gQXNzZW1ibGVyIGFkbWluIG1ldGhvZHM6CkBA
IC0yODMyLDEyICsyODcwLDMyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAg
ICAgIHZvaWQgdGhyZWVCeXRlT3AoVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlKQorICAgICAgICB2
b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVP
cGNvZGVJRCBvcGNvZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNw
YWNlKG1heEluc3RydWN0aW9uU2l6ZSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKHR3b0J5dGVQcmVmaXgpOworICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcChUd29C
eXRlT3Bjb2RlSUQgdHdvQnl0ZVByZWZpeCwgVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQg
cmVnLCBSZWdpc3RlcklEIHJtKQorICAgICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOworICAgICAgICAgICAgZW1pdFJleElmTmVlZGVk
KHJlZywgMCwgcm0pOworICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOworICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29C
eXRlUHJlZml4KTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKKyAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJl
ZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IGRpc3Bs
YWNlbWVudCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4
SW5zdHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJh
c2UpOwogICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NB
UEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUDJfM0JZVEVfRVND
QVBFKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZp
eCk7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAg
ICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGRpc3BsYWNlbWVudCk7CiAgICAgICAgIH0K
IAogI2lmIENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdERvdWJsZVZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
RG91YmxlVmFsdWUuY3BwCmluZGV4IGEwNDFjMGZkYTM0NmQ1NTk5ZDdkODA1YzdjN2RkNTUxYWZl
NjI5MDUuLjI1YjBhMzNmYWNjOWM2OTIzODQxYjc2ZjIwMGRhNzJlNGU3M2E0OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCkBAIC05Miw2
ICs5MiwxMSBAQCBWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6YWJzQ29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmln
aW4oKSwgZmFicyhtX3ZhbHVlKSk7CiB9CiAKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpjZWls
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxD
b25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgY2VpbChtX3ZhbHVlKSk7Cit9CisKIFZhbHVlKiBD
b25zdERvdWJsZVZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogewog
ICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3FydChtX3Zh
bHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJs
ZVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgK
aW5kZXggZGE5YTM5NWViODhjMWY3MWVhZmRhOTE1MjAxZTI1M2M5Mjk1NmQzYi4uY2NlMzQwZjU0
YmFkOTMwMTlmOTJhNjM4OTlmNzIxNTJhNGI2YTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgVmFsdWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgVmFsdWUqIGRvdWJsZVRvRmxvYXRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWYWx1ZSogYWJzQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmFsdWUqIGNlaWxDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
VHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5k
ZXggNDU4N2E4NzQ4ZWNjNmY0ZGQxZjMxMWU0OTZjYzMzMDM0ODMxM2FkOC4uNGM1N2I4ZTdiMjM0
MmY4YTAzZWVmN2E2YWRkMTZhMzc1OTkyY2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC05Miw2ICs5MiwxMSBAQCBWYWx1ZSogQ29u
c3RGbG9hdFZhbHVlOjphYnNDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiAgICAgcmV0
dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIHN0YXRpY19jYXN0PGZsb2F0
PihmYWJzKG1fdmFsdWUpKSk7CiB9CiAKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmNlaWxDb25z
dGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0
RmxvYXRWYWx1ZT4ob3JpZ2luKCksIGNlaWxmKG1fdmFsdWUpKTsKK30KKwogVmFsdWUqIENvbnN0
RmxvYXRWYWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICBy
ZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHNxcnQobV92YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RmxvYXRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RG
bG9hdFZhbHVlLmgKaW5kZXggZGMzOGJlM2Y1NDU0NDdjODVhN2NhNDhkY2UxY2E3YjAxNDFhZjE5
My4uOWY5OWNiMjYwNDhhYTQ4YWM2MzU2NGIwZjg2YWQxZTMwMDQ2Mjc3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKQEAgLTUwLDYgKzUwLDcgQEAg
cHVibGljOgogICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFZhbHVlKiBmbG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGFic0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZhbHVlKiBjZWlsQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgVmFsdWUqIHNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCAyNzBjYzQxYTU0MjI1NDIz
NTNmNWNlN2Q4OGQ1MzNjZGQ5ZDQ1MTJlLi42NjhmNjAwMzYzOTYyNWFhY2U5ZDQ0YWY2YWM4NThh
YzJlOTc3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0zMCw4ICszMCwxMCBAQAog
CiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNl
cnRpb25TZXQuaCIKKyNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0
RG91YmxlVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogCkBAIC04NSw2ICs4NywyNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQ2Vp
bDogeworICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGlu
Z1BvaW50Q2VpbCgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIFZhbHVlKiBmdW5jdGlvbkFkZHJlc3MgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlm
IChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bkFkZHJlc3MgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3RQdHJWYWx1ZT4obV9pbmRleCwg
bV9vcmlnaW4sIGNlaWwpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUo
KSA9PSBGbG9hdCkKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBjZWlsZik7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxDQ2FsbFZhbHVlPihtX2luZGV4LAorICAgICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT50eXBlKCksCisgICAgICAgICAgICAgICAgICAgIG1fb3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBFZmZlY3RzOjpub25lKCksCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGJiZTA5MmU4YTlmOGQwZWU3OTZhMmIxMDFkNGQ4
Mzc1MTEzMDkzMDQuLjkyNzZhZDJiZDdmNDZmYmE2MGFlYWIyYjA4NjRiYzQ5MTUwNTM0MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xNTA1LDYgKzE1
MDUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQ2VpbDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6
T29wcywgQ2VpbERvdWJsZSwgQ2VpbEZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFNxcnQ6IHsKICAgICAgICAg
ICAgIGFwcGVuZFVuT3A8QWlyOjpPb3BzLCBBaXI6Ok9vcHMsIFNxcnREb3VibGUsIFNxcnRGbG9h
dD4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5jcHAKaW5kZXggMzZlMjBlYzBkYjUwZWJjNTYzNjlmNTljMzQyZTM0
M2JlNWI2NWYyYi4uOGFiNGI5ZWJmMDQ4NTdlNjQ4MDM4NDExMWQxZGFjZDVmMDA4NTA2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2Fz
ZSBBYnM6CiAgICAgICAgIG91dC5wcmludCgiQWJzIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENlaWw6CisgICAgICAgIG91dC5wcmludCgiQ2VpbCIpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBTcXJ0OgogICAgICAgICBvdXQucHJpbnQoIlNxcnQiKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCAxYzBiODZhMzZlYjgxZWUzNjFj
YzVmODhhMmFjZTNkZTY3ZDdhMzk1Li41YmQ0ZjI0MDEzMjkzOWQxN2QwYmU1Y2E1MDk5MGE0Nzcy
Nzk3Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtODYsNiArODYsNyBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogCiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgbWF0aC4K
ICAgICBBYnMsCisgICAgQ2VpbCwKICAgICBTcXJ0LAogCiAgICAgLy8gQ2FzdHMgYW5kIHN1Y2gu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zs
b2F0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQu
Y3BwCmluZGV4IDg2ODg0ZmFiOTQ0YTM3ZGU0YWQxN2U2Yzk2ZjVjNzUwZDQ0YzgwMDAuLjhlODM2
YzBkODE0NzkyMjc3ZWI3MjQwZjVkYjYzMGNiYTEyZmZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC00OSw2ICs0OSw3
IEBAIHZvaWQgYXR0ZW1wdFNpbXBsaWZpY2F0aW9uKFZhbHVlKiBjYW5kaWRhdGUpCiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBYnM6CisgICAgY2FzZSBDZWlsOgogICAgIGNh
c2UgU3FydDoKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZs
b2F0VG9Eb3VibGUpIHsKICAgICAgICAgICAgIGNhbmRpZGF0ZS0+Y2hpbGQoMCkgPSBjYW5kaWRh
dGUtPmNoaWxkKDApLT5jaGlsZCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA4NTZjMWMxZTY3ZDQzODFlYzMxNzYxYThhMjI4ODBiN2Yx
NjRiZmFmLi5jMWIzYTBkNjQxOTIxMjAxMmU1YTA2NTYwODQwZjdmZjJhZDNlNzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC01MzgsNiAr
NTM4LDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAor
ICAgICAgICBjYXNlIENlaWw6CisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IENlaWwoY29uc3Rh
bnQpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGNlaWw8dmFsdWUtPnR5cGUoKT4oY29uc3Rh
bnQpCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMCkt
PmNlaWxDb25zdGFudChtX3Byb2MpKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdW
YWx1ZShjb25zdGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQ2VpbChDZWlsKHZhbHVlKSkKKyAgICAgICAgICAg
IC8vIEludG8gdGhpczogQ2VpbCh2YWx1ZSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgwKS0+b3Bjb2RlKCkgPT0gQ2VpbCkgeworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IENlaWwoSVRvRCh2
YWx1ZSkpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IElUb0QodmFsdWUpCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gVGhhdCB3b3JrcyBmb3IgSW50NjQgYmVjYXVzZSBib3RoIEFS
TTY0IGFuZCB4ODZfNjQKKyAgICAgICAgICAgIC8vIHBlcmZvcm0gcm91bmRpbmcgd2hlbiBjb252
ZXJ0aW5nIGEgNjRiaXQgaW50ZWdlciB0byBkb3VibGUuCisgICAgICAgICAgICBpZiAobV92YWx1
ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IElUb0QpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNh
c2UgU3FydDoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3FydChjb25zdGFudCkKICAgICAg
ICAgICAgIC8vIEludG8gdGhpczogc3FydDx2YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCAyM2RkMzMzMWYxNjc5MGU0Y2Jk
ZDFhMGFlNDNmNjY5Y2FjY2E1YmU0Li43OTZjNThkNDIzNzVlN2ViNDdlMjlmMTVmY2ZjYjZkNzQ2
Y2VmOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yMTAs
NiArMjEwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFiczoKKyAgICAgICAgICAgIGNhc2UgQ2VpbDoKICAgICAgICAgICAg
IGNhc2UgU3FydDoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxv
YXQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IDc5M2EyZjM1MDE0NGFlMWIyOTFkOGNlZGQ4ZTZl
Mjg4MWMyZDVmNmYuLmU5ZDZmYjQzMGZkYzg3M2I0ZmJhNWU0ZTZjYWI1NjYyZmVjNGI1Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKQEAgLTIyNiw2ICsyMjYsMTEgQEAgVmFs
dWUqIFZhbHVlOjphYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCitWYWx1ZSogVmFsdWU6OmNlaWxDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAor
eworICAgIHJldHVybiBudWxscHRyOworfQorCiBWYWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzYzLDYgKzM2OCw3
IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgWlNocjoKICAgICBj
YXNlIENsejoKICAgICBjYXNlIEFiczoKKyAgICBjYXNlIENlaWw6CiAgICAgY2FzZSBTcXJ0Ogog
ICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBTRXh0ODoKQEAgLTQ0MCw2ICs0NDYsNyBA
QCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KG9w
Y29kZSgpLCB0eXBlKCkpOwogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgY2FzZSBBYnM6CisgICAg
Y2FzZSBDZWlsOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4
dDE2OgpAQCAtNTQ3LDYgKzU1NCw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9wY29k
ZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAgICBjYXNlIFpTaHI6
CiAgICAgY2FzZSBDbHo6CiAgICAgY2FzZSBBYnM6CisgICAgY2FzZSBDZWlsOgogICAgIGNhc2Ug
U3FydDoKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuaAppbmRleCBhNjExOGIxMTExODNiNjBkOWNiNzg1YzMxZTg5NmRjMjk5
NmI2NjRhLi4xZjdiMmZlMTczYTAwOWNlZmQ1ZDY1ZTkzMDNmMWJiODRlNzYxYzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTEzMiw2ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgVmFsdWUqIGZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25z
dDsKICAgICB2aXJ0dWFsIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFZhbHVlKiBjZWlsQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmly
dHVhbCBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBUcmlTdGF0ZSBlcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBkYjkz
ODg1OTdjMWFjYzc3Y2Y3NGEzNzg4ZjAyMDM1ZjgxMjI0YTJlLi42YjM0NmIzMzU2YjA3NGY4NzJk
NTI1YTViNWQ5NDJlODUyNGU3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTIzMSw2ICsyMzEsMTQgQEAgTm90NjQgVUQ6RwogICAg
IFRtcAogICAgIEFkZHIKIAorQ2VpbERvdWJsZSBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAg
IEFkZHIsIFRtcAorCitDZWlsRmxvYXQgVTpGLCBVRDpGCisgICAgVG1wLCBUbXAKKyAgICBBZGRy
LCBUbXAKKwogU3FydERvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRt
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBlOTc5ODRlMTQ1NTYzOTk0MjMw
NDFkNWM5ZWEzZTI0ZjczZmJiZDhiLi4zOTFjZTEyZDJhMTY2MTQ2MjEyODBmYjc1YmQwMDcwMTY1
MWUxOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtMzIyNyw2ICszMjI3
LDE3NSBAQCB2b2lkIHRlc3RBYnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9h
dCBhKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgZmFicyhhKSkpOwogfQogCit2b2lk
IHRlc3RDZWlsQXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBDZWlsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgY2VpbChhKSkpOworfQorCit2b2lkIHRl
c3RDZWlsSW1tKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwg
YXJndW1lbnQpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jKSwgY2VpbChhKSkpOworfQorCit2b2lkIHRlc3RDZWlsTWVtKGRvdWJsZSBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFs
dWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBsb2FkRG91YmxlKSk7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJmEpLCBjZWls
KGEpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxDZWlsQXJnKGRvdWJsZSBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGZpcnN0Q2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSk7CisgICAgVmFsdWUqIHNlY29uZENlaWwg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBmaXJzdENlaWwp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHNlY29uZENlaWwpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIGEpLCBjZWlsKGEpKSk7Cit9CisKK3ZvaWQgdGVzdENlaWxJVG9ENjQoaW50
NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUp
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgY2VpbChzdGF0aWNfY2FzdDxkb3VibGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsSVRv
RDMyKGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgYXJndW1lbnQpOworCisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFyZ3VtZW50QXNE
b3VibGUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgY2VpbChzdGF0aWNfY2FzdDxkb3VibGU+KGEpKSkpOworfQorCit2b2lkIHRlc3RD
ZWlsQXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBPcmlnaW4oKSwgYXJndW1lbnQp
OworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRl
c3RDZWlsSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5h
cHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihjZWlsZihhKSkpKTsKK30KKwor
dm9pZCB0ZXN0Q2VpbE1lbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDZWlsLCBP
cmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQz
Mik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
ICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RD
ZWlsQ2VpbEFyZyhmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZp
cnN0Q2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKyAgICBWYWx1ZSogc2Vjb25kQ2VpbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQ2VpbCwgT3JpZ2luKCksIGZpcnN0Q2VpbCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kQ2VpbCk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSkpLCBjZWlsZihhKSkpOworfQorCit2b2lkIHRlc3RDZWlsQXJnV2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAg
IFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIENlaWwsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGNlaWxmKGEpKSkpOworfQorCit2b2lkIHRlc3RDZWlsQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNv
bnZlcnNpb24oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQ2VpbCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUq
IGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0MzIpOworCisgICAgZG91YmxlIGVmZmVjdCA9IDA7CisgICAgaW50MzJfdCByZXN1
bHRWYWx1ZSA9IGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEpLCAmZWZmZWN0KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChyZXN1bHRWYWx1ZSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGNlaWxmKGEpKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVm
ZmVjdCwgY2VpbGYoYSkpKTsKK30KKwogdm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTc0ODIsNiArNzY1MSwxMiBAQCB2b2lkIHBvcHVsYXRlV2l0
aEludGVyZXN0aW5nVmFsdWVzKFZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+JiBvcGVyYW5kcykK
IHsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAu
KSB9KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTAuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBl
PigtMC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLjQiLCBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KDAuNSkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLjQiLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KC0wLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLjUiLCBzdGF0
aWNfY2FzdDxGbG9hdFR5cGU+KDAuNSkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0wLjUi
LCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0wLjUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7
ICIwLjYiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuNSkgfSk7CisgICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIi0wLjYiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0wLjUpIH0pOwogICAgIG9wZXJh
bmRzLmFwcGVuZCh7ICIxLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMS4pIH0pOwogICAgIG9w
ZXJhbmRzLmFwcGVuZCh7ICItMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0xLikgfSk7CiAg
ICAgb3BlcmFuZHMuYXBwZW5kKHsgIjIuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigyLikgfSk7
CkBAIC04MTAwLDYgKzgyNzUsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAg
IFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aEVm
ZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CiAKKyAgICBSVU5fVU5BUlkodGVzdENlaWxBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxDZWlsQXJnLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJVG9ENjQs
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsSVRvRDMyLCBpbnQzMk9w
ZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENlaWxJbW0sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsTWVtLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbENlaWxBcmcsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDZWlsQXJn
V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q2VpbEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJz
aW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworCiAgICAgUlVOX1VOQVJZKHRl
c3RTcXJ0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5B
UlkodGVzdFNxcnRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJV
Tl9VTkFSWSh0ZXN0U3FydE1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggNGE0NDgyZDQyNzE4Nzc1
MDE3MGNiODYwYjc1ZjE5NTQ5YjViZGJiNS4uNTRiOTgxZTE2NWZkN2EwYWYxM2NmNjk0YTc5NTRi
MGRiYTQ0Mzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAt
MTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsgfQogICAgIExW
YWx1ZSBiaXROb3QoTFZhbHVlKTsKIAotICAgIExWYWx1ZSBjZWlsNjQoTFZhbHVlIG9wZXJhbmQp
IHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBjZWlsNjQoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNlaWwsIG9yaWdpbigp
LCB2YWx1ZSk7IH0KICAgICBMVmFsdWUgY3RsejMyKExWYWx1ZSBvcGVyYW5kKSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDbHosIG9yaWdpbigpLCBv
cGVyYW5kKTsgfQogICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgc3ViV2l0aE92ZXJmbG93MzIoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggM2Q1MmQxMjcyODBhNDM1ZTc5OTJj
YzYwYTI3MTgzNjZmZmYyM2E5Ni4uNTE5ZmZlMzNmN2IyM2E2ZTQ0NmYyNmM4OTk4OTFhYzNjMDY0
Mzg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cApAQCAtODI4LDExICs4MjgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dl
bmVyYXRvcihWTSogdm0pCiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKICAgICBub25JbnRKdW1wLmxpbmsoJmppdCk7CiAgICAgaml0LmxvYWREb3VibGVB
cmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7Ci0jaWYgQ1BVKEFSTTY0KQotICAgIGppdC5jZWlsRG91YmxlKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotI2Vs
c2UKLSAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJs
ZU9wV3JhcHBlcihjZWlsKSk7Ci0jZW5kaWYgLy8gQ1BVKEFSTTY0KQorICAgIGlmIChqaXQuc3Vw
cG9ydHNGbG9hdGluZ1BvaW50Q2VpbCgpKQorICAgICAgICBqaXQuY2VpbERvdWJsZShTcGVjaWFs
aXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAg
ICBlbHNlCisgICAgICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVu
YXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpKTsKKwogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1
bXBMaXN0IGRvdWJsZVJlc3VsdDsKICAgICBqaXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IGRvdWJsZVJlc3VsdCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7CiAgICAgaml0LnJl
dHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>