<?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>52780</bug_id>
          
          <creation_ts>2011-01-19 20:45:56 -0800</creation_ts>
          <short_desc>TransformationMatrix multiply operations apply operands in wrong order.</short_desc>
          <delta_ts>2011-01-24 11:42:21 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Stephens">shanestephens</reporter>
          <assigned_to name="Shane Stephens">shanestephens</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337086</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-01-19 20:45:56 -0800</bug_when>
    <thetext>TransformationMatrix multiply operations apply operands in wrong order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337090</commentid>
    <comment_count>1</comment_count>
      <attachid>79547</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-01-19 20:48:13 -0800</bug_when>
    <thetext>Created attachment 79547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337102</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 21:15:04 -0800</bug_when>
    <thetext>Attachment 79547 did not build on chromium:
Build output: http://queues.webkit.org/results/7578232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337103</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-19 21:18:08 -0800</bug_when>
    <thetext>Attachment 79547 did not build on qt:
Build output: http://queues.webkit.org/results/7515234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337827</commentid>
    <comment_count>4</comment_count>
      <attachid>79686</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-01-20 19:51:14 -0800</bug_when>
    <thetext>Created attachment 79686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338147</commentid>
    <comment_count>5</comment_count>
      <attachid>79686</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-21 10:32:18 -0800</bug_when>
    <thetext>Comment on attachment 79686
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=79686&amp;action=review

r=me with a bit more detail in the Changelog.

&gt; Source/WebCore/ChangeLog:10
&gt; +

Could you be a bit more specific about the change? You&apos;re fixing a very confusing part of the code and think you&apos;re doing two things. One is flipping the order used to combine matrix, the other is changing multLeft to multiply. This is really doing 2 things: it fixes the incorrect naming of the function being called implicitly flipping the order of the operation. All that gets buried in the name change, so if you could add another sentence or two here, it would make it more clear to future coders.

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:61
&gt; +// the array refers to the column that the element lies in; the second the row.

This last sentence is awkward. either say &quot;the second, the row&quot;, or better &quot;the second index refers to the row&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338784</commentid>
    <comment_count>6</comment_count>
      <attachid>79882</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-01-23 16:18:52 -0800</bug_when>
    <thetext>Created attachment 79882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339142</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-24 11:41:30 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 79882:

animations/dynamic-stylesheet-loading.html bug 52669 (author: cmarrin@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339144</commentid>
    <comment_count>8</comment_count>
      <attachid>79882</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-24 11:42:15 -0800</bug_when>
    <thetext>Comment on attachment 79882
Patch

Clearing flags on attachment: 79882

Committed r76537: &lt;http://trac.webkit.org/changeset/76537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339145</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-24 11:42:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79547</attachid>
            <date>2011-01-19 20:48:13 -0800</date>
            <delta_ts>2011-01-20 19:51:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52780-20110120154810.patch</filename>
            <type>text/plain</type>
            <size>14801</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMWZkYWNmNDc2YzQ3ODMxOGFlZDJlMzA2ZGUwOTIyY2YxN2I0YzU5Li4y
N2IwMTgxN2Q4MWJlN2I1MGI2OWE1ZGUxZGY2ZGNkZGVlOGU5Njg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDEtMTkgIFNoYW5lIFN0ZXBoZW5zICA8c2hhbmVzdGVwaGVuc0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG11bHRpcGx5IG9wZXJhdGlvbnMgYXBwbHkgb3BlcmFu
ZHMgaW4gd3Jvbmcgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01Mjc4MAorCisgICAgICAgIFJldmVyc2VzIG9yZGVyIG9mIG11bHRpcGx5IG9w
ZXJhdGlvbnMsIHJlbW92ZXMgbXVsdExlZnQsIGZpeGVzIGFsbAorICAgICAgICBjYWxsIHNpdGVz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyBwYXRjaCBhZGRzIG5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZU5vblVuaWZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlM2QpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpza2V3KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqPSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwYXJlbmN5Q2xpcEJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1T
dGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisKIDIwMTEtMDEtMTkgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBOb3QgcmV2aWV3ZWQs
IHJldmVydHMgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAppbmRleCAxNGY2YjRlNDJmYmVjYjRjZWU1YTQ5MGNiNDAxMWFjYjA4Y2ZhZmZj
Li4xNjNlYWM4MjUxOWM3M2I0NWMzNWVhMmRjZTgzYmViZmZhNmUwOTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtOTEsOSArOTEsNyBAQCBQYXNzUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRDU1NNYXRyaXgq
IHNlY29uZE1hdAogICAgIGlmICghc2Vjb25kTWF0cml4KQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcChzZWNvbmRNYXRyaXgtPm1fbWF0cml4KTsKLSAg
ICB0bXAubXVsdGlwbHkobV9tYXRyaXgpOwotICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNy
ZWF0ZSh0bXApOworICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX21hdHJpeCkubXVsdGlwbHkoc2Vjb25kTWF0cml4LT5tX21hdHJpeCkpOwog
fQogCiBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNl
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5oCmluZGV4IDBhMGFhZjBhOTlhMTI4OGVkNDAxOTExNzg1ODYzN2VlZjc5
MDAzZmUuLmRkNWRhZTJkZWNlOTY0MWQ4NmNiMmUxOTYyZWVlYjg5MzdiMWJlYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJikgY29uc3QKICAgICB7Ci0gICAgICAgIHRyYW5z
Zm9ybS5tdWx0TGVmdChUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCkpOworICAgICAgICB0
cmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRyaXgpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uLmgKaW5kZXggZmQ5YjI3ZWJlMTA4MjczNzY1ZjhkODkxMWRhY2I2ZTk2OTdkMDJj
Yy4uNmY0ZTcyNTZjYzI5YzFmNzI3MDZmZjczMGJhM2U2YWZjM2RkYTZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEludFNpemUmKSBjb25zdAogICAgIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbWF0cml4KG1fYSwgbV9iLCBtX2MsIG1fZCwgbV9lLCBtX2YpOwotICAgICAgICB0cmFu
c2Zvcm0ubXVsdExlZnQoVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KSk7CisgICAgICAgIHRy
YW5zZm9ybS5tdWx0aXBseShtYXRyaXgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDM1N2ExNDBlMzFj
N2ZlNjk5YzUzMTk4NzQ4ZDZkNmM2YTIwMGZjMDguLmFhNmY2ZGJhZjFhZWUxNGU3NTAwNGViMjMx
ODM2OWU5ZGVhZjQ5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CkBAIC01NSwyMSArNTUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gd2VibWFzdGVycyAt
IGFyZSB0byBiZSBoZWxkIHJlc3BvbnNpYmxlLiBCYXNpY2FsbHksIGRvbid0IGJlIGEgamVyaywg
YW5kIHJlbWVtYmVyIHRoYXQgYW55dGhpbmcgZnJlZSBjb21lcyAKIC8vIHdpdGggbm8gZ3VhcmFu
dGVlLgogCi0vLyBBIE5vdGUgQWJvdXQgcm93LW1ham9yIHZzLiBjb2x1bW4gbWFqb3IgbWF0cml4
ZXMKKy8vIEEgY2xhcmlmaWNhdGlvbiBhYm91dCB0aGUgc3RvcmFnZSBvZiBtYXRyaXggZWxlbWVu
dHMKIC8vCi0vLyBUaGUgY2xpZW50cyBvZiB0aGlzIGNsYXNzIChDU1NNYXRyaXggYW5kIFNWR01h
dHJpeCkgYXNzdW1lIGEgY29sdW1uLW1ham9yIG9yZGVyaW5nLgotLy8gVGhhdCBtZWFucyB0aGF0
IHdoZW4gdGhlIG1hdHJpeCBpcyBpbml0aWFsaXplZCB3aXRoIDE2IHZhbHVlcywgdGhlIGZpcnN0
IDQgdmFsdWVzCi0vLyBnbyBpbiB0aGUgNCByb3dzIG9mIHRoZSBmaXJzdCBjb2x1bW4sIGV0Yy4g
QW5kIGluIHRoZSBkZXJlZmVyZW5jaW5nIGNhbGxzLCB0aGUgZmlyc3QKLS8vIGRpZ2l0IGlzIHRo
ZSBjb2x1bW4gKGUuZy4sIG0yMygpIGlzIGNvbHVtbiAyIHJvdyAzKS4gQmVjYXVzZSBDKysgdXNl
cyByb3ctbWFqb3IgYXJyYXlzIAotLy8gdGhlIGludGVybmFsIG1hdHJpeCBpcyBzdG9yZWQgaW4g
cm93LW1ham9yIG9yZGVyLCBzbyBtWzJdWzBdIG1lYW5zIHJvdyAyLCBjb2x1bW4gMC4gVGhpcwot
Ly8gaGFzIG5vIGJlYXJpbmcgb24gaG93IHRoZSBtYXRyaXggaXMgdmlld2VkIG9uIHRoZSBvdXRz
aWRlLCBzaW5jZSBhbGwgYWNjZXNzIGlzIGRvbmUKLS8vIHdpdGggZnVuY3Rpb24gY2FsbHMuIEJ1
dCBpdCBkb2VzIGhlbHAgbWFrZSB0aGUgY29kZSBtb3JlIGNsZWFyIGlmIHlvdSBrbm93IHRoYXQu
CisvLyBUaGlzIGNsYXNzIHVzZXMgYSAyIGRpbWVuc2lvbmFsIGFycmF5IGludGVybmFsbHkgdG8g
c3RvcmUgdGhlIGVsZW1lbnRzIG9mIHRoZSBtYXRyaXguICBUaGUgZmlyc3QgaW5kZXggaW50byAK
Ky8vIHRoZSBhcnJheSByZWZlcnMgdG8gdGhlIGNvbHVtbiB0aGF0IHRoZSBlbGVtZW50IGxpZXMg
aW47IHRoZSBzZWNvbmQgdGhlIHJvdy4KIC8vCi0vLyBGSVhNRTogTXVsdGlwbHkgY2FsbHMgYXJl
IG5hbWVkIGZvciB3aGF0IHRoZXkgZG8gaW4gdGhlIGludGVybmFsLCByb3ctbWFqb3Igd29ybGQu
IAotLy8gbXVsdExlZnQgaXMgYWN0dWFsbHkgYSBtdWx0UmlnaHQgaW4gYSBjb2x1bW4tbWFqb3Ig
d29ybGQsIGFuZCBtdWx0aXBseSBpcyBhIG11bHRMZWZ0IAotLy8gaW4gYSBjb2x1bW4tbWFqb3Ig
d29ybGQuIEZvciBub3cgSSd2ZSBsZWZ0IGl0IHRoYXQgd2F5IHRvIGF2b2lkIHRvbyBtYW55IGNv
bmZ1c2luZyAKLS8vIGNoYW5nZXMgdG8gdGhlIGNvZGUuIEluIHBhcnRpY3VsYXIgQWZmaW5lVHJh
bnNmb3JtIHVzZXMgdGhlc2Ugc2FtZSB0ZXJtcyBmb3IgdGhlCi0vLyBvcHBvc2l0ZSBvcGVyYXRp
b25zLiBTbyB3ZSBoYXZlIHRvIGJlIFZFUlkgY2FyZWZ1bCB3aGVuIHdlIGNoYW5nZSB0aGVtLgor
Ly8gSW4gb3RoZXIgd29yZHMsIHRoaXMgaXMgdGhlIGxheW91dCBvZiB0aGUgbWF0cml4OgorLy8K
Ky8vIHwgbV9tYXRyaXhbMF1bMF0gbV9tYXRyaXhbMV1bMF0gbV9tYXRyaXhbMl1bMF0gbV9tYXRy
aXhbM11bMF0gfAorLy8gfCBtX21hdHJpeFswXVsxXSBtX21hdHJpeFsxXVsxXSBtX21hdHJpeFsy
XVsxXSBtX21hdHJpeFszXVsxXSB8CisvLyB8IG1fbWF0cml4WzBdWzJdIG1fbWF0cml4WzFdWzJd
IG1fbWF0cml4WzJdWzJdIG1fbWF0cml4WzNdWzJdIHwKKy8vIHwgbV9tYXRyaXhbMF1bM10gbV9t
YXRyaXhbMV1bM10gbV9tYXRyaXhbMl1bM10gbV9tYXRyaXhbM11bM10gfAogCiB0eXBlZGVmIGRv
dWJsZSBWZWN0b3I0WzRdOwogdHlwZWRlZiBkb3VibGUgVmVjdG9yM1szXTsKQEAgLTYzNCw3ICs2
MzAsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxl
Tm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeQogICAgIG1hdC5tX21hdHJpeFswXVswXSA9
IHN4OwogICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IHN5OwogCi0gICAgbXVsdExlZnQobWF0KTsK
KyAgICBtdWx0aXBseShtYXQpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtNjQ1LDcgKzY0
MSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUz
ZChkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91YmxlCiAgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0g
c3k7CiAgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gc3o7CiAKLSAgICBtdWx0TGVmdChtYXQpOwor
ICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC03MzIsNyArNzI4
LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUz
ZChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZQogICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0g
PSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOwogICAgICAg
ICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOwogICAgIH0KLSAgICBtdWx0TGVmdChtYXQpOwor
ICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC03ODMsNyArNzc5
LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUz
ZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBt
YXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOwogICAgIG1hdC5t
X21hdHJpeFszXVszXSA9IDEuMGY7CiAgICAgCi0gICAgcm1hdC5tdWx0TGVmdChtYXQpOworICAg
IHJtYXQubXVsdGlwbHkobWF0KTsKIAogICAgIHJ4IC89IDIuMGY7CiAgICAgc2luQSA9IHNpbihy
eCk7CkBAIC04MDMsOSArNzk5LDkgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0
aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKICAgICBtYXQu
bV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0g
PSAwLjBmOwogICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CiAgICAgCi0gICAgcm1hdC5t
dWx0TGVmdChtYXQpOworICAgIHJtYXQubXVsdGlwbHkobWF0KTsKIAotICAgIG11bHRMZWZ0KHJt
YXQpOworICAgIG11bHRpcGx5KHJtYXQpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtODY5
LDcgKzg2NSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2tldyhkb3VibGUgc3gsIGRvdWJsZSBzeSkKICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSB0YW4o
c3kpOyAvLyBub3RlIHRoYXQgdGhlIHkgc2hlYXIgZ29lcyBpbiB0aGUgZmlyc3Qgcm93CiAgICAg
bWF0Lm1fbWF0cml4WzFdWzBdID0gdGFuKHN4KTsgLy8gYW5kIHRoZSB4IHNoZWFyIGluIHRoZSBz
ZWNvbmQgcm93CiAKLSAgICBtdWx0TGVmdChtYXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAgICAg
cmV0dXJuICp0aGlzOwogfQogCkBAIC04NzksNyArODc1LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRvdWJsZSBwKQogICAg
IGlmIChwICE9IDApCiAgICAgICAgIG1hdC5tX21hdHJpeFsyXVszXSA9IC0xL3A7CiAKLSAgICBt
dWx0TGVmdChtYXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQog
CkBAIC04OTYsNyArODkyLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnJlY3RUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb24KIC8vCiAvLyAqdGhp
cyA9IG1hdCAqICp0aGlzCiAvLwotVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjptdWx0TGVmdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQorVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQogewogICAgIE1hdHJpeDQgdG1wOwogICAgIApAQCAtMTEw
NSwyNSArMTEwMSwyNSBAQCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2UoY29u
c3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIg
KiAoeHogLSB5dyksIDIgKiAoeXogKyB4dyksIDEgLSAyICogKHh4ICsgeXkpLCAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMSk7CiAgICAgCi0gICAgbXVsdExlZnQocm90
YXRpb25NYXRyaXgpOworICAgIG11bHRpcGx5KHJvdGF0aW9uTWF0cml4KTsKICAgICAKICAgICAv
LyBub3cgYXBwbHkgc2tldwogICAgIGlmIChkZWNvbXAuc2tld1laKSB7CiAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRtcDsKICAgICAgICAgdG1wLnNldE0zMigoZmxvYXQpIGRlY29tcC5z
a2V3WVopOwotICAgICAgICBtdWx0TGVmdCh0bXApOworICAgICAgICBtdWx0aXBseSh0bXApOwog
ICAgIH0KICAgICAKICAgICBpZiAoZGVjb21wLnNrZXdYWikgewogICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0bXA7CiAgICAgICAgIHRtcC5zZXRNMzEoKGZsb2F0KSBkZWNvbXAuc2tld1ha
KTsKLSAgICAgICAgbXVsdExlZnQodG1wKTsKKyAgICAgICAgbXVsdGlwbHkodG1wKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKGRlY29tcC5za2V3WFkpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdG1wOwogICAgICAgICB0bXAuc2V0TTIxKChmbG9hdCkgZGVjb21wLnNrZXdYWSk7Ci0g
ICAgICAgIG11bHRMZWZ0KHRtcCk7CisgICAgICAgIG11bHRpcGx5KHRtcCk7CiAgICAgfQogICAg
IAogICAgIC8vIGZpbmFsbHksIGFwcGx5IHNjYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmgKaW5kZXggNjg0YjE0YzJjYzNlOGQzZWY4OTM1YWY1MzhiMjMwZDdkMmMwNTA5ZC4u
ODRmNTAyOTFiMzk0NGE3ZmQzZTkxMDljNjFmY2M0NzY5ZDNjNGU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjA3LDExICsyMDcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRGKGRvdWJsZSBmKSB7IG1fbWF0cml4WzNdWzFdID0gZjsgfQogCiAgICAgLy8gdGhp
cyA9IHRoaXMgKiBtYXQKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHkoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpIHsgcmV0dXJuICp0aGlzICo9IHQ7IH0KKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
IAotICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11
bHRMZWZ0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpOwotICAgIAogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBzY2FsZTNkKGRvdWJsZSBzeCwgZG91YmxlIHN5LCBkb3VibGUgc3opOwpAQCAt
Mjk1LDE5ICsyOTIsMTggQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9Ci0gICAgCi0gICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQgKGkuZS4sIGEgbXVs
dFJpZ2h0KQorCisgICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgb3BlcmF0b3IqPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAgICB7Ci0g
ICAgICAgICp0aGlzID0gKnRoaXMgKiB0OwotICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IHJldHVybiBtdWx0aXBseSh0KTsKICAgICB9CiAgICAgCi0gICAgLy8gcmVzdWx0ID0gKnRoaXMg
KiB0IChpLmUuLCBhIG11bHRSaWdodCkKKyAgICAvLyByZXN1bHQgPSAqdGhpcyAqIHQKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBvcGVyYXRvciooY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHQpIGNvbnN0CiAgICAgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXN1bHQgPSB0
OwotICAgICAgICByZXN1bHQubXVsdExlZnQoKnRoaXMpOworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCByZXN1bHQgPSAqdGhpczsKKyAgICAgICAgcmVzdWx0Lm11bHRpcGx5KHQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggMzJiNGY1YmE0YjVhNGE1OThjMTQzZjgxNzAxZjU2MmFhNTNmMTIx
Yy4uYjE0OWU2Y2U1OWZmMzBkNmRmNWYwYWVkMDAxOThkOWYyMmRhYTZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC05NDUsNyArOTQ1LDcgQEAgc3RhdGlj
IEludFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBSZW5kZXJMYXllciogbCwgY29uc3Qg
UmVuZGVyTGF5ZXIqIHJvb3QKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSk7Ci0gICAgICAgIHRyYW5zZm9y
bSA9ICpsLT50cmFuc2Zvcm0oKSAqIHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtID0gdHJh
bnNmb3JtICogKmwtPnRyYW5zZm9ybSgpOwogCiAgICAgICAgIEludFJlY3QgY2xpcFJlY3QgPSBs
LT5ib3VuZGluZ0JveChsKTsKICAgICAgICAgZXhwYW5kQ2xpcFJlY3RGb3JEZXNjZW5kYW50c0Fu
ZFJlZmxlY3Rpb24oY2xpcFJlY3QsIGwsIGwsIHBhaW50QmVoYXZpb3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1YjM5ZTBkN2VmNTc1N2YyNjQyNDc2
NTIwNmFhODk3YWRlZDNkMDEwLi5jZmFhNjVkMTk2ZmNjNjAxNDcwYjExNzc2ZDAxZmRmZDg2ZjJj
NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk4
Niw3ICsxOTg2LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWlu
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdo
dCgpKTsKICAgICBSZW5kZXJMYXllciogbGF5ZXI7CiAgICAgaWYgKGhhc0xheWVyKCkgJiYgKGxh
eWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSkgJiYgbGF5ZXItPnRy
YW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdExlZnQobGF5ZXItPmN1cnJlbnRUcmFu
c2Zvcm0oKSk7CisgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+Y3VycmVudFRyYW5z
Zm9ybSgpKTsKICAgICAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGlmIChjb250YWlu
ZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5oYXNMYXllcigpICYmIGNvbnRhaW5lck9iamVj
dC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSkgewpAQCAtMTk5OCw3ICsxOTk4LDcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBjb250YWluZXJPYmplY3QKICAgICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJz
cGVjdGl2ZShjb250YWluZXJPYmplY3QtPnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOwogICAgICAg
ICAKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0aXZlT3JpZ2lu
LngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5zZm9ybS5tdWx0
aXBseShwZXJzcGVjdGl2ZU1hdHJpeCk7CisgICAgICAgIHRyYW5zZm9ybSA9IHBlcnNwZWN0aXZl
TWF0cml4ICogdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQzZChw
ZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7CiAgICAgfQog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFuc2Zvcm1TdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4
IGVjYzYxNGUwZTRiOWE5NGJhOTRkNmVmMjQ5YWQ2NTE3YWUyYTQyNjkuLjlmMTc3ZWE2NWFiOWZh
ZTY5OWEzYWZkZjUwZWQ4NmNjZjE4ZjYzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNjAsOSArNjAsOSBAQCB2b2lkIFRyYW5zZm9ybVN0YXRl
OjphcHBseVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJv
bUNvbgogICAgIC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNmb3JtIGZyb20gbGFz
dCB0aW1lLCBtdWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmIChtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURp
cmVjdGlvbikKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRy
YW5zZm9ybUZyb21Db250YWluZXIpOworICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9y
bS5zZXQobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAq
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtLT5tdWx0TGVmdCh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAg
ICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9ybUZyb21D
b250YWluZXIpOwogICAgIH0gZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRlVHJhbnNm
b3JtKSB7CiAgICAgICAgIC8vIE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11bGF0ZQog
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRpb25NYXRy
aXgodHJhbnNmb3JtRnJvbUNvbnRhaW5lcikpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSGl0
VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjp0cmFuc2xhdGUoaW50IHgsIGludCB5LCBUcmFuc2Zvcm1B
Y2N1bXVsYXRpb24gYWNjCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjphcHBseVRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJvbUNvbnRhaW5l
ciwgVHJhbnNmb3JtQWNjdW11bGF0aW9uIGFjY3VtdWxhdGUpCiB7Ci0gICAgbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybS5tdWx0TGVmdCh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsgICAgCisgICAgbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybS5tdWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAg
ICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKQogICAgICAgICBmbGF0dGVuV2l0
aFRyYW5zZm9ybShtX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79686</attachid>
            <date>2011-01-20 19:51:14 -0800</date>
            <delta_ts>2011-01-23 16:18:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52780-20110121145110.patch</filename>
            <type>text/plain</type>
            <size>24583</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZGM3OGFlZmU3MWE5OGRkZTgyNTVmZDkwMGViZWE0OTZjNDE4NGJhLi44
OTk4ZGJiNzIwM2Q2NzAyYzE0NGViYWExZDExODJmYjgxNzhmMDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDEtMjEgIFNoYW5lIFN0ZXBoZW5zICA8c2hhbmVzdGVwaGVuc0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG11bHRpcGx5IG9wZXJhdGlvbnMgYXBwbHkgb3BlcmFu
ZHMgaW4gd3Jvbmcgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01Mjc4MAorCisgICAgICAgIFJldmVyc2VzIG9yZGVyIG9mIG11bHRpcGx5IG9w
ZXJhdGlvbnMsIHJlbW92ZXMgbXVsdExlZnQsIGZpeGVzIGFsbAorICAgICAgICBjYWxsIHNpdGVz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyBwYXRjaCBhZGRzIG5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZU5vblVuaWZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlM2QpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpza2V3KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqPSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwYXJlbmN5Q2xpcEJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1T
dGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisKIDIwMTEtMDEtMjAgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggMTRmNmI0ZTQyZmJl
Y2I0Y2VlNWE0OTBjYjQwMTFhY2IwOGNmYWZmYy4uMTYzZWFjODI1MTljNzNiNDVjMzVlYTJkY2U4
M2JlYmZmYTZlMDk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAg
LTkxLDkgKzkxLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJp
eDo6bXVsdGlwbHkoV2ViS2l0Q1NTTWF0cml4KiBzZWNvbmRNYXQKICAgICBpZiAoIXNlY29uZE1h
dHJpeCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0bXAo
c2Vjb25kTWF0cml4LT5tX21hdHJpeCk7Ci0gICAgdG1wLm11bHRpcGx5KG1fbWF0cml4KTsKLSAg
ICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUodG1wKTsKKyAgICByZXR1cm4gV2ViS2l0
Q1NTTWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRyaXgpLm11bHRpcGx5
KHNlY29uZE1hdHJpeC0+bV9tYXRyaXgpKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRy
aXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjdhYjA5ODljN2ZkZGJlYjJlOWVhYjc2NjVjNmIzM2Ni
YTlhZmYzMi4uOGUxZTVhNDcwYmIzOGNmZDgwOGMwMDNkNmJhNmRjYjE3OWNhOWFmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQzMyw5ICs0MzMsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRyYW5z
Zm9ybQogICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDEpOwogCiAgICAg
Ly8gQXBwbHkgdGhlIHByb2plY3Rpb24gbWF0cml4IGJlZm9yZSBzZW5kaW5nIHRoZSB0cmFuc2Zv
cm0gb3ZlciB0byB0aGUgc2hhZGVyLgotICAgIHJlbmRlck1hdHJpeC5tdWx0aXBseShwcm9qZWN0
aW9uTWF0cml4KTsKLQotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCByZW5kZXJNYXRyaXgp
OworICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBwcm9qZWN0aW9uTWF0cml4ICogcmVuZGVy
TWF0cml4KTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1h
dHJpeExvY2F0aW9uLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKQEAgLTQ1Nyw4ICs0NTUs
NyBAQCB2b2lkIExheWVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlcigpCiAgICAgbGF5ZXJSZW5k
ZXJlcigpLT51c2VTaGFkZXIoc3YtPmJvcmRlclNoYWRlclByb2dyYW0oKSk7CiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybSgpOwogICAgIHJlbmRl
ck1hdHJpeC5zY2FsZTNkKGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCAxKTsK
LSAgICByZW5kZXJNYXRyaXgubXVsdGlwbHkobGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0
cml4KCkpOwotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCByZW5kZXJNYXRyaXgpOworICAg
IHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRy
aXgoKSAqIHJlbmRlck1hdHJpeCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBs
YXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
TWF0cml4NGZ2KHN2LT5ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0
cml4WzBdLCAxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IDcyODMzOWUzYjg2MmY5MmNiMmQzNTQ5OTY5NjBkODllMTA4MTIwMTIuLmI0YzhmNGU0OTY4NmMx
ZjFlOTZlY2Q5NDZlMWNiMzkzYjY2MDFhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojppc0xheWVyVmlzaWJsZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtCiAg
ICAgLy8gYm91bmRzIGludG8gY2xpcCBzcGFjZS4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBy
ZW5kZXJNYXRyaXggPSBtYXRyaXg7CiAgICAgcmVuZGVyTWF0cml4LnNjYWxlM2QobGF5ZXItPmJv
dW5kcygpLndpZHRoKCksIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSwgMSk7Ci0gICAgcmVuZGVy
TWF0cml4Lm11bHRpcGx5KG1fcHJvamVjdGlvbk1hdHJpeCk7CisgICAgcmVuZGVyTWF0cml4ID0g
bV9wcm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4OwogCiAgICAgRmxvYXRSZWN0IGxheWVy
UmVjdCgtMC41LCAtMC41LCAxLCAxKTsKICAgICBGbG9hdFJlY3QgbWFwcGVkUmVjdCA9IHJlbmRl
ck1hdHJpeC5tYXBSZWN0KGxheWVyUmVjdCk7CkBAIC00MzEsMTIgKzQzMSwxMiBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0q
IGxheWVyLCBjb25zdCBUcgogICAgIC8vIExUID0gVHJbbF0KICAgICBsYXllckxvY2FsVHJhbnNm
b3JtLnRyYW5zbGF0ZTNkKHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBsYXllci0+YW5jaG9y
UG9pbnRaKCkpOwogICAgIC8vIExUID0gVHJbbF0gKiBNW2xdCi0gICAgbGF5ZXJMb2NhbFRyYW5z
Zm9ybS5tdWx0TGVmdChsYXllci0+dHJhbnNmb3JtKCkpOworICAgIGxheWVyTG9jYWxUcmFuc2Zv
cm0ubXVsdGlwbHkobGF5ZXItPnRyYW5zZm9ybSgpKTsKICAgICAvLyBMVCA9IFRyW2xdICogTVts
XSAqIFRyW2NdCiAgICAgbGF5ZXJMb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUzZChjZW50ZXJPZmZz
ZXRYLCBjZW50ZXJPZmZzZXRZLCAtbGF5ZXItPmFuY2hvclBvaW50WigpKTsKIAogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkVHJhbnNmb3JtID0gcGFyZW50TWF0cml4OwotICAgIGNv
bWJpbmVkVHJhbnNmb3JtID0gY29tYmluZWRUcmFuc2Zvcm0ubXVsdExlZnQobGF5ZXJMb2NhbFRy
YW5zZm9ybSk7CisgICAgY29tYmluZWRUcmFuc2Zvcm0gPSBjb21iaW5lZFRyYW5zZm9ybS5tdWx0
aXBseShsYXllckxvY2FsVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0UmVjdCBsYXllclJlY3QoLTAu
NSAqIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpLCAtMC41ICogbGF5ZXItPmJvdW5kcygpLmhlaWdo
dCgpLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKTsK
ICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkTGF5ZXJSZWN0OwpAQCAtNTM3LDcgKzUzNyw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIGNvbnN0IFRyCiAgICAgfQogCiAgICAgLy8gQXBwbHkgdGhlIHN1YmxheWVy
IHRyYW5zZm9ybSBhdCB0aGUgY2VudGVyIG9mIHRoZSBsYXllci4KLSAgICBzdWJsYXllck1hdHJp
eC5tdWx0TGVmdChsYXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisgICAgc3VibGF5ZXJNYXRy
aXgubXVsdGlwbHkobGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gVGhlIG9y
aWdpbiBvZiB0aGUgc3VibGF5ZXJzIGlzIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGxheWVy
LCBub3QgdGhlCiAgICAgLy8gY2VudGVyLiBUaGUgbWF0cml4IHBhc3NlZCBkb3duIHRvIHRoZSBz
dWJsYXllcnMgaXMgdGhlcmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCAwM2Y5Yjdj
NWU3ZWEzNzljMjVhYWJkNGI2Y2I2ZTI0YmNmM2VjMGQzLi4yZTIwODJkNDE3YjBiMDIxNmI3NmY5
ZWYxNTBlYTE0MWZkNTgzNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzkwLDcgKzM5
MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0
dXJlJiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0CiAgICAgY29uc3QgR0xmbG9hdCB1bml0UmVj
dFtdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9OwogICAgIEdMX0NNRChnbFZlcnRleEF0dHJp
YlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpCiAKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChkYXRhKCku
cHJvamVjdGlvbk1hdHJpeCkubXVsdExlZnQobW9kZWxWaWV3TWF0cml4KS5tdWx0TGVmdChUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeChkYXRhKCkucHJvamVjdGlvbk1hdHJpeCkubXVsdGlwbHkobW9kZWxW
aWV3TWF0cml4KS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKICAgICAgICAgICAgIHRh
cmdldFJlY3Qud2lkdGgoKSwgMCwgMCwgMCwKICAgICAgICAgICAgIDAsIHRhcmdldFJlY3QuaGVp
Z2h0KCksIDAsIDAsCiAgICAgICAgICAgICAwLCAwLCAxLCAwLApAQCAtNjA2LDcgKzYwNiw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpwYWludFRvVGFyZ2V0KGNvbnN0IEJpdG1hcFRleHR1cmUm
IGFTdXJmYWNlLCBjb25zdCBJbnRTaXplCiAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMJiBzdXJm
YWNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oYVN1cmZhY2UpOwogCiAg
ICAgLy8gQ3JlYXRlIHRoZSBtb2RlbC12aWV3LXByb2plY3Rpb24gbWF0cml4IHRvIGRpc3BsYXkg
b24gc2NyZWVuLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IGNyZWF0ZVByb2pl
Y3Rpb25NYXRyaXgoc3VyZmFjZVNpemUsIHRydWUpLm11bHRMZWZ0KHRyYW5zZm9ybSkubXVsdExl
ZnQoCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1h
dHJpeChzdXJmYWNlU2l6ZSwgdHJ1ZSkubXVsdGlwbHkodHJhbnNmb3JtKS5tdWx0aXBseSgKICAg
ICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cmZhY2UubV9hY3R1YWxTaXplLndpZHRoKCksIDAsIDAsIDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCBzdXJmYWNlLm1fYWN0dWFsU2l6ZS5oZWlnaHQoKSwgMCwgMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVy
UXQuY3BwCmluZGV4IDc1ZmI0Mjc0YWQzOGI5MWVlZTMzOTkwNjc3MmNjYWYxY2U1ZGM1NTAuLjIz
ODY1MjMwNWI3OGJhMjAwNWI0YmFjMWI5MTM0NWMwNDJjZDAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcApA
QCAtNTI5LDEyICs1MjksMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjp1cGRhdGVUcmFu
c2Zvcm0oKQogICAgIC8vIGhhdmUgdG8gbWFpbnRhaW4gdGhhdCBvdXJzZWx2ZXMgZm9yIDNELgog
ICAgIGxvY2FsVHJhbnNmb3JtCiAgICAgICAgICAgICAudHJhbnNsYXRlM2Qob3JpZ2luWCArIG1f
c3RhdGUucG9zLngoKSwgb3JpZ2luWSArIG1fc3RhdGUucG9zLnkoKSwgbV9zdGF0ZS5hbmNob3JQ
b2ludC56KCkpCi0gICAgICAgICAgICAubXVsdExlZnQobV9iYXNlVHJhbnNmb3JtKQorICAgICAg
ICAgICAgLm11bHRpcGx5KG1fYmFzZVRyYW5zZm9ybSkKICAgICAgICAgICAgIC50cmFuc2xhdGUz
ZCgtb3JpZ2luWCwgLW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CiAKICAgICAv
LyBUaGlzIGlzIHRoZSBhY3R1YWwgM0QgdHJhbnNmb3JtIG9mIHRoaXMgaXRlbSwgd2l0aCB0aGUg
YW5jZXN0b3JzJyB0cmFuc2Zvcm0gYmFrZWQgaW4uCiAgICAgbV90cmFuc2Zvcm1SZWxhdGl2ZVRv
Um9vdExheWVyID0gVHJhbnNmb3JtYXRpb25NYXRyaXgocGFyZW50ID8gcGFyZW50LT5tX3RyYW5z
Zm9ybVJlbGF0aXZlVG9Sb290TGF5ZXIgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubXVsdExlZnQobG9jYWxUcmFuc2Zv
cm0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubXVsdGlwbHko
bG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgLy8gTm93IHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IHRvIGRldGVybWluZSBpZiB0aGUgbGF5ZXIgaXMgZmFjaW5nIGJhY2t3YXJkcy4KICAgICBpZiAo
IW1fc3RhdGUuYmFja2ZhY2VWaXNpYmlsaXR5ICYmIG1fdHJhbnNmb3JtUmVsYXRpdmVUb1Jvb3RM
YXllci5pbnZlcnNlKCkubTMzKCkgPCAwKSB7CkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyUXRJbXBsOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGlmICghbV9zdGF0ZS5jaGls
ZHJlblRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgbV90cmFuc2Zvcm1SZWxhdGl2
ZVRvUm9vdExheWVyCiAgICAgICAgICAgICAudHJhbnNsYXRlKG1fc2l6ZS53aWR0aCgpIC8gMiwg
bV9zaXplLmhlaWdodCgpIC8yKQotICAgICAgICAgICAgLm11bHRMZWZ0KG1fc3RhdGUuY2hpbGRy
ZW5UcmFuc2Zvcm0pCisgICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5jaGlsZHJlblRyYW5z
Zm9ybSkKICAgICAgICAgICAgIC50cmFuc2xhdGUoLW1fc2l6ZS53aWR0aCgpIC8gMiwgLW1fc2l6
ZS5oZWlnaHQoKSAvMik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcAppbmRleCAw
OTA1MWY5NjU0OWFlOTA3OTRkNzVmMjlmOGU2YjY2YTZiN2I2MjQ5Li5iZjUzZTYxMjM1NTVmMjEx
MzlhYzhjYjMyYTBjNWE5NWIxYzBlOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKQEAg
LTMxOCw3ICszMTgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21wdXRlTG9jYWxUcmFu
c2Zvcm0oKQogICAgIG1fdHJhbnNmb3Jtcy5sb2NhbCA9CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkKICAgICAgICAgLnRyYW5zbGF0ZTNkKG9yaWdpblggKyBtX3N0YXRlLnBvcy54KCks
IG9yaWdpblkgKyBtX3N0YXRlLnBvcy55KCksIG1fc3RhdGUuYW5jaG9yUG9pbnQueigpKQotICAg
ICAgICAubXVsdExlZnQobV9zdGF0ZS50cmFuc2Zvcm0pCisgICAgICAgIC5tdWx0aXBseShtX3N0
YXRlLnRyYW5zZm9ybSkKICAgICAgICAgLnRyYW5zbGF0ZTNkKC1vcmlnaW5YLCAtb3JpZ2luWSwg
LW1fc3RhdGUuYW5jaG9yUG9pbnQueigpKTsKICAgICBtX3RyYW5zZm9ybXMubG9jYWxEaXJ0eSA9
IGZhbHNlOwogfQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNv
bXB1dGVSZXBsaWNhVHJhbnNmb3JtKCkKICAgICBtX25lYXJlc3RTdXJmYWNlU2l6ZSA9IG5lYXJl
c3RTdXJmYWNlU2l6ZSgpOwogCiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IFRyYW5zcGFyZW5jeUxh
eWVyKSB7Ci0gICAgICAgIG1fdHJhbnNmb3Jtcy5yZXBsaWNhID0gVHJhbnNmb3JtYXRpb25NYXRy
aXgobV90cmFuc2Zvcm1zLnRhcmdldCkubXVsdExlZnQobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1f
dHJhbnNmb3Jtcy5sb2NhbCk7CisgICAgICAgIG1fdHJhbnNmb3Jtcy5yZXBsaWNhID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkubXVsdGlwbHkobV9zdGF0ZS5yZXBs
aWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21wdXRlUmVwbGlj
YVRyYW5zZm9ybSgpCiAgICAgbV90cmFuc2Zvcm1zLnJlcGxpY2EgPQogICAgICAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKQogICAgICAgICAgICAgICAgIC50cmFuc2xhdGUob3JpZ2luWCwg
b3JpZ2luWSkKLSAgICAgICAgICAgICAgICAubXVsdExlZnQobV9zdGF0ZS5yZXBsaWNhTGF5ZXIt
Pm1fdHJhbnNmb3Jtcy5sb2NhbCkKKyAgICAgICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCkKICAgICAgICAgICAgICAgICAudHJhbnNs
YXRlKC1vcmlnaW5YLCAtb3JpZ2luWSk7CiB9CiAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJOb2RlOjpjb21wdXRlVHJhbnNmb3JtYXRpb25zKCkKICAgICBUZXh0dXJlTWFw
cGVyTm9kZSogcGFyZW50ID0gbV9wYXJlbnQ7CiAgICAgY29tcHV0ZUxvY2FsVHJhbnNmb3JtKCk7
CiAKLSAgICBtX3RyYW5zZm9ybXMudGFyZ2V0ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgocGFyZW50
ID8gcGFyZW50LT5tX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMgOiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKS5tdWx0TGVmdChtX3RyYW5zZm9ybXMubG9jYWwpOworICAgIG1fdHJhbnNmb3Jtcy50
YXJnZXQgPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChwYXJlbnQgPyBwYXJlbnQtPm1fdHJhbnNmb3Jt
cy5mb3JEZXNjZW5kYW50cyA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLm11bHRpcGx5KG1fdHJh
bnNmb3Jtcy5sb2NhbCk7CiAgICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRzID0gKG1fbGF5
ZXJUeXBlID09IENsaXBMYXllciA/IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkgOiBtX3RyYW5zZm9y
bXMudGFyZ2V0KTsKIAogICAgIGlmIChtX2VmZmVjdFRhcmdldCkKQEAgLTQwOCwxMCArNDA4LDEw
IEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVUcmFuc2Zvcm1hdGlvbnMoKQogICAg
IGlmIChtX3RyYW5zZm9ybXMucGVyc3BlY3RpdmVEaXJ0eSkKICAgICAgICAgbV90cmFuc2Zvcm1z
LnBlcnNwZWN0aXZlID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKQogICAgICAgICAgICAgLnRyYW5z
bGF0ZShjZW50ZXJQb2ludC54KCksIGNlbnRlclBvaW50LnkoKSkKLSAgICAgICAgICAgIC5tdWx0
TGVmdChtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKQorICAgICAgICAgICAgLm11bHRpcGx5KG1f
c3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICAgICAudHJhbnNsYXRlKC1jZW50ZXJQ
b2ludC54KCksIC1jZW50ZXJQb2ludC55KCkpOwogICAgIG1fdHJhbnNmb3Jtcy5wZXJzcGVjdGl2
ZURpcnR5ID0gZmFsc2U7Ci0gICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRhbnRzLm11bHRMZWZ0
KG1fdHJhbnNmb3Jtcy5wZXJzcGVjdGl2ZSk7CisgICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRh
bnRzLm11bHRpcGx5KG1fdHJhbnNmb3Jtcy5wZXJzcGVjdGl2ZSk7CiB9CiAKIHZvaWQgVGV4dHVy
ZU1hcHBlck5vZGU6OnVwbG9hZFRleHR1cmVGcm9tQ29udGVudChUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgR3JhcGhpY3NMYXllciogbGF5
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXgg
MGEwYWFmMGE5OWExMjg4ZWQ0MDE5MTE3ODU4NjM3ZWVmNzkwMDNmZS4uZGQ1ZGFlMmRlY2U5NjQx
ZDg2Y2IyZTE5NjJlZWViODkzN2IxYmViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IElu
dFNpemUmKSBjb25zdAogICAgIHsKLSAgICAgICAgdHJhbnNmb3JtLm11bHRMZWZ0KFRyYW5zZm9y
bWF0aW9uTWF0cml4KG1fbWF0cml4KSk7CisgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShUcmFu
c2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBmZDli
MjdlYmUxMDgyNzM3NjVmOGQ4OTExZGFjYjZlOTY5N2QwMmNjLi42ZjRlNzI1NmNjMjljMWY3Mjcw
NmZmNzMwYmEzZTZhZmMzZGRhNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
YXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYpIGNv
bnN0CiAgICAgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgobV9hLCBtX2Is
IG1fYywgbV9kLCBtX2UsIG1fZik7Ci0gICAgICAgIHRyYW5zZm9ybS5tdWx0TGVmdChUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtYXRyaXgpKTsKKyAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1hdHJp
eCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggMzU3YTE0MGUzMWM3ZmU2OTljNTMxOTg3NDhkNmQ2YzZh
MjAwZmMwOC4uYWE2ZjZkYmFmMWFlZTE0ZTc1MDA0ZWIyMzE4MzY5ZTlkZWFmNDkxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTU1LDIxICs1NSwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB3ZWJtYXN0ZXJzIC0gYXJlIHRvIGJlIGhlbGQgcmVzcG9u
c2libGUuIEJhc2ljYWxseSwgZG9uJ3QgYmUgYSBqZXJrLCBhbmQgcmVtZW1iZXIgdGhhdCBhbnl0
aGluZyBmcmVlIGNvbWVzIAogLy8gd2l0aCBubyBndWFyYW50ZWUuCiAKLS8vIEEgTm90ZSBBYm91
dCByb3ctbWFqb3IgdnMuIGNvbHVtbiBtYWpvciBtYXRyaXhlcworLy8gQSBjbGFyaWZpY2F0aW9u
IGFib3V0IHRoZSBzdG9yYWdlIG9mIG1hdHJpeCBlbGVtZW50cwogLy8KLS8vIFRoZSBjbGllbnRz
IG9mIHRoaXMgY2xhc3MgKENTU01hdHJpeCBhbmQgU1ZHTWF0cml4KSBhc3N1bWUgYSBjb2x1bW4t
bWFqb3Igb3JkZXJpbmcuCi0vLyBUaGF0IG1lYW5zIHRoYXQgd2hlbiB0aGUgbWF0cml4IGlzIGlu
aXRpYWxpemVkIHdpdGggMTYgdmFsdWVzLCB0aGUgZmlyc3QgNCB2YWx1ZXMKLS8vIGdvIGluIHRo
ZSA0IHJvd3Mgb2YgdGhlIGZpcnN0IGNvbHVtbiwgZXRjLiBBbmQgaW4gdGhlIGRlcmVmZXJlbmNp
bmcgY2FsbHMsIHRoZSBmaXJzdAotLy8gZGlnaXQgaXMgdGhlIGNvbHVtbiAoZS5nLiwgbTIzKCkg
aXMgY29sdW1uIDIgcm93IDMpLiBCZWNhdXNlIEMrKyB1c2VzIHJvdy1tYWpvciBhcnJheXMgCi0v
LyB0aGUgaW50ZXJuYWwgbWF0cml4IGlzIHN0b3JlZCBpbiByb3ctbWFqb3Igb3JkZXIsIHNvIG1b
Ml1bMF0gbWVhbnMgcm93IDIsIGNvbHVtbiAwLiBUaGlzCi0vLyBoYXMgbm8gYmVhcmluZyBvbiBo
b3cgdGhlIG1hdHJpeCBpcyB2aWV3ZWQgb24gdGhlIG91dHNpZGUsIHNpbmNlIGFsbCBhY2Nlc3Mg
aXMgZG9uZQotLy8gd2l0aCBmdW5jdGlvbiBjYWxscy4gQnV0IGl0IGRvZXMgaGVscCBtYWtlIHRo
ZSBjb2RlIG1vcmUgY2xlYXIgaWYgeW91IGtub3cgdGhhdC4KKy8vIFRoaXMgY2xhc3MgdXNlcyBh
IDIgZGltZW5zaW9uYWwgYXJyYXkgaW50ZXJuYWxseSB0byBzdG9yZSB0aGUgZWxlbWVudHMgb2Yg
dGhlIG1hdHJpeC4gIFRoZSBmaXJzdCBpbmRleCBpbnRvIAorLy8gdGhlIGFycmF5IHJlZmVycyB0
byB0aGUgY29sdW1uIHRoYXQgdGhlIGVsZW1lbnQgbGllcyBpbjsgdGhlIHNlY29uZCB0aGUgcm93
LgogLy8KLS8vIEZJWE1FOiBNdWx0aXBseSBjYWxscyBhcmUgbmFtZWQgZm9yIHdoYXQgdGhleSBk
byBpbiB0aGUgaW50ZXJuYWwsIHJvdy1tYWpvciB3b3JsZC4gCi0vLyBtdWx0TGVmdCBpcyBhY3R1
YWxseSBhIG11bHRSaWdodCBpbiBhIGNvbHVtbi1tYWpvciB3b3JsZCwgYW5kIG11bHRpcGx5IGlz
IGEgbXVsdExlZnQgCi0vLyBpbiBhIGNvbHVtbi1tYWpvciB3b3JsZC4gRm9yIG5vdyBJJ3ZlIGxl
ZnQgaXQgdGhhdCB3YXkgdG8gYXZvaWQgdG9vIG1hbnkgY29uZnVzaW5nIAotLy8gY2hhbmdlcyB0
byB0aGUgY29kZS4gSW4gcGFydGljdWxhciBBZmZpbmVUcmFuc2Zvcm0gdXNlcyB0aGVzZSBzYW1l
IHRlcm1zIGZvciB0aGUKLS8vIG9wcG9zaXRlIG9wZXJhdGlvbnMuIFNvIHdlIGhhdmUgdG8gYmUg
VkVSWSBjYXJlZnVsIHdoZW4gd2UgY2hhbmdlIHRoZW0uCisvLyBJbiBvdGhlciB3b3JkcywgdGhp
cyBpcyB0aGUgbGF5b3V0IG9mIHRoZSBtYXRyaXg6CisvLworLy8gfCBtX21hdHJpeFswXVswXSBt
X21hdHJpeFsxXVswXSBtX21hdHJpeFsyXVswXSBtX21hdHJpeFszXVswXSB8CisvLyB8IG1fbWF0
cml4WzBdWzFdIG1fbWF0cml4WzFdWzFdIG1fbWF0cml4WzJdWzFdIG1fbWF0cml4WzNdWzFdIHwK
Ky8vIHwgbV9tYXRyaXhbMF1bMl0gbV9tYXRyaXhbMV1bMl0gbV9tYXRyaXhbMl1bMl0gbV9tYXRy
aXhbM11bMl0gfAorLy8gfCBtX21hdHJpeFswXVszXSBtX21hdHJpeFsxXVszXSBtX21hdHJpeFsy
XVszXSBtX21hdHJpeFszXVszXSB8CiAKIHR5cGVkZWYgZG91YmxlIFZlY3RvcjRbNF07CiB0eXBl
ZGVmIGRvdWJsZSBWZWN0b3IzWzNdOwpAQCAtNjM0LDcgKzYzMCw3IEBAIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwg
ZG91YmxlIHN5CiAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gc3g7CiAgICAgbWF0Lm1fbWF0cml4
WzFdWzFdID0gc3k7CiAKLSAgICBtdWx0TGVmdChtYXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC02NDUsNyArNjQxLDcgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZTNkKGRvdWJsZSBzeCwgZG91YmxlIHN5
LCBkb3VibGUKICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSBzeTsKICAgICBtYXQubV9tYXRyaXhb
Ml1bMl0gPSBzejsKIAotICAgIG11bHRMZWZ0KG1hdCk7CisgICAgbXVsdGlwbHkobWF0KTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTczMiw3ICs3MjgsNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlCiAgICAgICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9
IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CiAgICAgICAgIG1hdC5tX21hdHJpeFszXVszXSA9
IDEuMGY7CiAgICAgfQotICAgIG11bHRMZWZ0KG1hdCk7CisgICAgbXVsdGlwbHkobWF0KTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTc4Myw3ICs3NzksNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRvdWJsZSByeCwgZG91YmxlIHJ5
LCBkb3VibAogICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1h
dC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CiAgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsK
ICAgICAKLSAgICBybWF0Lm11bHRMZWZ0KG1hdCk7CisgICAgcm1hdC5tdWx0aXBseShtYXQpOwog
CiAgICAgcnggLz0gMi4wZjsKICAgICBzaW5BID0gc2luKHJ4KTsKQEAgLTgwMyw5ICs3OTksOSBA
QCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZTNkKGRv
dWJsZSByeCwgZG91YmxlIHJ5LCBkb3VibAogICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5t
X21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CiAgICAgbWF0Lm1fbWF0
cml4WzNdWzNdID0gMS4wZjsKICAgICAKLSAgICBybWF0Lm11bHRMZWZ0KG1hdCk7CisgICAgcm1h
dC5tdWx0aXBseShtYXQpOwogCi0gICAgbXVsdExlZnQocm1hdCk7CisgICAgbXVsdGlwbHkocm1h
dCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC04NjksNyArODY1LDcgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpza2V3KGRvdWJsZSBzeCwgZG91Ymxl
IHN5KQogICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IHRhbihzeSk7IC8vIG5vdGUgdGhhdCB0aGUg
eSBzaGVhciBnb2VzIGluIHRoZSBmaXJzdCByb3cKICAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSB0
YW4oc3gpOyAvLyBhbmQgdGhlIHggc2hlYXIgaW4gdGhlIHNlY29uZCByb3cKIAotICAgIG11bHRM
ZWZ0KG1hdCk7CisgICAgbXVsdGlwbHkobWF0KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAg
LTg3OSw3ICs4NzUsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRy
aXg6OmFwcGx5UGVyc3BlY3RpdmUoZG91YmxlIHApCiAgICAgaWYgKHAgIT0gMCkKICAgICAgICAg
bWF0Lm1fbWF0cml4WzJdWzNdID0gLTEvcDsKIAotICAgIG11bHRMZWZ0KG1hdCk7CisgICAgbXVs
dGlwbHkobWF0KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTg5Niw3ICs4OTIsNyBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChjb25z
dCBGbG9hdFJlY3QmIGZyb20sIGNvbgogLy8KIC8vICp0aGlzID0gbWF0ICogKnRoaXMKIC8vCi1U
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRMZWZ0KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNm
b3JtYXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQp
CiB7CiAgICAgTWF0cml4NCB0bXA7CiAgICAgCkBAIC0xMTA1LDI1ICsxMTAxLDI1IEBAIHZvaWQg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZShjb25zdCBEZWNvbXBvc2VkVHlwZSYgZGVj
b21wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqICh4eiAtIHl3KSwgMiAqICh5eiAr
IHh3KSwgMSAtIDIgKiAoeHggKyB5eSksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCAxKTsKICAgICAKLSAgICBtdWx0TGVmdChyb3RhdGlvbk1hdHJpeCk7CisgICAgbXVs
dGlwbHkocm90YXRpb25NYXRyaXgpOwogICAgIAogICAgIC8vIG5vdyBhcHBseSBza2V3CiAgICAg
aWYgKGRlY29tcC5za2V3WVopIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG1wOwog
ICAgICAgICB0bXAuc2V0TTMyKChmbG9hdCkgZGVjb21wLnNrZXdZWik7Ci0gICAgICAgIG11bHRM
ZWZ0KHRtcCk7CisgICAgICAgIG11bHRpcGx5KHRtcCk7CiAgICAgfQogICAgIAogICAgIGlmIChk
ZWNvbXAuc2tld1haKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcDsKICAgICAg
ICAgdG1wLnNldE0zMSgoZmxvYXQpIGRlY29tcC5za2V3WFopOwotICAgICAgICBtdWx0TGVmdCh0
bXApOworICAgICAgICBtdWx0aXBseSh0bXApOwogICAgIH0KICAgICAKICAgICBpZiAoZGVjb21w
LnNrZXdYWSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0bXA7CiAgICAgICAgIHRt
cC5zZXRNMjEoKGZsb2F0KSBkZWNvbXAuc2tld1hZKTsKLSAgICAgICAgbXVsdExlZnQodG1wKTsK
KyAgICAgICAgbXVsdGlwbHkodG1wKTsKICAgICB9CiAgICAgCiAgICAgLy8gZmluYWxseSwgYXBw
bHkgc2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCBjODgzNjc1
ZDk2Y2E5YzQxOGRhZGQyMzE3ODZjNmMwNWJjYWQyZWIzLi5mYTI3YzBlMTczOGM5ZTk1YjdhODlh
ZDY4YWE4Y2NiMGI2YWMxZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
CkBAIC0yMDgsMTEgKzIwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEYoZG91YmxlIGYpIHsg
bV9tYXRyaXhbM11bMV0gPSBmOyB9CiAKICAgICAvLyB0aGlzID0gdGhpcyAqIG1hdAotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCkgeyByZXR1cm4gKnRoaXMgKj0gdDsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0
aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCi0gICAgLy8gdGhpcyA9IG1hdCAq
IHRoaXMKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdExlZnQoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdCk7Ci0gICAgCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxl
KGRvdWJsZSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9uVW5pZm9ybShkb3Vi
bGUgc3gsIGRvdWJsZSBzeSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlM2QoZG91
YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJsZSBzeik7CkBAIC0yOTYsMTkgKzI5MywxOCBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAg
ICAvLyAqdGhpcyA9ICp0aGlzICogdCAoaS5lLiwgYSBtdWx0UmlnaHQpCisKKyAgICAvLyAqdGhp
cyA9ICp0aGlzICogdAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBvcGVyYXRvcio9KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQogICAgIHsKLSAgICAgICAgKnRoaXMgPSAqdGhpcyAq
IHQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgcmV0dXJuIG11bHRpcGx5KHQpOwog
ICAgIH0KICAgICAKLSAgICAvLyByZXN1bHQgPSAqdGhpcyAqIHQgKGkuZS4sIGEgbXVsdFJpZ2h0
KQorICAgIC8vIHJlc3VsdCA9ICp0aGlzICogdAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9w
ZXJhdG9yKihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlc3VsdCA9IHQ7Ci0gICAgICAgIHJlc3VsdC5tdWx0
TGVmdCgqdGhpcyk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlc3VsdCA9ICp0aGlz
OworICAgICAgICByZXN1bHQubXVsdGlwbHkodCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzMmI0
ZjViYTRiNWE0YTU5OGMxNDNmODE3MDFmNTYyYWE1M2YxMjFjLi5iMTQ5ZTZjZTU5ZmYzMGQ2ZGY1
ZjBhZWQwMDE5OGQ5ZjIyZGFhNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTk0NSw3ICs5NDUsNyBAQCBzdGF0aWMgSW50UmVjdCB0cmFuc3BhcmVuY3lD
bGlwQm94KGNvbnN0IFJlbmRlckxheWVyKiBsLCBjb25zdCBSZW5kZXJMYXllciogcm9vdAogCiAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZSh4LCB5KTsKLSAgICAgICAgdHJhbnNmb3JtID0gKmwtPnRyYW5zZm9ybSgpICog
dHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiAqbC0+dHJhbnNmb3Jt
KCk7CiAKICAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IGwtPmJvdW5kaW5nQm94KGwpOwogICAg
ICAgICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVjdCwg
bCwgbCwgcGFpbnRCZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDViMzllMGQ3ZWY1NzU3ZjI2NDI0NzY1MjA2YWE4OTdhZGVkM2QwMTAuLmNm
YWE2NWQxOTZmY2M2MDE0NzBiMTE3NzZkMDFmZGZkODZmMmM1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xOTg2LDcgKzE5ODYsNyBAQCB2b2lkIFJl
bmRlck9iamVjdDo6Z2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3Qq
IGNvbnRhaW5lck9iamVjdAogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWlu
ZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCkpOwogICAgIFJlbmRlckxheWVy
KiBsYXllcjsKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHRoaXMpLT5sYXllcigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkpCi0gICAgICAgIHRy
YW5zZm9ybS5tdWx0TGVmdChsYXllci0+Y3VycmVudFRyYW5zZm9ybSgpKTsKKyAgICAgICAgdHJh
bnNmb3JtLm11bHRpcGx5KGxheWVyLT5jdXJyZW50VHJhbnNmb3JtKCkpOwogICAgIAogI2lmIEVO
QUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgaWYgKGNvbnRhaW5lck9iamVjdCAmJiBjb250YWluZXJP
YmplY3QtPmhhc0xheWVyKCkgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgpLT5oYXNQZXJzcGVj
dGl2ZSgpKSB7CkBAIC0xOTk4LDcgKzE5OTgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lck9iamVjdAog
ICAgICAgICBwZXJzcGVjdGl2ZU1hdHJpeC5hcHBseVBlcnNwZWN0aXZlKGNvbnRhaW5lck9iamVj
dC0+c3R5bGUoKS0+cGVyc3BlY3RpdmUoKSk7CiAgICAgICAgIAogICAgICAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlUmlnaHQzZCgtcGVyc3BlY3RpdmVPcmlnaW4ueCgpLCAtcGVyc3BlY3RpdmVPcmln
aW4ueSgpLCAwKTsKLSAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5KHBlcnNwZWN0aXZlTWF0cml4
KTsKKyAgICAgICAgdHJhbnNmb3JtID0gcGVyc3BlY3RpdmVNYXRyaXggKiB0cmFuc2Zvcm07CiAg
ICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGVSaWdodDNkKHBlcnNwZWN0aXZlT3JpZ2luLngoKSwg
cGVyc3BlY3RpdmVPcmlnaW4ueSgpLCAwKTsKICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggZWNjNjE0ZTBlNGI5YTk0YmE5NGQ2
ZWYyNDlhZDY1MTdhZTJhNDI2OS4uOWYxNzdlYTY1YWI5ZmFlNjk5YTNhZmRmNTBlZDg2Y2NmMThm
NjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYW5zZm9ybVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUuY3BwCkBA
IC02MCw5ICs2MCw5IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2
ZSBhbiBhY2N1bXVsYXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRo
aXMgdHJhbnNmb3JtCiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAg
aWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAg
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7
CisgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRp
b25NYXRyaXgodHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11
bHRMZWZ0KHRyYW5zZm9ybUZyb21Db250YWluZXIpOworICAgICAgICAgICAgbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNl
IGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFr
ZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVsYXRlCiAgICAgICAgIG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0uc2V0KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1Gcm9tQ29udGFp
bmVyKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU6
OnRyYW5zbGF0ZShpbnQgeCwgaW50IHksIFRyYW5zZm9ybUFjY3VtdWxhdGlvbiBhY2MKIAogdm9p
ZCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyLCBUcmFuc2Zvcm1BY2N1bXVsYXRp
b24gYWNjdW11bGF0ZSkKIHsKLSAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLm11bHRMZWZ0KHRy
YW5zZm9ybUZyb21Db250YWluZXIpOyAgICAKKyAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLm11
bHRpcGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIGlmIChhY2N1bXVsYXRlID09IEZs
YXR0ZW5UcmFuc2Zvcm0pCiAgICAgICAgIGZsYXR0ZW5XaXRoVHJhbnNmb3JtKG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79882</attachid>
            <date>2011-01-23 16:18:52 -0800</date>
            <delta_ts>2011-01-24 11:42:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52780-20110124111849.patch</filename>
            <type>text/plain</type>
            <size>25181</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjJkN2VjYzhhNmI4ODljNWJjZGMyZGY2NWNiZWFmMDJlZmQxN2VmLi5k
NDYyZDk5MWFmYmNlNDg2NzI1NDNmNTEyZWZkOTUwMzE5NWU4YTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTEtMDEtMjQgIFNoYW5lIFN0ZXBoZW5zICA8c2hhbmVzdGVwaGVuc0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG11bHRpcGx5IG9wZXJhdGlvbnMgYXBwbHkgb3BlcmFu
ZHMgaW4gd3Jvbmcgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01Mjc4MAorCisgICAgICAgIFJlbmFtZSBUcmFuZm9ybWF0aW9uTWF0cml4Ojpt
dWx0TGVmdCBpbnRvIG11bHRpcGx5ICh0aGUgbWV0aG9kIGRvZXMgYSBtdWx0UmlnaHQsCisgICAg
ICAgIG5vdCBhIG11bHRMZWZ0KS4KKworICAgICAgICBSZW1vdmUgVHJhbnNmb3JtYXRpb25NYXRy
aXg6Om11bHRpcGx5LCB3aGljaCB3YXMgYWN0dWFsbHkgZG9pbmcgYSBtdWx0TGVmdC4KKworICAg
ICAgICBGaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKiBhbmQgb3BlcmF0b3IqPSBz
dWNoIHRoYXQgdGhlIG9wZXJhbmQgaXMKKyAgICAgICAgYXBwbGllZCB0byB0aGUgcmlnaHQtaGFu
ZCBzaWRlIG9mIHRoZSBtYXRyaXggdGhhdCB0aGUgbWV0aG9kIGlzIGNhbGxlZCBvbi4KKyAgICAg
ICAgaS5lLiwgcHJldmlvdXNseSAiYSAqIGIiIHVzZWQgdG8gY29tcHV0ZSAiYiAqIGEiLCBhbmQg
ImEgKj0gYiIgdXNlZCB0byBzdG9yZQorICAgICAgICAiYiAqIGEiIGluICJhIi4gIFRoaXMgaGFz
IG5vdyBiZWVuIGZpeGVkIHNvICJhICogYiIgY29tcHV0ZXMgImEgKiBiIiBhbmQKKyAgICAgICAg
ImEgKj0gYiIgc3RvcmVzICJhICogYiIgaW4gImEiLgorCisgICAgICAgIENvbnZlcnQgYWxsIGNh
bGwgc2l0ZXMgZm9yIHRoZXNlIG1ldGhvZHMgdG8gcHJvdmlkZSBvcGVyYW5kcyBpbiB0aGUgY29y
cmVjdCBvcmRlci4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgcGF0Y2ggYWRkcyBubyBuZXcg
ZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2Nh
bGVOb25Vbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpz
Y2FsZTNkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUz
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tldyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YXBwbHlQZXJzcGVjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9zZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKj0pOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcGFyZW5j
eUNsaXBCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorCiAyMDExLTAxLTIzICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXgg
MTRmNmI0ZTQyZmJlY2I0Y2VlNWE0OTBjYjQwMTFhY2IwOGNmYWZmYy4uMTYzZWFjODI1MTljNzNi
NDVjMzVlYTJkY2U4M2JlYmZmYTZlMDk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5jcHAKQEAgLTkxLDkgKzkxLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdl
YktpdENTU01hdHJpeDo6bXVsdGlwbHkoV2ViS2l0Q1NTTWF0cml4KiBzZWNvbmRNYXQKICAgICBp
ZiAoIXNlY29uZE1hdHJpeCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0bXAoc2Vjb25kTWF0cml4LT5tX21hdHJpeCk7Ci0gICAgdG1wLm11bHRpcGx5KG1f
bWF0cml4KTsKLSAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUodG1wKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRy
aXgpLm11bHRpcGx5KHNlY29uZE1hdHJpeC0+bV9tYXRyaXgpKTsKIH0KIAogUGFzc1JlZlB0cjxX
ZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjdhYjA5ODljN2ZkZGJlYjJlOWVh
Yjc2NjVjNmIzM2NiYTlhZmYzMi4uOGUxZTVhNDcwYmIzOGNmZDgwOGMwMDNkNmJhNmRjYjE3OWNh
OWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQzMyw5ICs0MzMsNyBAQCB2b2lkIExh
eWVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IFRyYW5zZm9ybQogICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKHdpZHRoLCBoZWlnaHQs
IDEpOwogCiAgICAgLy8gQXBwbHkgdGhlIHByb2plY3Rpb24gbWF0cml4IGJlZm9yZSBzZW5kaW5n
IHRoZSB0cmFuc2Zvcm0gb3ZlciB0byB0aGUgc2hhZGVyLgotICAgIHJlbmRlck1hdHJpeC5tdWx0
aXBseShwcm9qZWN0aW9uTWF0cml4KTsKLQotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBy
ZW5kZXJNYXRyaXgpOworICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBwcm9qZWN0aW9uTWF0
cml4ICogcmVuZGVyTWF0cml4KTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
TWF0cml4NGZ2KG1hdHJpeExvY2F0aW9uLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKQEAg
LTQ1Nyw4ICs0NTUsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlcigpCiAg
ICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPmJvcmRlclNoYWRlclByb2dyYW0oKSk7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybSgp
OwogICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhl
aWdodCgpLCAxKTsKLSAgICByZW5kZXJNYXRyaXgubXVsdGlwbHkobGF5ZXJSZW5kZXJlcigpLT5w
cm9qZWN0aW9uTWF0cml4KCkpOwotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCByZW5kZXJN
YXRyaXgpOworICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBsYXllclJlbmRlcmVyKCktPnBy
b2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCk7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KHN2LT5ib3JkZXJTaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBm
YWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCmluZGV4IDliNDc2MzVmNDQ1ZWEzNWZmMDE0MjdjZjIzMDU1YzFmOWQ1ZWNjN2IuLjU2
OTExNjFhYTJjYzQzNDJmODYwOTdkN2IwNjQ0MDFlMmQ5MTYzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIGJvb2wgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjppc0xheWVyVmlzaWJsZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3Qg
VHJhbnNmb3JtCiAgICAgLy8gYm91bmRzIGludG8gY2xpcCBzcGFjZS4KICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZW5kZXJNYXRyaXggPSBtYXRyaXg7CiAgICAgcmVuZGVyTWF0cml4LnNjYWxl
M2QobGF5ZXItPmJvdW5kcygpLndpZHRoKCksIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSwgMSk7
Ci0gICAgcmVuZGVyTWF0cml4Lm11bHRpcGx5KG1fcHJvamVjdGlvbk1hdHJpeCk7CisgICAgcmVu
ZGVyTWF0cml4ID0gbV9wcm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4OwogCiAgICAgRmxv
YXRSZWN0IGxheWVyUmVjdCgtMC41LCAtMC41LCAxLCAxKTsKICAgICBGbG9hdFJlY3QgbWFwcGVk
UmVjdCA9IHJlbmRlck1hdHJpeC5tYXBSZWN0KGxheWVyUmVjdCk7CkBAIC00MzMsMTIgKzQzMywx
MiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBUcgogICAgIC8vIExUID0gVHJbbF0KICAgICBsYXll
ckxvY2FsVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBs
YXllci0+YW5jaG9yUG9pbnRaKCkpOwogICAgIC8vIExUID0gVHJbbF0gKiBNW2xdCi0gICAgbGF5
ZXJMb2NhbFRyYW5zZm9ybS5tdWx0TGVmdChsYXllci0+dHJhbnNmb3JtKCkpOworICAgIGxheWVy
TG9jYWxUcmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPnRyYW5zZm9ybSgpKTsKICAgICAvLyBMVCA9
IFRyW2xdICogTVtsXSAqIFRyW2NdCiAgICAgbGF5ZXJMb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUz
ZChjZW50ZXJPZmZzZXRYLCBjZW50ZXJPZmZzZXRZLCAtbGF5ZXItPmFuY2hvclBvaW50WigpKTsK
IAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkVHJhbnNmb3JtID0gcGFyZW50TWF0
cml4OwotICAgIGNvbWJpbmVkVHJhbnNmb3JtID0gY29tYmluZWRUcmFuc2Zvcm0ubXVsdExlZnQo
bGF5ZXJMb2NhbFRyYW5zZm9ybSk7CisgICAgY29tYmluZWRUcmFuc2Zvcm0gPSBjb21iaW5lZFRy
YW5zZm9ybS5tdWx0aXBseShsYXllckxvY2FsVHJhbnNmb3JtKTsKIAogICAgIEZsb2F0UmVjdCBs
YXllclJlY3QoLTAuNSAqIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpLCAtMC41ICogbGF5ZXItPmJv
dW5kcygpLmhlaWdodCgpLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwgbGF5ZXItPmJvdW5kcygp
LmhlaWdodCgpKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkTGF5ZXJSZWN0OwpAQCAtNTM5LDcg
KzUzOSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnNSZWN1cnNp
dmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyCiAgICAgfQogCiAgICAgLy8gQXBwbHkg
dGhlIHN1YmxheWVyIHRyYW5zZm9ybSBhdCB0aGUgY2VudGVyIG9mIHRoZSBsYXllci4KLSAgICBz
dWJsYXllck1hdHJpeC5tdWx0TGVmdChsYXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisgICAg
c3VibGF5ZXJNYXRyaXgubXVsdGlwbHkobGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOwogCiAg
ICAgLy8gVGhlIG9yaWdpbiBvZiB0aGUgc3VibGF5ZXJzIGlzIHRoZSB0b3AgbGVmdCBjb3JuZXIg
b2YgdGhlIGxheWVyLCBub3QgdGhlCiAgICAgLy8gY2VudGVyLiBUaGUgbWF0cml4IHBhc3NlZCBk
b3duIHRvIHRoZSBzdWJsYXllcnMgaXMgdGhlcmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcApp
bmRleCAwM2Y5YjdjNWU3ZWEzNzljMjVhYWJkNGI2Y2I2ZTI0YmNmM2VjMGQzLi4yZTIwODJkNDE3
YjBiMDIxNmI3NmY5ZWYxNTBlYTE0MWZkNTgzNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcApA
QCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0CiAgICAgY29uc3QgR0xm
bG9hdCB1bml0UmVjdFtdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9OwogICAgIEdMX0NNRChn
bFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVj
dCkpCiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeChkYXRhKCkucHJvamVjdGlvbk1hdHJpeCkubXVsdExlZnQobW9kZWxWaWV3TWF0cml4KS5t
dWx0TGVmdChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChkYXRhKCkucHJvamVjdGlvbk1hdHJpeCkubXVs
dGlwbHkobW9kZWxWaWV3TWF0cml4KS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKICAg
ICAgICAgICAgIHRhcmdldFJlY3Qud2lkdGgoKSwgMCwgMCwgMCwKICAgICAgICAgICAgIDAsIHRh
cmdldFJlY3QuaGVpZ2h0KCksIDAsIDAsCiAgICAgICAgICAgICAwLCAwLCAxLCAwLApAQCAtNjA2
LDcgKzYwNiw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpwYWludFRvVGFyZ2V0KGNvbnN0IEJp
dG1hcFRleHR1cmUmIGFTdXJmYWNlLCBjb25zdCBJbnRTaXplCiAgICAgY29uc3QgQml0bWFwVGV4
dHVyZUdMJiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oYVN1
cmZhY2UpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBtb2RlbC12aWV3LXByb2plY3Rpb24gbWF0cml4
IHRvIGRpc3BsYXkgb24gc2NyZWVuLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9
IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoc3VyZmFjZVNpemUsIHRydWUpLm11bHRMZWZ0KHRyYW5z
Zm9ybSkubXVsdExlZnQoCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gY3JlYXRl
UHJvamVjdGlvbk1hdHJpeChzdXJmYWNlU2l6ZSwgdHJ1ZSkubXVsdGlwbHkodHJhbnNmb3JtKS5t
dWx0aXBseSgKICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cmZhY2UubV9hY3R1YWxTaXplLndpZHRoKCksIDAsIDAsIDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCBzdXJmYWNlLm1fYWN0dWFsU2l6ZS5oZWlnaHQoKSwg
MCwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuY3BwCmluZGV4IDc1ZmI0Mjc0YWQzOGI5MWVlZTMzOTkwNjc3MmNjYWYx
Y2U1ZGM1NTAuLjIzODY1MjMwNWI3OGJhMjAwNWI0YmFjMWI5MTM0NWMwNDJjZDAzODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NM
YXllclF0LmNwcApAQCAtNTI5LDEyICs1MjksMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBs
Ojp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIC8vIGhhdmUgdG8gbWFpbnRhaW4gdGhhdCBvdXJzZWx2
ZXMgZm9yIDNELgogICAgIGxvY2FsVHJhbnNmb3JtCiAgICAgICAgICAgICAudHJhbnNsYXRlM2Qo
b3JpZ2luWCArIG1fc3RhdGUucG9zLngoKSwgb3JpZ2luWSArIG1fc3RhdGUucG9zLnkoKSwgbV9z
dGF0ZS5hbmNob3JQb2ludC56KCkpCi0gICAgICAgICAgICAubXVsdExlZnQobV9iYXNlVHJhbnNm
b3JtKQorICAgICAgICAgICAgLm11bHRpcGx5KG1fYmFzZVRyYW5zZm9ybSkKICAgICAgICAgICAg
IC50cmFuc2xhdGUzZCgtb3JpZ2luWCwgLW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50Lnoo
KSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgM0QgdHJhbnNmb3JtIG9mIHRoaXMgaXRl
bSwgd2l0aCB0aGUgYW5jZXN0b3JzJyB0cmFuc2Zvcm0gYmFrZWQgaW4uCiAgICAgbV90cmFuc2Zv
cm1SZWxhdGl2ZVRvUm9vdExheWVyID0gVHJhbnNmb3JtYXRpb25NYXRyaXgocGFyZW50ID8gcGFy
ZW50LT5tX3RyYW5zZm9ybVJlbGF0aXZlVG9Sb290TGF5ZXIgOiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubXVsdExlZnQo
bG9jYWxUcmFuc2Zvcm0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAubXVsdGlwbHkobG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgLy8gTm93IHdlIGhhdmUgZW5vdWdo
IGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgbGF5ZXIgaXMgZmFjaW5nIGJhY2t3YXJk
cy4KICAgICBpZiAoIW1fc3RhdGUuYmFja2ZhY2VWaXNpYmlsaXR5ICYmIG1fdHJhbnNmb3JtUmVs
YXRpdmVUb1Jvb3RMYXllci5pbnZlcnNlKCkubTMzKCkgPCAwKSB7CkBAIC01NjIsNyArNTYyLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGlmICgh
bV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgbV90cmFu
c2Zvcm1SZWxhdGl2ZVRvUm9vdExheWVyCiAgICAgICAgICAgICAudHJhbnNsYXRlKG1fc2l6ZS53
aWR0aCgpIC8gMiwgbV9zaXplLmhlaWdodCgpIC8yKQotICAgICAgICAgICAgLm11bHRMZWZ0KG1f
c3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pCisgICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5j
aGlsZHJlblRyYW5zZm9ybSkKICAgICAgICAgICAgIC50cmFuc2xhdGUoLW1fc2l6ZS53aWR0aCgp
IC8gMiwgLW1fc2l6ZS5oZWlnaHQoKSAvMik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2Rl
LmNwcAppbmRleCAwOTA1MWY5NjU0OWFlOTA3OTRkNzVmMjlmOGU2YjY2YTZiN2I2MjQ5Li5iZjUz
ZTYxMjM1NTVmMjExMzlhYzhjYjMyYTBjNWE5NWIxYzBlOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Tm9kZS5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21w
dXRlTG9jYWxUcmFuc2Zvcm0oKQogICAgIG1fdHJhbnNmb3Jtcy5sb2NhbCA9CiAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkKICAgICAgICAgLnRyYW5zbGF0ZTNkKG9yaWdpblggKyBtX3N0
YXRlLnBvcy54KCksIG9yaWdpblkgKyBtX3N0YXRlLnBvcy55KCksIG1fc3RhdGUuYW5jaG9yUG9p
bnQueigpKQotICAgICAgICAubXVsdExlZnQobV9zdGF0ZS50cmFuc2Zvcm0pCisgICAgICAgIC5t
dWx0aXBseShtX3N0YXRlLnRyYW5zZm9ybSkKICAgICAgICAgLnRyYW5zbGF0ZTNkKC1vcmlnaW5Y
LCAtb3JpZ2luWSwgLW1fc3RhdGUuYW5jaG9yUG9pbnQueigpKTsKICAgICBtX3RyYW5zZm9ybXMu
bG9jYWxEaXJ0eSA9IGZhbHNlOwogfQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgVGV4dHVyZU1h
cHBlck5vZGU6OmNvbXB1dGVSZXBsaWNhVHJhbnNmb3JtKCkKICAgICBtX25lYXJlc3RTdXJmYWNl
U2l6ZSA9IG5lYXJlc3RTdXJmYWNlU2l6ZSgpOwogCiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IFRy
YW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIG1fdHJhbnNmb3Jtcy5yZXBsaWNhID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkubXVsdExlZnQobV9zdGF0ZS5yZXBs
aWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCk7CisgICAgICAgIG1fdHJhbnNmb3Jtcy5yZXBs
aWNhID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm1zLnRhcmdldCkubXVsdGlwbHko
bV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpj
b21wdXRlUmVwbGljYVRyYW5zZm9ybSgpCiAgICAgbV90cmFuc2Zvcm1zLnJlcGxpY2EgPQogICAg
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoKQogICAgICAgICAgICAgICAgIC50cmFuc2xh
dGUob3JpZ2luWCwgb3JpZ2luWSkKLSAgICAgICAgICAgICAgICAubXVsdExlZnQobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCkKKyAgICAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3Jtcy5sb2NhbCkKICAgICAgICAgICAg
ICAgICAudHJhbnNsYXRlKC1vcmlnaW5YLCAtb3JpZ2luWSk7CiB9CiAKQEAgLTM3Nyw3ICszNzcs
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpjb21wdXRlVHJhbnNmb3JtYXRpb25zKCkKICAg
ICBUZXh0dXJlTWFwcGVyTm9kZSogcGFyZW50ID0gbV9wYXJlbnQ7CiAgICAgY29tcHV0ZUxvY2Fs
VHJhbnNmb3JtKCk7CiAKLSAgICBtX3RyYW5zZm9ybXMudGFyZ2V0ID0gVHJhbnNmb3JtYXRpb25N
YXRyaXgocGFyZW50ID8gcGFyZW50LT5tX3RyYW5zZm9ybXMuZm9yRGVzY2VuZGFudHMgOiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKS5tdWx0TGVmdChtX3RyYW5zZm9ybXMubG9jYWwpOworICAgIG1f
dHJhbnNmb3Jtcy50YXJnZXQgPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChwYXJlbnQgPyBwYXJlbnQt
Pm1fdHJhbnNmb3Jtcy5mb3JEZXNjZW5kYW50cyA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLm11
bHRpcGx5KG1fdHJhbnNmb3Jtcy5sb2NhbCk7CiAgICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRh
bnRzID0gKG1fbGF5ZXJUeXBlID09IENsaXBMYXllciA/IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkg
OiBtX3RyYW5zZm9ybXMudGFyZ2V0KTsKIAogICAgIGlmIChtX2VmZmVjdFRhcmdldCkKQEAgLTQw
OCwxMCArNDA4LDEwIEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmNvbXB1dGVUcmFuc2Zvcm1h
dGlvbnMoKQogICAgIGlmIChtX3RyYW5zZm9ybXMucGVyc3BlY3RpdmVEaXJ0eSkKICAgICAgICAg
bV90cmFuc2Zvcm1zLnBlcnNwZWN0aXZlID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKQogICAgICAg
ICAgICAgLnRyYW5zbGF0ZShjZW50ZXJQb2ludC54KCksIGNlbnRlclBvaW50LnkoKSkKLSAgICAg
ICAgICAgIC5tdWx0TGVmdChtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKQorICAgICAgICAgICAg
Lm11bHRpcGx5KG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICAgICAudHJhbnNs
YXRlKC1jZW50ZXJQb2ludC54KCksIC1jZW50ZXJQb2ludC55KCkpOwogICAgIG1fdHJhbnNmb3Jt
cy5wZXJzcGVjdGl2ZURpcnR5ID0gZmFsc2U7Ci0gICAgbV90cmFuc2Zvcm1zLmZvckRlc2NlbmRh
bnRzLm11bHRMZWZ0KG1fdHJhbnNmb3Jtcy5wZXJzcGVjdGl2ZSk7CisgICAgbV90cmFuc2Zvcm1z
LmZvckRlc2NlbmRhbnRzLm11bHRpcGx5KG1fdHJhbnNmb3Jtcy5wZXJzcGVjdGl2ZSk7CiB9CiAK
IHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnVwbG9hZFRleHR1cmVGcm9tQ29udGVudChUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgR3JhcGhp
Y3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0
aW9uLmgKaW5kZXggMGEwYWFmMGE5OWExMjg4ZWQ0MDE5MTE3ODU4NjM3ZWVmNzkwMDNmZS4uZGQ1
ZGFlMmRlY2U5NjQxZDg2Y2IyZTE5NjJlZWViODkzN2IxYmViMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEludFNpemUmKSBjb25zdAogICAgIHsKLSAgICAgICAgdHJhbnNmb3JtLm11bHRM
ZWZ0KFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbWF0cml4KSk7CisgICAgICAgIHRyYW5zZm9ybS5t
dWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24u
aAppbmRleCBmZDliMjdlYmUxMDgyNzM3NjVmOGQ4OTExZGFjYjZlOTY5N2QwMmNjLi42ZjRlNzI1
NmNjMjljMWY3MjcwNmZmNzMwYmEzZTZhZmMzZGRhNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0
cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
SW50U2l6ZSYpIGNvbnN0CiAgICAgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRy
aXgobV9hLCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7Ci0gICAgICAgIHRyYW5zZm9ybS5tdWx0
TGVmdChUcmFuc2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpKTsKKyAgICAgICAgdHJhbnNmb3JtLm11
bHRpcGx5KG1hdHJpeCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggMzU3YTE0MGUzMWM3ZmU2OTljNTMx
OTg3NDhkNmQ2YzZhMjAwZmMwOC4uYzcyODNhNTA3MDEzOGRhNDE5MjZiZTU5Yjk2YmRjOWJkMjQ2
NTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTU1LDIx
ICs1NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB3ZWJtYXN0ZXJzIC0gYXJlIHRvIGJl
IGhlbGQgcmVzcG9uc2libGUuIEJhc2ljYWxseSwgZG9uJ3QgYmUgYSBqZXJrLCBhbmQgcmVtZW1i
ZXIgdGhhdCBhbnl0aGluZyBmcmVlIGNvbWVzIAogLy8gd2l0aCBubyBndWFyYW50ZWUuCiAKLS8v
IEEgTm90ZSBBYm91dCByb3ctbWFqb3IgdnMuIGNvbHVtbiBtYWpvciBtYXRyaXhlcworLy8gQSBj
bGFyaWZpY2F0aW9uIGFib3V0IHRoZSBzdG9yYWdlIG9mIG1hdHJpeCBlbGVtZW50cwogLy8KLS8v
IFRoZSBjbGllbnRzIG9mIHRoaXMgY2xhc3MgKENTU01hdHJpeCBhbmQgU1ZHTWF0cml4KSBhc3N1
bWUgYSBjb2x1bW4tbWFqb3Igb3JkZXJpbmcuCi0vLyBUaGF0IG1lYW5zIHRoYXQgd2hlbiB0aGUg
bWF0cml4IGlzIGluaXRpYWxpemVkIHdpdGggMTYgdmFsdWVzLCB0aGUgZmlyc3QgNCB2YWx1ZXMK
LS8vIGdvIGluIHRoZSA0IHJvd3Mgb2YgdGhlIGZpcnN0IGNvbHVtbiwgZXRjLiBBbmQgaW4gdGhl
IGRlcmVmZXJlbmNpbmcgY2FsbHMsIHRoZSBmaXJzdAotLy8gZGlnaXQgaXMgdGhlIGNvbHVtbiAo
ZS5nLiwgbTIzKCkgaXMgY29sdW1uIDIgcm93IDMpLiBCZWNhdXNlIEMrKyB1c2VzIHJvdy1tYWpv
ciBhcnJheXMgCi0vLyB0aGUgaW50ZXJuYWwgbWF0cml4IGlzIHN0b3JlZCBpbiByb3ctbWFqb3Ig
b3JkZXIsIHNvIG1bMl1bMF0gbWVhbnMgcm93IDIsIGNvbHVtbiAwLiBUaGlzCi0vLyBoYXMgbm8g
YmVhcmluZyBvbiBob3cgdGhlIG1hdHJpeCBpcyB2aWV3ZWQgb24gdGhlIG91dHNpZGUsIHNpbmNl
IGFsbCBhY2Nlc3MgaXMgZG9uZQotLy8gd2l0aCBmdW5jdGlvbiBjYWxscy4gQnV0IGl0IGRvZXMg
aGVscCBtYWtlIHRoZSBjb2RlIG1vcmUgY2xlYXIgaWYgeW91IGtub3cgdGhhdC4KKy8vIFRoaXMg
Y2xhc3MgdXNlcyBhIDIgZGltZW5zaW9uYWwgYXJyYXkgaW50ZXJuYWxseSB0byBzdG9yZSB0aGUg
ZWxlbWVudHMgb2YgdGhlIG1hdHJpeC4gIFRoZSBmaXJzdCBpbmRleCBpbnRvIAorLy8gdGhlIGFy
cmF5IHJlZmVycyB0byB0aGUgY29sdW1uIHRoYXQgdGhlIGVsZW1lbnQgbGllcyBpbjsgdGhlIHNl
Y29uZCBpbmRleCByZWZlcnMgdG8gdGhlIHJvdy4KIC8vCi0vLyBGSVhNRTogTXVsdGlwbHkgY2Fs
bHMgYXJlIG5hbWVkIGZvciB3aGF0IHRoZXkgZG8gaW4gdGhlIGludGVybmFsLCByb3ctbWFqb3Ig
d29ybGQuIAotLy8gbXVsdExlZnQgaXMgYWN0dWFsbHkgYSBtdWx0UmlnaHQgaW4gYSBjb2x1bW4t
bWFqb3Igd29ybGQsIGFuZCBtdWx0aXBseSBpcyBhIG11bHRMZWZ0IAotLy8gaW4gYSBjb2x1bW4t
bWFqb3Igd29ybGQuIEZvciBub3cgSSd2ZSBsZWZ0IGl0IHRoYXQgd2F5IHRvIGF2b2lkIHRvbyBt
YW55IGNvbmZ1c2luZyAKLS8vIGNoYW5nZXMgdG8gdGhlIGNvZGUuIEluIHBhcnRpY3VsYXIgQWZm
aW5lVHJhbnNmb3JtIHVzZXMgdGhlc2Ugc2FtZSB0ZXJtcyBmb3IgdGhlCi0vLyBvcHBvc2l0ZSBv
cGVyYXRpb25zLiBTbyB3ZSBoYXZlIHRvIGJlIFZFUlkgY2FyZWZ1bCB3aGVuIHdlIGNoYW5nZSB0
aGVtLgorLy8gSW4gb3RoZXIgd29yZHMsIHRoaXMgaXMgdGhlIGxheW91dCBvZiB0aGUgbWF0cml4
OgorLy8KKy8vIHwgbV9tYXRyaXhbMF1bMF0gbV9tYXRyaXhbMV1bMF0gbV9tYXRyaXhbMl1bMF0g
bV9tYXRyaXhbM11bMF0gfAorLy8gfCBtX21hdHJpeFswXVsxXSBtX21hdHJpeFsxXVsxXSBtX21h
dHJpeFsyXVsxXSBtX21hdHJpeFszXVsxXSB8CisvLyB8IG1fbWF0cml4WzBdWzJdIG1fbWF0cml4
WzFdWzJdIG1fbWF0cml4WzJdWzJdIG1fbWF0cml4WzNdWzJdIHwKKy8vIHwgbV9tYXRyaXhbMF1b
M10gbV9tYXRyaXhbMV1bM10gbV9tYXRyaXhbMl1bM10gbV9tYXRyaXhbM11bM10gfAogCiB0eXBl
ZGVmIGRvdWJsZSBWZWN0b3I0WzRdOwogdHlwZWRlZiBkb3VibGUgVmVjdG9yM1szXTsKQEAgLTYz
NCw3ICs2MzAsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeQogICAgIG1hdC5tX21hdHJpeFsw
XVswXSA9IHN4OwogICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IHN5OwogCi0gICAgbXVsdExlZnQo
bWF0KTsKKyAgICBtdWx0aXBseShtYXQpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtNjQ1
LDcgKzY0MSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2NhbGUzZChkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91YmxlCiAgICAgbWF0Lm1fbWF0cml4WzFd
WzFdID0gc3k7CiAgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gc3o7CiAKLSAgICBtdWx0TGVmdCht
YXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC03MzIs
NyArNzI4LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpy
b3RhdGUzZChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZQogICAgICAgICBtYXQubV9tYXRyaXhb
M11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOwog
ICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOwogICAgIH0KLSAgICBtdWx0TGVmdCht
YXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC03ODMs
NyArNzc5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpy
b3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKICAgICBtYXQubV9tYXRyaXhbM11b
MF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOwogICAg
IG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CiAgICAgCi0gICAgcm1hdC5tdWx0TGVmdChtYXQp
OworICAgIHJtYXQubXVsdGlwbHkobWF0KTsKIAogICAgIHJ4IC89IDIuMGY7CiAgICAgc2luQSA9
IHNpbihyeCk7CkBAIC04MDMsOSArNzk5LDkgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJsZSByeSwgZG91YmwKICAg
ICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhb
M11bMl0gPSAwLjBmOwogICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CiAgICAgCi0gICAg
cm1hdC5tdWx0TGVmdChtYXQpOworICAgIHJtYXQubXVsdGlwbHkobWF0KTsKIAotICAgIG11bHRM
ZWZ0KHJtYXQpOworICAgIG11bHRpcGx5KHJtYXQpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApA
QCAtODY5LDcgKzg2NSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2tldyhkb3VibGUgc3gsIGRvdWJsZSBzeSkKICAgICBtYXQubV9tYXRyaXhbMF1bMV0g
PSB0YW4oc3kpOyAvLyBub3RlIHRoYXQgdGhlIHkgc2hlYXIgZ29lcyBpbiB0aGUgZmlyc3Qgcm93
CiAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gdGFuKHN4KTsgLy8gYW5kIHRoZSB4IHNoZWFyIGlu
IHRoZSBzZWNvbmQgcm93CiAKLSAgICBtdWx0TGVmdChtYXQpOworICAgIG11bHRpcGx5KG1hdCk7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC04NzksNyArODc1LDcgQEAgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRvdWJsZSBw
KQogICAgIGlmIChwICE9IDApCiAgICAgICAgIG1hdC5tX21hdHJpeFsyXVszXSA9IC0xL3A7CiAK
LSAgICBtdWx0TGVmdChtYXQpOworICAgIG11bHRpcGx5KG1hdCk7CiAgICAgcmV0dXJuICp0aGlz
OwogfQogCkBAIC04OTYsNyArODkyLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb24KIC8vCiAv
LyAqdGhpcyA9IG1hdCAqICp0aGlzCiAvLwotVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9y
bWF0aW9uTWF0cml4OjptdWx0TGVmdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQor
VHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQogewogICAgIE1hdHJpeDQgdG1wOwogICAgIApA
QCAtMTEwNSwyNSArMTEwMSwyNSBAQCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWNvbXBv
c2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIgKiAoeHogLSB5dyksIDIgKiAoeXogKyB4dyksIDEgLSAyICogKHh4ICsgeXkpLCAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMSk7CiAgICAgCi0gICAgbXVsdExl
ZnQocm90YXRpb25NYXRyaXgpOworICAgIG11bHRpcGx5KHJvdGF0aW9uTWF0cml4KTsKICAgICAK
ICAgICAvLyBub3cgYXBwbHkgc2tldwogICAgIGlmIChkZWNvbXAuc2tld1laKSB7CiAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcDsKICAgICAgICAgdG1wLnNldE0zMigoZmxvYXQpIGRl
Y29tcC5za2V3WVopOwotICAgICAgICBtdWx0TGVmdCh0bXApOworICAgICAgICBtdWx0aXBseSh0
bXApOwogICAgIH0KICAgICAKICAgICBpZiAoZGVjb21wLnNrZXdYWikgewogICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB0bXA7CiAgICAgICAgIHRtcC5zZXRNMzEoKGZsb2F0KSBkZWNvbXAu
c2tld1haKTsKLSAgICAgICAgbXVsdExlZnQodG1wKTsKKyAgICAgICAgbXVsdGlwbHkodG1wKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGRlY29tcC5za2V3WFkpIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdG1wOwogICAgICAgICB0bXAuc2V0TTIxKChmbG9hdCkgZGVjb21wLnNrZXdY
WSk7Ci0gICAgICAgIG11bHRMZWZ0KHRtcCk7CisgICAgICAgIG11bHRpcGx5KHRtcCk7CiAgICAg
fQogICAgIAogICAgIC8vIGZpbmFsbHksIGFwcGx5IHNjYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmgKaW5kZXggYzg4MzY3NWQ5NmNhOWM0MThkYWRkMjMxNzg2YzZjMDViY2Fk
MmViMy4uZmEyN2MwZTE3MzhjOWU5NWI3YTg5YWQ2OGFhOGNjYjBiNmFjMWZmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjA4LDExICsyMDgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRGKGRvdWJsZSBmKSB7IG1fbWF0cml4WzNdWzFdID0gZjsgfQogCiAgICAg
Ly8gdGhpcyA9IHRoaXMgKiBtYXQKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHko
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpIHsgcmV0dXJuICp0aGlzICo9IHQ7IH0KKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKIAotICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG11bHRMZWZ0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpOwotICAgIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBzY2FsZTNkKGRvdWJsZSBzeCwgZG91YmxlIHN5LCBkb3VibGUgc3op
OwpAQCAtMjk2LDE5ICsyOTMsMTggQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgCi0gICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQgKGkuZS4s
IGEgbXVsdFJpZ2h0KQorCisgICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgb3BlcmF0b3IqPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAg
ICB7Ci0gICAgICAgICp0aGlzID0gKnRoaXMgKiB0OwotICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIHJldHVybiBtdWx0aXBseSh0KTsKICAgICB9CiAgICAgCi0gICAgLy8gcmVzdWx0ID0g
KnRoaXMgKiB0IChpLmUuLCBhIG11bHRSaWdodCkKKyAgICAvLyByZXN1bHQgPSAqdGhpcyAqIHQK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcGVyYXRvciooY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpIGNvbnN0CiAgICAgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXN1
bHQgPSB0OwotICAgICAgICByZXN1bHQubXVsdExlZnQoKnRoaXMpOworICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCByZXN1bHQgPSAqdGhpczsKKyAgICAgICAgcmVzdWx0Lm11bHRpcGx5KHQp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTRhMWQ5MGI3ZGJkODBhMDQyMGM2MDhhNzBmYmRiZTFj
NDM1ZGRkYi4uYWMwNzI5NjhjMzRjMTJmNDdhOGJmODk2Y2RkMDY5NzEyYjFlMzY2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC05NDUsNyArOTQ1LDcgQEAg
c3RhdGljIEludFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBSZW5kZXJMYXllciogbCwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJvb3QKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSk7Ci0gICAgICAgIHRy
YW5zZm9ybSA9ICpsLT50cmFuc2Zvcm0oKSAqIHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3Jt
ID0gdHJhbnNmb3JtICogKmwtPnRyYW5zZm9ybSgpOwogCiAgICAgICAgIEludFJlY3QgY2xpcFJl
Y3QgPSBsLT5ib3VuZGluZ0JveChsKTsKICAgICAgICAgZXhwYW5kQ2xpcFJlY3RGb3JEZXNjZW5k
YW50c0FuZFJlZmxlY3Rpb24oY2xpcFJlY3QsIGwsIGwsIHBhaW50QmVoYXZpb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1YjM5ZTBkN2VmNTc1N2Yy
NjQyNDc2NTIwNmFhODk3YWRlZDNkMDEwLi5jZmFhNjVkMTk2ZmNjNjAxNDcwYjExNzc2ZDAxZmRm
ZDg2ZjJjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTk4Niw3ICsxOTg2LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVy
LmhlaWdodCgpKTsKICAgICBSZW5kZXJMYXllciogbGF5ZXI7CiAgICAgaWYgKGhhc0xheWVyKCkg
JiYgKGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSkgJiYgbGF5
ZXItPnRyYW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdExlZnQobGF5ZXItPmN1cnJl
bnRUcmFuc2Zvcm0oKSk7CisgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+Y3VycmVu
dFRyYW5zZm9ybSgpKTsKICAgICAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGlmIChj
b250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5oYXNMYXllcigpICYmIGNvbnRhaW5l
ck9iamVjdC0+c3R5bGUoKS0+aGFzUGVyc3BlY3RpdmUoKSkgewpAQCAtMTk5OCw3ICsxOTk4LDcg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBjb250YWluZXJPYmplY3QKICAgICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBw
bHlQZXJzcGVjdGl2ZShjb250YWluZXJPYmplY3QtPnN0eWxlKCktPnBlcnNwZWN0aXZlKCkpOwog
ICAgICAgICAKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0aXZl
T3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5zZm9y
bS5tdWx0aXBseShwZXJzcGVjdGl2ZU1hdHJpeCk7CisgICAgICAgIHRyYW5zZm9ybSA9IHBlcnNw
ZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmln
aHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7CiAg
ICAgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFuc2Zv
cm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUuY3Bw
CmluZGV4IGVjYzYxNGUwZTRiOWE5NGJhOTRkNmVmMjQ5YWQ2NTE3YWUyYTQyNjkuLjlmMTc3ZWE2
NWFiOWZhZTY5OWEzYWZkZjUwZWQ4NmNjZjE4ZjYzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNjAsOSArNjAsOSBAQCB2b2lkIFRyYW5zZm9y
bVN0YXRlOjphcHBseVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtRnJvbUNvbgogICAgIC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNmb3JtIGZy
b20gbGFzdCB0aW1lLCBtdWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmIChtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5z
Zm9ybURpcmVjdGlvbikKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRp
cGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIpOworICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybS5zZXQobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5zZm9ybUZyb21Db250YWlu
ZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tdWx0TGVmdCh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KTsKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9y
bUZyb21Db250YWluZXIpOwogICAgIH0gZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRl
VHJhbnNmb3JtKSB7CiAgICAgICAgIC8vIE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11
bGF0ZQogICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRp
b25NYXRyaXgodHJhbnNmb3JtRnJvbUNvbnRhaW5lcikpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHZv
aWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjp0cmFuc2xhdGUoaW50IHgsIGludCB5LCBUcmFu
c2Zvcm1BY2N1bXVsYXRpb24gYWNjCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjph
cHBseVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJvbUNv
bnRhaW5lciwgVHJhbnNmb3JtQWNjdW11bGF0aW9uIGFjY3VtdWxhdGUpCiB7Ci0gICAgbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS5tdWx0TGVmdCh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsgICAgCisg
ICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS5tdWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KTsKICAgICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKQogICAgICAgICBmbGF0
dGVuV2l0aFRyYW5zZm9ybShtX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>