<?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>119568</bug_id>
          
          <creation_ts>2013-08-08 02:43:07 -0700</creation_ts>
          <short_desc>Inserting multiple rules into an empty style sheet should avoid style recalc if possible.</short_desc>
          <delta_ts>2013-08-08 11:26:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>915360</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 02:43:07 -0700</bug_when>
    <thetext>Spin-off from bug 119475. Let&apos;s take this to the next level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915364</commentid>
    <comment_count>1</comment_count>
      <attachid>208321</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 03:00:09 -0700</bug_when>
    <thetext>Created attachment 208321
Short patch name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915380</commentid>
    <comment_count>2</comment_count>
      <attachid>208321</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-08 04:18:33 -0700</bug_when>
    <thetext>Comment on attachment 208321
Short patch name

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

&gt; Source/WebCore/css/CSSStyleSheet.cpp:289
&gt; -    RuleMutationScope mutationScope(this, mutationType);
&gt; +    RuleMutationScope mutationScope(this, RuleInsertion);

The mutation can trigger copy-on-write. In that case we might be left with dangling pointers in StyleResolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915426</commentid>
    <comment_count>3</comment_count>
      <attachid>208341</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 07:15:12 -0700</bug_when>
    <thetext>Created attachment 208341
More hardcore version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915431</commentid>
    <comment_count>4</comment_count>
      <attachid>208342</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 07:45:46 -0700</bug_when>
    <thetext>Created attachment 208342
Totally rad patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915453</commentid>
    <comment_count>5</comment_count>
      <attachid>208342</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-08 08:42:59 -0700</bug_when>
    <thetext>Comment on attachment 208342
Totally rad patch

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

&gt; Source/WebCore/css/CSSStyleSheet.h:89
&gt; +    enum WhetherContentsWereClonedForMutation { ContentsWereNotClonedForMutation = 0, ContentsWereClonedForMutation };

poetic!

&gt; Source/WebCore/dom/DocumentStyleSheetCollection.h:74
&gt; +    enum UpdateFlag { NoUpdate = 0, OptimizedUpdate, FullUpdate };

Does the = 0 do something here?

&gt; Source/WebCore/dom/DocumentStyleSheetCollection.h:137
&gt; +    // This is a mirror of m_activeAuthorStyleSheets that gets populated on demand for activeStyleSheetsContains().
&gt; +    mutable OwnPtr&lt;HashSet&lt;const CSSStyleSheet*&gt;&gt; m_weakCopyOfActiveStyleSheetListForFastLookup;

Bit clunky but I don&apos;t have great suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915454</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-08 08:44:04 -0700</bug_when>
    <thetext>It would also be good to check we have test coverage for insertion that causes cloning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915502</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-08 10:40:14 -0700</bug_when>
    <thetext>Committed r153829: &lt;http://trac.webkit.org/changeset/153829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915523</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-08-08 11:26:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/14687740&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208321</attachid>
            <date>2013-08-08 03:00:09 -0700</date>
            <delta_ts>2013-08-08 07:15:12 -0700</delta_ts>
            <desc>Short patch name</desc>
            <filename>bug-119568.diff</filename>
            <type>text/plain</type>
            <size>14038</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkOWRkNWY2Li4wYjFmYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTMtMDgtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEluc2VydGluZyBtdWx0aXBsZSBydWxlcyBpbnRvIGFuIGVtcHR5IHN0eWxlIHNoZWV0IHNo
b3VsZCBhdm9pZCBzdHlsZSByZWNhbGMgaWYgcG9zc2libGUuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzExOTU2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcyBhIGZvbGxvdy11cCB0byA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk0NzU+
LCB3aGVyZSBJIGFkZGVkIGEgaGFjayBmb3IgaW5zZXJ0aW5nCisgICAgICAgIGEgc2luZ2xlIHJ1
bGUgaW50byBhbiBlbXB0eSBzdHlsZSBzaGVldCwgdGhpcyBicm9hZGVucyB0aGUgb3B0aW1pemF0
aW9uIHRvIHN1cHBvcnQKKyAgICAgICAgYW55IG51bWJlciBvZiBydWxlcy4KKworICAgICAgICBU
aGlzIG9wdGltaXplcyB0aGUgc2NlbmFyaW8gd2hlcmUgYSBzdHlsZSBzaGVldCBpcyBhZGRlZCB0
byB0aGUgRE9NIGFuZCB0aGVuIHBvcHVsYXRlZAorICAgICAgICBydWxlLWJ5LXJ1bGUgdmlhIENT
U09NIGluc2VydFJ1bGUoKSBjYWxscy4gUHJldmlvdXNseSB3ZSdkIGRvIGEgZnVsbCBzdHlsZSBy
ZWNhbGMgZm9yCisgICAgICAgIHRoaXMgY2FzZSwgYnV0IG5vdyB3ZSdsbCB0cmVhdCBpdCB0aGUg
c2FtZSBhcyBhIGZ1bGwgc2hlZXQgYWRkZWQgYXQgb25jZS4KKworICAgICAgICAqIGNzcy9DU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRlUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6CisKKyAgICAgICAgICAgIFJlcGxhY2VkIHRo
ZSBJbnNlcnRpb25JbnRvRW1wdHlTaGVldCBydWxlIG11dGF0aW9uIHR5cGUgYnkgYSBnZW5lcmFs
IFJ1bGVJbnNlcnRpb24uCisgICAgICAgICAgICBUaGUgbXV0YXRpb24gY2FsbGJhY2sgY2hlY2tz
IGlmIHdlJ3JlIGluc2VydGluZyBpbnRvIGEgcnVsZSB0aGF0J3Mgbm90ICh5ZXQpIHBhcnQKKyAg
ICAgICAgICAgIG9mIHRoZSBkb2N1bWVudCdzIGFjdGl2ZSBzaGVldCBzZXQuIEluIHRoYXQgY2Fz
ZSwgd2UgZGVmZXIgZG9pbmcgdGhlIHN0eWxlIHNoZWV0CisgICAgICAgICAgICB1bnRpbCBhbGwg
dGhlIGluc2VydGlvbnMgYXJlIGRvbmUgKG9yIHNvbWV0aGluZyBmb3JjZXMgdXMgdG8gc3R5bGUr
bGF5b3V0LikKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzdHlsZVJlc29sdmVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6b3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnNjaGVkdWxlT3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZSk6CisKKyAgICAg
ICAgICAgIEFkZGVkIG1lY2hhbmlzbSB0byBkZWZlciBkb2luZyBhIFJlY2FsY1N0eWxlSWZOZWVk
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKToK
KworICAgICAgICAgICAgU3luY2hyb25pemUgdGhlIG9wdGltaXplZCBzdHlsZSBzaGVldCB1cGRh
dGUgaWYgdGhlcmUncyBvbmUgc2NoZWR1bGVkLgorICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRo
YXQgc3R1ZmYgbGlrZSBsYXlvdXQtZGVwZW5kZW50IHByb3BlcnR5IGFjY2VzcyB3b24ndCBvcGVy
YXRlCisgICAgICAgICAgICBvbiBzdGFsZSBzdHlsZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjpuZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2Fs
Yyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpzZXRO
ZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZXNoZWV0
c09uU3R5bGVSZWNhbGNJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6
CisKKyAgICAgICAgICAgIEhhdmUgRFNTQyB0cmFjayB0aGUga2luZCBvZiBzdHlsZSBzaGVldCB1
cGRhdGUgaXQgbmVlZHMgdG8gZG8gKGluc3RlYWQgb2YganVzdAorICAgICAgICAgICAgYSBib29s
ZWFuICJuZWVkcyB1cGRhdGUuIikgVGhpcyBpcyB1c2VkIGJ5IERvY3VtZW50OjpyZWNhbGNTdHls
ZSgpIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgdGhlIHJpZ2h0IGtpbmQgb2YgdXBkYXRlIGhh
cHBlbnMgaWYgdGhlcmUncyBvbmUgc2NoZWR1bGVkLgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKToKKwor
ICAgICAgICAgICAgQWRkZWQgaGVscGVyIHRvIGNoZWNrIGlmIGEgQ1NTU3R5bGVTaGVldCBpcyBw
YXJ0IG9mIHRoZSBhY3RpdmUgc2V0LgorCiAyMDEzLTA4LTA4ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIG1vcmUgc3R5bGUgcmVjYWxjIGNvZGUgdG8g
U3R5bGVSZXNvbHZlVHJlZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCAzYWYxY2RkLi5iNTM1YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVt
ZW50LmgiCkBAIC0xNTUsNyArMTU2LDEzIEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRl
UnVsZXMoUnVsZU11dGF0aW9uVHlwZSBtdXRhdGlvblR5cGUpCiAgICAgRG9jdW1lbnQqIG93bmVy
ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIHJldHVybjsKLSAg
ICBvd25lci0+c3R5bGVSZXNvbHZlckNoYW5nZWQobXV0YXRpb25UeXBlID09IEluc2VydGlvbklu
dG9FbXB0eVNoZWV0ID8gRGVmZXJSZWNhbGNTdHlsZUlmTmVlZGVkIDogRGVmZXJSZWNhbGNTdHls
ZSk7CisKKyAgICBpZiAobXV0YXRpb25UeXBlID09IFJ1bGVJbnNlcnRpb24gJiYgIW93bmVyLT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRoaXMpKSB7
CisgICAgICAgIG93bmVyLT5zY2hlZHVsZU9wdGltaXplZFN0eWxlU2hlZXRVcGRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG93bmVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChE
ZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGUoKQpA
QCAtMjc5LDggKzI4Niw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29u
c3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlID0gIWxlbmd0
aCgpID8gSW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgOiBPdGhlck11dGF0aW9uOwotICAgIFJ1bGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgbXV0YXRpb25UeXBlKTsKKyAgICBSdWxl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMsIFJ1bGVJbnNlcnRpb24pOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gbV9jb250ZW50cy0+d3JhcHBlckluc2VydFJ1bGUocnVsZSwgaW5kZXgp
OwogICAgIGlmICghc3VjY2VzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXgg
MDdmMTY0YS4uOWM5MTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhUXVlcmllcyhQYXNzUmVmUHRyPE1l
ZGlhUXVlcnlTZXQ+KTsKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpIHsg
bV90aXRsZSA9IHRpdGxlOyB9CiAKLSAgICBlbnVtIFJ1bGVNdXRhdGlvblR5cGUgeyBPdGhlck11
dGF0aW9uLCBJbnNlcnRpb25JbnRvRW1wdHlTaGVldCB9OworICAgIGVudW0gUnVsZU11dGF0aW9u
VHlwZSB7IE90aGVyTXV0YXRpb24sIFJ1bGVJbnNlcnRpb24gfTsKIAogICAgIGNsYXNzIFJ1bGVN
dXRhdGlvblNjb3BlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVsZU11dGF0aW9u
U2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDNhZWQ3YS4uMDVlYzIzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MTIsNiArNDEyLDcgQEAgRG9jdW1lbnQ6OkRvY3Vt
ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNz
ZXMpCiAgICAgLCBtX3Zpc3VhbGx5T3JkZXJlZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShD
b21wbGV0ZSkKICAgICAsIG1fYlBhcnNpbmcoZmFsc2UpCisgICAgLCBtX29wdGltaXplZFN0eWxl
U2hlZXRVcGRhdGVUaW1lcih0aGlzLCAmRG9jdW1lbnQ6Om9wdGltaXplZFN0eWxlU2hlZXRVcGRh
dGVUaW1lckZpcmVkKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKHRoaXMsICZEb2N1bWVudDo6
c3R5bGVSZWNhbGNUaW1lckZpcmVkKQogICAgICwgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRG
b3JjZShmYWxzZSkKICAgICAsIG1faW5TdHlsZVJlY2FsYyhmYWxzZSkKQEAgLTE3NTksOCArMTc2
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQog
ICAgIC8vIHJlLWF0dGFjaGluZyBvdXIgY29udGFpbmluZyBpZnJhbWUsIHdoaWNoIHdoZW4gYXNr
ZWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzVVJMQWxsb3dlZAogICAgIC8vIGhpdHMgYSBudWxs
LWRlcmVmZXJlbmNlIGR1ZSB0byBzZWN1cml0eSBjb2RlIGFsd2F5cyBhc3N1bWluZyB0aGUgZG9j
dW1lbnQgaGFzIGEgU2VjdXJpdHlPcmlnaW4uCiAKLSAgICBpZiAobV9zdHlsZVNoZWV0Q29sbGVj
dGlvbi0+bmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGMoKSkKLSAgICAg
ICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi0+dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6RnVsbFVwZGF0ZSk7CisgICAgbV9zdHlsZVNoZWV0Q29s
bGVjdGlvbi0+dXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjSWZOZWVkZWQoKTsK
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKHRoaXMpOwogCkBAIC0xODQ1LDcg
KzE4NDUsMTAgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVJZk5lZWRlZCgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXZpZXcoKSB8fCAoIXZpZXcoKS0+
aXNJbkxheW91dCgpICYmICF2aWV3KCktPmlzUGFpbnRpbmcoKSkpOwotICAgIAorCisgICAgaWYg
KG1fb3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSWZOZWVkZWQpOworCiAgICAgaWYgKCghbV9w
ZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSAmJiAhY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkp
IHx8IGluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzEzNSw4ICszMTM4LDI0
IEBAIHZvaWQgRG9jdW1lbnQ6OmV2YWx1YXRlTWVkaWFRdWVyeUxpc3QoKQogICAgICAgICBtX21l
ZGlhUXVlcnlNYXRjaGVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZCgpOwogfQogCit2b2lkIERvY3Vt
ZW50OjpvcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4q
KQoreworICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSWZOZWVkZWQpOworfQor
Cit2b2lkIERvY3VtZW50OjpzY2hlZHVsZU9wdGltaXplZFN0eWxlU2hlZXRVcGRhdGUoKQorewor
ICAgIGlmIChtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICByZXR1cm47CisgICAgc3R5bGVTaGVldENvbGxlY3Rpb24oKS0+c2V0TmVlZHNVcGRhdGVB
Y3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGMoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjo6T3B0aW1pemVkVXBkYXRlKTsKKyAgICBtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1l
ci5zdGFydE9uZVNob3QoMCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJDaGFu
Z2VkKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiB7CisgICAgaWYgKG1fb3B0
aW1pemVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fb3B0aW1p
emVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLnN0b3AoKTsKKwogICAgIC8vIERvbid0IGJvdGhlciB1
cGRhdGluZywgc2luY2Ugd2UgaGF2ZW4ndCBsb2FkZWQgYWxsIG91ciBzdHlsZSBpbmZvIHlldAog
ICAgIC8vIGFuZCBoYXZlbid0IGNhbGN1bGF0ZWQgdGhlIHN0eWxlIHNlbGVjdG9yIGZvciB0aGUg
Zmlyc3QgdGltZS4KICAgICBpZiAoIWF0dGFjaGVkKCkgfHwgKCFtX2RpZENhbGN1bGF0ZVN0eWxl
UmVzb2x2ZXIgJiYgIWhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA0NTQ4YjFlLi42ZWU5ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgxLDYg
KzQ4MSw4IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2Vk
KFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKIAorICAgIHZvaWQgc2NoZWR1bGVPcHRpbWl6ZWRT
dHlsZVNoZWV0VXBkYXRlKCk7CisKICAgICB2b2lkIGRpZEFjY2Vzc1N0eWxlUmVzb2x2ZXIoKTsK
IAogICAgIHZvaWQgZXZhbHVhdGVNZWRpYVF1ZXJ5TGlzdCgpOwpAQCAtNjkwLDYgKzY5Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdTdHlsZVJlY2FsYygpIGNvbnN0OwogICAgIGJv
b2wgaGFzUGVuZGluZ0ZvcmNlZFN0eWxlUmVjYWxjKCkgY29uc3Q7CiAgICAgdm9pZCBzdHlsZVJl
Y2FsY1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CisgICAgdm9pZCBvcHRpbWl6ZWRTdHls
ZVNoZWV0VXBkYXRlVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAogICAgIHZvaWQgcmVn
aXN0ZXJOb2RlTGlzdChMaXZlTm9kZUxpc3RCYXNlKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm9k
ZUxpc3QoTGl2ZU5vZGVMaXN0QmFzZSopOwpAQCAtMTM1NSw3ICsxMzU4LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdmlzdWFsbHlPcmRlcmVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRl
OwogICAgIGJvb2wgbV9iUGFyc2luZzsKLSAgICAKKworICAgIFRpbWVyPERvY3VtZW50PiBtX29w
dGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lcjsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9zdHls
ZVJlY2FsY1RpbWVyOwogICAgIGJvb2wgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZTsK
ICAgICBib29sIG1faW5TdHlsZVJlY2FsYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCAwNDlkNmM3Li5lNWRkMTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OkRv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9w
ZW5kaW5nU3R5bGVzaGVldHMoMCkKICAgICAsIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxp
ZChmYWxzZSkKICAgICAsIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQoZmFsc2UpCi0gICAg
LCBtX25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKGZhbHNlKQorICAg
ICwgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyhOb1VwZGF0ZSkK
ICAgICAsIG1fdXNlc1NpYmxpbmdSdWxlcyhmYWxzZSkKICAgICAsIG1fdXNlc1NpYmxpbmdSdWxl
c092ZXJyaWRlKGZhbHNlKQogICAgICwgbV91c2VzRmlyc3RMaW5lUnVsZXMoZmFsc2UpCkBAIC00
NTksNyArNDU5LDcgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVB
Y3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICAgICAgLy8gU1ZHIDx1
c2U+IGVsZW1lbnQgbWF5IG1hbmFnZSB0byBpbnZhbGlkYXRlIHN0eWxlIHNlbGVjdG9yIGluIHRo
ZSBtaWRkbGUgb2YgYSBzdHlsZSByZWNhbGMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDM0NAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgZml4ZWQgaW4gU1ZHIGFuZCB0aGUgY2FsbCBzaXRlIHJlcGxhY2VkIGJ5IEFTU0VSVCgh
bV9pblN0eWxlUmVjYWxjKS4KLSAgICAgICAgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRz
T25TdHlsZVJlY2FsYyA9IHRydWU7CisgICAgICAgIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNo
ZWV0c09uU3R5bGVSZWNhbGMgPSBGdWxsVXBkYXRlOwogICAgICAgICBtX2RvY3VtZW50LT5zY2hl
ZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDkz
LDE1ICs0OTMsMjcgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVB
Y3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICAgICAgfQogICAgICAg
ICByZXNldENTU0ZlYXR1cmVGbGFncygpOwogICAgIH0KKworICAgIG1fYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHNTZXQuY2xlYXIoKTsKICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLnN3YXAo
YWN0aXZlQ1NTU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlz
dC5zd2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5bGVT
aGVldHNVc2VSZW1Vbml0cyhtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKLSAgICBtX25lZWRz
VXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjID0gZmFsc2U7CisgICAgbV9uZWVk
c1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyA9IE5vVXBkYXRlOwogCiAgICAg
bV9kb2N1bWVudC0+bm90aWZ5U2VhbWxlc3NDaGlsZERvY3VtZW50c09mU3R5bGVzaGVldFVwZGF0
ZSgpOwogCiAgICAgcmV0dXJuIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjOwogfQogCitib29sIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMoY29u
c3QgQ1NTU3R5bGVTaGVldCogc2hlZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzU2V0KSB7CisgICAgICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHNTZXQg
PSBhZG9wdFB0cihuZXcgSGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4pOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHNTZXQtPmFkZChtX2Fj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzW2ldLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fYWN0
aXZlQXV0aG9yU3R5bGVTaGVldHNTZXQtPmNvbnRhaW5zKHNoZWV0KTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKaW5kZXgg
NmE5Y2E0ZC4uYzhjZGFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5oCkBAIC03MSw5ICs3MSwyMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRBdXRob3JTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gYXV0aG9yU2hl
ZXQpOwogICAgIHZvaWQgYWRkVXNlclNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRz
PiB1c2VyU2hlZXQpOwogCi0gICAgYm9vbCBuZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25T
dHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0
c09uU3R5bGVSZWNhbGM7IH0KKyAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9w
dGltaXplZFVwZGF0ZSwgRnVsbFVwZGF0ZSB9OworCisgICAgVXBkYXRlRmxhZyBuZWVkc1VwZGF0
ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNV
cGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7IH0KKyAgICB2b2lkIHNldE5lZWRz
VXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKFVwZGF0ZUZsYWcgdXBkYXRlRmxh
ZykKKyAgICB7CisgICAgICAgIGlmICh1cGRhdGVGbGFnID4gbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0
eWxlc2hlZXRzT25TdHlsZVJlY2FsYykKKyAgICAgICAgICAgIG1fbmVlZHNVcGRhdGVBY3RpdmVT
dHlsZXNoZWV0c09uU3R5bGVSZWNhbGMgPSB1cGRhdGVGbGFnOworICAgIH0KKworICAgIHZvaWQg
dXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjSWZOZWVkZWQoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGMpCisg
ICAgICAgICAgICB1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhtX25lZWRzVXBkYXRlQWN0aXZlU3R5
bGVzaGVldHNPblN0eWxlUmVjYWxjKTsKKyAgICB9CiAKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBG
dWxsVXBkYXRlLCBPcHRpbWl6ZWRVcGRhdGUgfTsKICAgICBib29sIHVwZGF0ZUFjdGl2ZVN0eWxl
U2hlZXRzKFVwZGF0ZUZsYWcpOwogCiAgICAgU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQpAQCAt
MTAzLDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3Mo
KTsKICAgICB2b2lkIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CiAKKyAgICBib29sIGFjdGl2ZVN0
eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCopIGNvbnN0OworCiBwcml2YXRl
OgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKIApAQCAtMTE5
LDYgKzEzMyw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IG1f
c3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKIAorICAgIC8vIFRoaXMgaXMgYSBt
aXJyb3Igb2YgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyB0aGF0IGdldHMgcG9wdWxhdGVkIG9u
IGRlbWFuZCBmb3IgYWN0aXZlU3R5bGVTaGVldHNDb250YWlucygpLgorICAgIG11dGFibGUgT3du
UHRyPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+ID4gbV9hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0c1NldDsKKwogICAgIC8vIFRyYWNrIHRoZSBudW1iZXIgb2YgY3VycmVudGx5IGxvYWRpbmcg
dG9wLWxldmVsIHN0eWxlc2hlZXRzIG5lZWRlZCBmb3IgcmVuZGVyaW5nLgogICAgIC8vIFNoZWV0
cyBsb2FkZWQgdXNpbmcgdGhlIEBpbXBvcnQgZGlyZWN0aXZlIGFyZSBub3QgaW5jbHVkZWQgaW4g
dGhpcyBjb3VudC4KICAgICAvLyBXZSB1c2UgdGhpcyBjb3VudCBvZiBwZW5kaW5nIHNoZWV0cyB0
byBkZXRlY3Qgd2hlbiB3ZSBjYW4gYmVnaW4gYXR0YWNoaW5nCkBAIC0xMzUsNyArMTUyLDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9hdXRob3JTdHls
ZVNoZWV0czsKIAogICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKLSAgICBi
b29sIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7CisgICAgVXBk
YXRlRmxhZyBtX25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjOwogCiAg
ICAgdHlwZWRlZiBMaXN0SGFzaFNldDxOb2RlKiwgMzI+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0
SGFzaFNldDsKICAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQgbV9zdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208341</attachid>
            <date>2013-08-08 07:15:12 -0700</date>
            <delta_ts>2013-08-08 07:45:46 -0700</delta_ts>
            <desc>More hardcore version</desc>
            <filename>bug-119568-v2.diff</filename>
            <type>text/plain</type>
            <size>19344</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMTVlOTIwLi40NGRlZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMg
QEAKKzIwMTMtMDgtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEluc2VydGluZyBtdWx0aXBsZSBydWxlcyBpbnRvIGFuIGVtcHR5IHN0eWxlIHNoZWV0IHNo
b3VsZCBhdm9pZCBzdHlsZSByZWNhbGMgaWYgcG9zc2libGUuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzExOTU2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcyBhIGZvbGxvdy11cCB0byA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk0NzU+
LCB3aGVyZSBJIGFkZGVkIGEgaGFjayBmb3IgaW5zZXJ0aW5nCisgICAgICAgIGEgc2luZ2xlIHJ1
bGUgaW50byBhbiBlbXB0eSBzdHlsZSBzaGVldCwgdGhpcyBicm9hZGVucyB0aGUgb3B0aW1pemF0
aW9uIHRvIHN1cHBvcnQKKyAgICAgICAgYW55IG51bWJlciBvZiBydWxlcy4KKworICAgICAgICBU
aGlzIG9wdGltaXplcyB0aGUgc2NlbmFyaW8gd2hlcmUgYSBzdHlsZSBzaGVldCBpcyBhZGRlZCB0
byB0aGUgRE9NIGFuZCB0aGVuIHBvcHVsYXRlZAorICAgICAgICBydWxlLWJ5LXJ1bGUgdmlhIENT
U09NIGluc2VydFJ1bGUoKS9hZGRSdWxlKCkgY2FsbHMuIFByZXZpb3VzbHkgd2UnZCBkbyBhIGZ1
bGwgc3R5bGUKKyAgICAgICAgcmVjYWxjIGZvciB0aGlzIGNhc2UsIGJ1dCBub3cgd2UnbGwgdHJl
YXQgaXQgdGhlIHNhbWUgYXMgYSBmdWxsIHNoZWV0IGFkZGVkIGF0IG9uY2UuCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OndpbGxNdXRhdGVSdWxlcyk6CisKKyAg
ICAgICAgICAgIE1hZGUgd2lsbE11dGF0ZVJ1bGVzKCkgcmV0dXJuIHdoZXRoZXIgdGhlIHN0eWxl
IHNoZWV0IGNvbnRlbnRzIHdlcmUgY2xvbmVkIGJ5IHRoZQorICAgICAgICAgICAgY29weS1vbi13
cml0ZSBtZWNoYW5pc20uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorCisgICAgICAgICAgICBSZXBsYWNlZCB0aGUg
SW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgbXV0YXRpb24gdHlwZSBieSBhIGdlbmVyYWwgUnVsZUlu
c2VydGlvbi4KKyAgICAgICAgICAgIFRoZSBtdXRhdGlvbiBjYWxsYmFjayBjaGVja3MgaWYgd2Un
cmUgaW5zZXJ0aW5nIGludG8gYSBydWxlIHRoYXQncyBub3QgKHlldCkgcGFydAorICAgICAgICAg
ICAgb2YgdGhlIGRvY3VtZW50J3MgYWN0aXZlIHNoZWV0IHNldC4gSW4gdGhhdCBjYXNlLCB3ZSBk
ZWZlciBkb2luZyB0aGUgc3R5bGUgc2hlZXQKKyAgICAgICAgICAgIHVudGlsIGFsbCB0aGUgaW5z
ZXJ0aW9ucyBhcmUgZG9uZSAob3Igc29tZXRoaW5nIGZvcmNlcyB1cyB0byBzdHlsZStsYXlvdXQu
KQorCisgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBvcHRpbWl6YXRpb24gb25seSBoYXBwZW5z
IGlmIHRoZSBzdHlsZSBzaGVldCBoYWQgYSBzaW5nbGUgY2xpZW50LgorICAgICAgICAgICAgU2hh
cmVkIHN0eWxlIHNoZWV0cyB0aGF0IGp1c3QgZ290IGNsb25lZCBiZWZvcmUgbXV0YXRpb24gbWF5
IGhhdmUgcG9pbnRlcnMgaW50bworICAgICAgICAgICAgdGhlbSBmcm9tIHRoZSBEb2N1bWVudCdz
IFN0eWxlUmVzb2x2ZXIsIHNvIHdlJ3JlIGZvcmNlZCB0byBkbyBhbiBpbW1lZGlhdGUgc2hlZXQK
KyAgICAgICAgICAgIHVwZGF0ZSBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0YXRpb25TY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6flJ1bGVNdXRh
dGlvblNjb3BlKToKKworICAgICAgICAgICAgTW92ZWQgdGhlc2Ugb3V0LW9mLWxpbmUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVE
ZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpk
aWRNdXRhdGUpOgorCisgICAgICAgICAgICBNYWRlIGEgc2VwYXJhdGUgbXV0YXRpb24gY2FsbGJh
Y2sgZm9yIENTU1N0eWxlRGVjbGFyYXRpb24gc2luY2UgaXRzIG5lZWRzIGFyZQorICAgICAgICAg
ICAgc28gc2ltcGxlIGNvbXBhcmVkIHRvIHRoZSBtdXRhdGlvbiBjYWxsYmFjayBmcm9tIENTU1N0
eWxlU2hlZXQuIFNlZW1zIGJldHRlcgorICAgICAgICAgICAgdGhhbiBhZGRpbmcgeWV0IGFub3Ro
ZXIgbW9kZSB0byB0aGUgZW51bS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJl
c29sdmVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6b3B0aW1pemVkU3R5
bGVTaGVldFVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNj
aGVkdWxlT3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZSk6CisKKyAgICAgICAgICAgIEFkZGVkIG1l
Y2hhbmlzbSB0byBkZWZlciBkb2luZyBhIFJlY2FsY1N0eWxlSWZOZWVkZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKToKKworICAgICAgICAgICAg
U3luY2hyb25pemUgdGhlIG9wdGltaXplZCBzdHlsZSBzaGVldCB1cGRhdGUgaWYgdGhlcmUncyBv
bmUgc2NoZWR1bGVkLgorICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgc3R1ZmYgbGlrZSBs
YXlvdXQtZGVwZW5kZW50IHByb3BlcnR5IGFjY2VzcyB3b24ndCBvcGVyYXRlCisgICAgICAgICAg
ICBvbiBzdGFsZSBzdHlsZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
OjpwZW5kaW5nVXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjpzZXRQZW5kaW5nVXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpmbHVzaFBlbmRpbmdVcGRhdGVzKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246
OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKworICAgICAgICAgICAgSGF2ZSBEU1NDIHRyYWNr
IHRoZSBraW5kIG9mIHN0eWxlIHNoZWV0IHVwZGF0ZSBpdCBuZWVkcyB0byBkbyAoaW5zdGVhZCBv
ZiBqdXN0CisgICAgICAgICAgICBhIGJvb2xlYW4gIm5lZWRzIHVwZGF0ZS4iKSBUaGlzIGlzIHVz
ZWQgYnkgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKCkgdG8gbWFrZSBzdXJlCisgICAgICAgICAgICB0
aGUgcmlnaHQga2luZCBvZiB1cGRhdGUgaGFwcGVucyBpZiB0aGVyZSdzIG9uZSBzY2hlZHVsZWQu
CisKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFjdGl2
ZVN0eWxlU2hlZXRzQ29udGFpbnMpOgorCisgICAgICAgICAgICBBZGRlZCBoZWxwZXIgdG8gY2hl
Y2sgaWYgYSBDU1NTdHlsZVNoZWV0IGlzIHBhcnQgb2YgdGhlIGFjdGl2ZSBzZXQuCisKIDIwMTMt
MDgtMDggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBJbnRyb2R1Y2UgdG9TVkdNUGF0aEVsZW1lbnQoKSwgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDNhZjFjZGQuLjU5ZmY5OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
LCAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKQEAgLTEyNiwxMiArMTI3LDEyIEBAIENTU1N0
eWxlU2hlZXQ6On5DU1NTdHlsZVNoZWV0KCkKICAgICBtX2NvbnRlbnRzLT51bnJlZ2lzdGVyQ2xp
ZW50KHRoaXMpOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6OndpbGxNdXRhdGVSdWxlcygpCitD
U1NTdHlsZVNoZWV0OjpXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24gQ1NTU3R5
bGVTaGVldDo6d2lsbE11dGF0ZVJ1bGVzKCkKIHsKICAgICAvLyBJZiB3ZSBhcmUgdGhlIG9ubHkg
Y2xpZW50IGl0IGlzIHNhZmUgdG8gbXV0YXRlLgogICAgIGlmIChtX2NvbnRlbnRzLT5oYXNPbmVD
bGllbnQoKSAmJiAhbV9jb250ZW50cy0+aXNJbk1lbW9yeUNhY2hlKCkpIHsKICAgICAgICAgbV9j
b250ZW50cy0+c2V0TXV0YWJsZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBD
b250ZW50c1dlcmVOb3RDbG9uZWRGb3JNdXRhdGlvbjsKICAgICB9CiAgICAgLy8gT25seSBjYWNo
ZWFibGUgc3R5bGVzaGVldHMgc2hvdWxkIGhhdmUgbXVsdGlwbGUgY2xpZW50cy4KICAgICBBU1NF
UlQobV9jb250ZW50cy0+aXNDYWNoZWFibGUoKSk7CkBAIC0xNDUsOSArMTQ2LDE4IEBAIHZvaWQg
Q1NTU3R5bGVTaGVldDo6d2lsbE11dGF0ZVJ1bGVzKCkKIAogICAgIC8vIEFueSBleGlzdGluZyBD
U1NPTSB3cmFwcGVycyBuZWVkIHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgY29waWVkIGNoaWxkIHJ1
bGVzLgogICAgIHJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpOworCisgICAgcmV0dXJu
IENvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6
OmRpZE11dGF0ZVJ1bGVzKFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlKQordm9pZCBDU1NT
dHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlRnJvbUNTU1N0eWxlRGVjbGFyYXRpb24oKQoreworICAg
IEFTU0VSVChtX2NvbnRlbnRzLT5pc011dGFibGUoKSk7CisgICAgQVNTRVJUKG1fY29udGVudHMt
Pmhhc09uZUNsaWVudCgpKTsKKyAgICBkaWRNdXRhdGUoKTsKK30KKwordm9pZCBDU1NTdHlsZVNo
ZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25UeXBlIG11dGF0aW9uVHlwZSwgV2hldGhl
ckNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uIGNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0
aW9uKQogewogICAgIEFTU0VSVChtX2NvbnRlbnRzLT5pc011dGFibGUoKSk7CiAgICAgQVNTRVJU
KG1fY29udGVudHMtPmhhc09uZUNsaWVudCgpKTsKQEAgLTE1NSw3ICsxNjUsMTMgQEAgdm9pZCBD
U1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25UeXBlIG11dGF0aW9uVHlw
ZSkKICAgICBEb2N1bWVudCogb3duZXIgPSBvd25lckRvY3VtZW50KCk7CiAgICAgaWYgKCFvd25l
cikKICAgICAgICAgcmV0dXJuOwotICAgIG93bmVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChtdXRh
dGlvblR5cGUgPT0gSW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgPyBEZWZlclJlY2FsY1N0eWxlSWZO
ZWVkZWQgOiBEZWZlclJlY2FsY1N0eWxlKTsKKworICAgIGlmIChtdXRhdGlvblR5cGUgPT0gUnVs
ZUluc2VydGlvbiAmJiAhY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24gJiYgIW93bmVyLT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRoaXMpKSB7
CisgICAgICAgIG93bmVyLT5zY2hlZHVsZU9wdGltaXplZFN0eWxlU2hlZXRVcGRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG93bmVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChE
ZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGUoKQpA
QCAtMjc5LDggKzI5NSw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29u
c3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlID0gIWxlbmd0
aCgpID8gSW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgOiBPdGhlck11dGF0aW9uOwotICAgIFJ1bGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgbXV0YXRpb25UeXBlKTsKKyAgICBSdWxl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMsIFJ1bGVJbnNlcnRpb24pOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gbV9jb250ZW50cy0+d3JhcHBlckluc2VydFJ1bGUocnVsZSwgaW5kZXgp
OwogICAgIGlmICghc3VjY2VzcykgewpAQCAtMzg2LDQgKzQwMSwyNyBAQCB2b2lkIENTU1N0eWxl
U2hlZXQ6OmNsZWFyQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpCiAgICAgbV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzLmNsZWFyKCk7CiB9CiAKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3Bl
OjpSdWxlTXV0YXRpb25TY29wZShDU1NTdHlsZVNoZWV0KiBzaGVldCwgUnVsZU11dGF0aW9uVHlw
ZSBtdXRhdGlvblR5cGUpCisgICAgOiBtX3N0eWxlU2hlZXQoc2hlZXQpCisgICAgLCBtX211dGF0
aW9uVHlwZShtdXRhdGlvblR5cGUpCit7CisgICAgQVNTRVJUKG1fc3R5bGVTaGVldCk7CisgICAg
bV9jb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiA9IG1fc3R5bGVTaGVldC0+d2lsbE11dGF0
ZVJ1bGVzKCk7Cit9CisKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0
YXRpb25TY29wZShDU1NSdWxlKiBydWxlKQorICAgIDogbV9zdHlsZVNoZWV0KHJ1bGUgPyBydWxl
LT5wYXJlbnRTdHlsZVNoZWV0KCkgOiAwKQorICAgICwgbV9tdXRhdGlvblR5cGUoT3RoZXJNdXRh
dGlvbikKKyAgICAsIG1fY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24oQ29udGVudHNXZXJl
Tm90Q2xvbmVkRm9yTXV0YXRpb24pCit7CisgICAgaWYgKG1fc3R5bGVTaGVldCkKKyAgICAgICAg
bV9jb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiA9IG1fc3R5bGVTaGVldC0+d2lsbE11dGF0
ZVJ1bGVzKCk7Cit9CisKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjp+UnVsZU11
dGF0aW9uU2NvcGUoKQoreworICAgIGlmIChtX3N0eWxlU2hlZXQpCisgICAgICAgIG1fc3R5bGVT
aGVldC0+ZGlkTXV0YXRlUnVsZXMobV9tdXRhdGlvblR5cGUsIG1fY29udGVudHNXZXJlQ2xvbmVk
Rm9yTXV0YXRpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAw
N2YxNjRhLi42OTM3NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTg1LDcg
Kzg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQdHI8TWVk
aWFRdWVyeVNldD4pOwogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkgeyBt
X3RpdGxlID0gdGl0bGU7IH0KIAotICAgIGVudW0gUnVsZU11dGF0aW9uVHlwZSB7IE90aGVyTXV0
YXRpb24sIEluc2VydGlvbkludG9FbXB0eVNoZWV0IH07CisgICAgZW51bSBSdWxlTXV0YXRpb25U
eXBlIHsgT3RoZXJNdXRhdGlvbiwgUnVsZUluc2VydGlvbiB9OworICAgIGVudW0gV2hldGhlckNv
bnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uIHsgQ29udGVudHNXZXJlTm90Q2xvbmVkRm9yTXV0
YXRpb24gPSAwLCBDb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiB9OwogCiAgICAgY2xhc3Mg
UnVsZU11dGF0aW9uU2NvcGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdWxlTXV0
YXRpb25TY29wZSk7CkBAIC05NywxMCArOTgsMTIgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAg
ICAgICAgIENTU1N0eWxlU2hlZXQqIG1fc3R5bGVTaGVldDsKICAgICAgICAgUnVsZU11dGF0aW9u
VHlwZSBtX211dGF0aW9uVHlwZTsKKyAgICAgICAgV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZv
ck11dGF0aW9uIG1fY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb247CiAgICAgfTsKIAotICAg
IHZvaWQgd2lsbE11dGF0ZVJ1bGVzKCk7Ci0gICAgdm9pZCBkaWRNdXRhdGVSdWxlcyhSdWxlTXV0
YXRpb25UeXBlID0gT3RoZXJNdXRhdGlvbik7CisgICAgV2hldGhlckNvbnRlbnRzV2VyZUNsb25l
ZEZvck11dGF0aW9uIHdpbGxNdXRhdGVSdWxlcygpOworICAgIHZvaWQgZGlkTXV0YXRlUnVsZXMo
UnVsZU11dGF0aW9uVHlwZSwgV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uKTsK
KyAgICB2b2lkIGRpZE11dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogICAgIHZv
aWQgZGlkTXV0YXRlKCk7CiAgICAgCiAgICAgdm9pZCBjbGVhckNoaWxkUnVsZUNTU09NV3JhcHBl
cnMoKTsKQEAgLTEzMSwyOCArMTM0LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE93blB0cjxD
U1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CiAKLWlubGluZSBDU1NTdHls
ZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6UnVsZU11dGF0aW9uU2NvcGUoQ1NTU3R5bGVTaGVl
dCogc2hlZXQsIFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlKQotICAgIDogbV9zdHlsZVNo
ZWV0KHNoZWV0KQotICAgICwgbV9tdXRhdGlvblR5cGUobXV0YXRpb25UeXBlKQotewotICAgIGlm
IChtX3N0eWxlU2hlZXQpCi0gICAgICAgIG1fc3R5bGVTaGVldC0+d2lsbE11dGF0ZVJ1bGVzKCk7
Ci19Ci0KLWlubGluZSBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6UnVsZU11dGF0
aW9uU2NvcGUoQ1NTUnVsZSogcnVsZSkKLSAgICA6IG1fc3R5bGVTaGVldChydWxlID8gcnVsZS0+
cGFyZW50U3R5bGVTaGVldCgpIDogMCkKLSAgICAsIG1fbXV0YXRpb25UeXBlKE90aGVyTXV0YXRp
b24pCi17Ci0gICAgaWYgKG1fc3R5bGVTaGVldCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT53aWxs
TXV0YXRlUnVsZXMoKTsKLX0KLQotaW5saW5lIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNj
b3BlOjp+UnVsZU11dGF0aW9uU2NvcGUoKQotewotICAgIGlmIChtX3N0eWxlU2hlZXQpCi0gICAg
ICAgIG1fc3R5bGVTaGVldC0+ZGlkTXV0YXRlUnVsZXMobV9tdXRhdGlvblR5cGUpOwotfQotCiB9
IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOTQ5OWVhZS4uZWFhMjRiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKQEAgLTMzMSw5ICszMzEsOSBAQCB2b2lkIFN0eWxlUnVsZUNTU1N0eWxlRGVj
bGFyYXRpb246OmRpZE11dGF0ZShNdXRhdGlvblR5cGUgdHlwZSkKICAgICBpZiAodHlwZSA9PSBQ
cm9wZXJ0eUNoYW5nZWQpCiAgICAgICAgIG1fY3Nzb21DU1NWYWx1ZUNsb25lcy5jbGVhcigpOwog
Ci0gICAgLy8gU3R5bGUgc2hlZXQgbXV0YXRpb24gbmVlZHMgdG8gYmUgc2lnbmFsZWQgZXZlbiBp
ZiB0aGUgY2hhbmdlIGZhaWxlZC4gd2lsbE11dGF0ZVJ1bGVzL2RpZE11dGF0ZVJ1bGVzIG11c3Qg
cGFpci4KKyAgICAvLyBTdHlsZSBzaGVldCBtdXRhdGlvbiBuZWVkcyB0byBiZSBzaWduYWxlZCBl
dmVuIGlmIHRoZSBjaGFuZ2UgZmFpbGVkLiB3aWxsTXV0YXRlKi9kaWRNdXRhdGUqIG11c3QgcGFp
ci4KICAgICBpZiAobV9wYXJlbnRSdWxlICYmIG1fcGFyZW50UnVsZS0+cGFyZW50U3R5bGVTaGVl
dCgpKQotICAgICAgICBtX3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKS0+ZGlkTXV0YXRl
UnVsZXMoKTsKKyAgICAgICAgbV9wYXJlbnRSdWxlLT5wYXJlbnRTdHlsZVNoZWV0KCktPmRpZE11
dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBDU1NTdHlsZVNoZWV0KiBT
dHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAzYWVkN2EuLjFhY2VlMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDEyLDYgKzQxMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwg
bV92aXN1YWxseU9yZGVyZWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAg
ICAgLCBtX2JQYXJzaW5nKGZhbHNlKQorICAgICwgbV9vcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRl
VGltZXIodGhpcywgJkRvY3VtZW50OjpvcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlVGltZXJGaXJl
ZCkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxj
VGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UoZmFsc2Up
CiAgICAgLCBtX2luU3R5bGVSZWNhbGMoZmFsc2UpCkBAIC0xNzU5LDggKzE3NjAsNyBAQCB2b2lk
IERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKICAgICAvLyByZS1h
dHRhY2hpbmcgb3VyIGNvbnRhaW5pbmcgaWZyYW1lLCB3aGljaCB3aGVuIGFza2VkIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQKICAgICAvLyBoaXRzIGEgbnVsbC1kZXJlZmVyZW5j
ZSBkdWUgdG8gc2VjdXJpdHkgY29kZSBhbHdheXMgYXNzdW1pbmcgdGhlIGRvY3VtZW50IGhhcyBh
IFNlY3VyaXR5T3JpZ2luLgogCi0gICAgaWYgKG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPm5lZWRz
VXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKCkpCi0gICAgICAgIG1fc3R5bGVT
aGVldENvbGxlY3Rpb24tPnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OkZ1bGxVcGRhdGUpOworICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmZs
dXNoUGVuZGluZ1VwZGF0ZXMoKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxl
KHRoaXMpOwogCkBAIC0xODQ1LDcgKzE4NDUsMTAgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5
bGVJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IXZpZXcoKSB8fCAoIXZpZXcoKS0+aXNJbkxheW91dCgpICYmICF2aWV3KCktPmlzUGFpbnRpbmco
KSkpOwotICAgIAorCisgICAgaWYgKG1fb3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSWZOZWVk
ZWQpOworCiAgICAgaWYgKCghbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSAmJiAhY2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkpIHx8IGluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzEzNSw4ICszMTM4LDI0IEBAIHZvaWQgRG9jdW1lbnQ6OmV2YWx1YXRlTWVkaWFRdWVy
eUxpc3QoKQogICAgICAgICBtX21lZGlhUXVlcnlNYXRjaGVyLT5zdHlsZVJlc29sdmVyQ2hhbmdl
ZCgpOwogfQogCit2b2lkIERvY3VtZW50OjpvcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlVGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudD4qKQoreworICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSWZOZWVkZWQpOworfQorCit2b2lkIERvY3VtZW50OjpzY2hlZHVsZU9wdGltaXplZFN0
eWxlU2hlZXRVcGRhdGUoKQoreworICAgIGlmIChtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgc3R5bGVTaGVldENvbGxlY3Rp
b24oKS0+c2V0UGVuZGluZ1VwZGF0ZVR5cGUoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
T3B0aW1pemVkVXBkYXRlKTsKKyAgICBtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJDaGFuZ2Vk
KFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiB7CisgICAgaWYgKG1fb3B0aW1p
emVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fb3B0aW1pemVk
U3R5bGVTaGVldFVwZGF0ZVRpbWVyLnN0b3AoKTsKKwogICAgIC8vIERvbid0IGJvdGhlciB1cGRh
dGluZywgc2luY2Ugd2UgaGF2ZW4ndCBsb2FkZWQgYWxsIG91ciBzdHlsZSBpbmZvIHlldAogICAg
IC8vIGFuZCBoYXZlbid0IGNhbGN1bGF0ZWQgdGhlIHN0eWxlIHNlbGVjdG9yIGZvciB0aGUgZmly
c3QgdGltZS4KICAgICBpZiAoIWF0dGFjaGVkKCkgfHwgKCFtX2RpZENhbGN1bGF0ZVN0eWxlUmVz
b2x2ZXIgJiYgIWhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA0NTQ4YjFlLi42ZWU5ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgxLDYgKzQ4
MSw4IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0
eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKIAorICAgIHZvaWQgc2NoZWR1bGVPcHRpbWl6ZWRTdHls
ZVNoZWV0VXBkYXRlKCk7CisKICAgICB2b2lkIGRpZEFjY2Vzc1N0eWxlUmVzb2x2ZXIoKTsKIAog
ICAgIHZvaWQgZXZhbHVhdGVNZWRpYVF1ZXJ5TGlzdCgpOwpAQCAtNjkwLDYgKzY5Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdTdHlsZVJlY2FsYygpIGNvbnN0OwogICAgIGJvb2wg
aGFzUGVuZGluZ0ZvcmNlZFN0eWxlUmVjYWxjKCkgY29uc3Q7CiAgICAgdm9pZCBzdHlsZVJlY2Fs
Y1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CisgICAgdm9pZCBvcHRpbWl6ZWRTdHlsZVNo
ZWV0VXBkYXRlVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAogICAgIHZvaWQgcmVnaXN0
ZXJOb2RlTGlzdChMaXZlTm9kZUxpc3RCYXNlKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm9kZUxp
c3QoTGl2ZU5vZGVMaXN0QmFzZSopOwpAQCAtMTM1NSw3ICsxMzU4LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fdmlzdWFsbHlPcmRlcmVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIGJvb2wgbV9iUGFyc2luZzsKLSAgICAKKworICAgIFRpbWVyPERvY3VtZW50PiBtX29wdGlt
aXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lcjsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9zdHlsZVJl
Y2FsY1RpbWVyOwogICAgIGJvb2wgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZTsKICAg
ICBib29sIG1faW5TdHlsZVJlY2FsYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCAwNDlkNmM3Li41MmY0MGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OkRvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9wZW5k
aW5nU3R5bGVzaGVldHMoMCkKICAgICAsIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZChm
YWxzZSkKICAgICAsIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQoZmFsc2UpCi0gICAgLCBt
X25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKGZhbHNlKQorICAgICwg
bV9wZW5kaW5nVXBkYXRlVHlwZShOb1VwZGF0ZSkKICAgICAsIG1fdXNlc1NpYmxpbmdSdWxlcyhm
YWxzZSkKICAgICAsIG1fdXNlc1NpYmxpbmdSdWxlc092ZXJyaWRlKGZhbHNlKQogICAgICwgbV91
c2VzRmlyc3RMaW5lUnVsZXMoZmFsc2UpCkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFn
IHVwZGF0ZUZsYWcKICAgICAgICAgLy8gU1ZHIDx1c2U+IGVsZW1lbnQgbWF5IG1hbmFnZSB0byBp
bnZhbGlkYXRlIHN0eWxlIHNlbGVjdG9yIGluIHRoZSBtaWRkbGUgb2YgYSBzdHlsZSByZWNhbGMu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDM0
NAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZml4ZWQgaW4gU1ZHIGFuZCB0aGUg
Y2FsbCBzaXRlIHJlcGxhY2VkIGJ5IEFTU0VSVCghbV9pblN0eWxlUmVjYWxjKS4KLSAgICAgICAg
bV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyA9IHRydWU7CisgICAg
ICAgIG1fcGVuZGluZ1VwZGF0ZVR5cGUgPSBGdWxsVXBkYXRlOwogICAgICAgICBtX2RvY3VtZW50
LT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtNDkzLDE1ICs0OTMsMjcgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1
cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICAgICAgfQog
ICAgICAgICByZXNldENTU0ZlYXR1cmVGbGFncygpOwogICAgIH0KKworICAgIG1fYWN0aXZlQXV0
aG9yU3R5bGVTaGVldHNTZXQuY2xlYXIoKTsKICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRz
LnN3YXAoYWN0aXZlQ1NTU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNo
ZWV0TGlzdC5zd2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIG1fdXNlc1JlbVVuaXRzID0g
c3R5bGVTaGVldHNVc2VSZW1Vbml0cyhtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKLSAgICBt
X25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjID0gZmFsc2U7CisgICAg
bV9wZW5kaW5nVXBkYXRlVHlwZSA9IE5vVXBkYXRlOwogCiAgICAgbV9kb2N1bWVudC0+bm90aWZ5
U2VhbWxlc3NDaGlsZERvY3VtZW50c09mU3R5bGVzaGVldFVwZGF0ZSgpOwogCiAgICAgcmV0dXJu
IHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjOwogfQogCitib29sIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCog
c2hlZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzU2V0KSB7
CisgICAgICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHNTZXQgPSBhZG9wdFB0cihuZXcgSGFz
aFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHNTZXQtPmFkZChtX2FjdGl2ZUF1dGhvclN0eWxlU2hl
ZXRzW2ldLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVl
dHNTZXQtPmNvbnRhaW5zKHNoZWV0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKaW5kZXggNmE5Y2E0ZC4uZjYyYjA4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5oCkBAIC03MSw5ICs3MSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRBdXRob3JTaGVldChQ
YXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gYXV0aG9yU2hlZXQpOwogICAgIHZvaWQgYWRk
VXNlclNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiB1c2VyU2hlZXQpOwogCi0g
ICAgYm9vbCBuZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYygpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7IH0K
KyAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9IDAsIE9wdGltaXplZFVwZGF0ZSwgRnVs
bFVwZGF0ZSB9OworCisgICAgVXBkYXRlRmxhZyBwZW5kaW5nVXBkYXRlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGVuZGluZ1VwZGF0ZVR5cGU7IH0KKyAgICB2b2lkIHNldFBlbmRpbmdVcGRhdGVU
eXBlKFVwZGF0ZUZsYWcgdXBkYXRlVHlwZSkKKyAgICB7CisgICAgICAgIGlmICh1cGRhdGVUeXBl
ID4gbV9wZW5kaW5nVXBkYXRlVHlwZSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1VwZGF0ZVR5cGUg
PSB1cGRhdGVUeXBlOworICAgIH0KKworICAgIHZvaWQgZmx1c2hQZW5kaW5nVXBkYXRlcygpCisg
ICAgeworICAgICAgICBpZiAobV9wZW5kaW5nVXBkYXRlVHlwZSAhPSBOb1VwZGF0ZSkKKyAgICAg
ICAgICAgIHVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKG1fcGVuZGluZ1VwZGF0ZVR5cGUpOworICAg
IH0KIAotICAgIGVudW0gVXBkYXRlRmxhZyB7IEZ1bGxVcGRhdGUsIE9wdGltaXplZFVwZGF0ZSB9
OwogICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyk7CiAKICAgICBT
dHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByZWZl
cnJlZFN0eWxlc2hlZXRTZXROYW1lOyB9CkBAIC0xMDMsNiArMTE1LDggQEAgcHVibGljOgogICAg
IHZvaWQgY29tYmluZUNTU0ZlYXR1cmVGbGFncygpOwogICAgIHZvaWQgcmVzZXRDU1NGZWF0dXJl
RmxhZ3MoKTsKIAorICAgIGJvb2wgYWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NT
dHlsZVNoZWV0KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbihEb2N1bWVudCopOwogCkBAIC0xMTksNiArMTMzLDkgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzOwogCisgICAgLy8gVGhpcyBpcyBhIG1pcnJvciBvZiBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzIHRoYXQgZ2V0cyBwb3B1bGF0ZWQgb24gZGVtYW5kIGZvciBhY3RpdmVTdHlsZVNoZWV0
c0NvbnRhaW5zKCkuCisgICAgbXV0YWJsZSBPd25QdHI8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNo
ZWV0Kj4gPiBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzU2V0OworCiAgICAgLy8gVHJhY2sgdGhl
IG51bWJlciBvZiBjdXJyZW50bHkgbG9hZGluZyB0b3AtbGV2ZWwgc3R5bGVzaGVldHMgbmVlZGVk
IGZvciByZW5kZXJpbmcuCiAgICAgLy8gU2hlZXRzIGxvYWRlZCB1c2luZyB0aGUgQGltcG9ydCBk
aXJlY3RpdmUgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIGNvdW50LgogICAgIC8vIFdlIHVzZSB0
aGlzIGNvdW50IG9mIHBlbmRpbmcgc2hlZXRzIHRvIGRldGVjdCB3aGVuIHdlIGNhbiBiZWdpbiBh
dHRhY2hpbmcKQEAgLTEzNSw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiBtX2F1dGhvclN0eWxlU2hlZXRzOwogCiAgICAgYm9vbCBtX2hhZEFj
dGl2ZUxvYWRpbmdTdHlsZXNoZWV0OwotICAgIGJvb2wgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxl
c2hlZXRzT25TdHlsZVJlY2FsYzsKKyAgICBVcGRhdGVGbGFnIG1fcGVuZGluZ1VwZGF0ZVR5cGU7
CiAKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0
ZUxpc3RIYXNoU2V0OwogICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCBtX3N0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208342</attachid>
            <date>2013-08-08 07:45:46 -0700</date>
            <delta_ts>2013-08-08 08:42:59 -0700</delta_ts>
            <desc>Totally rad patch</desc>
            <filename>bug-119568-v3.diff</filename>
            <type>text/plain</type>
            <size>19445</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMTVlOTIwLi40NGRlZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMg
QEAKKzIwMTMtMDgtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEluc2VydGluZyBtdWx0aXBsZSBydWxlcyBpbnRvIGFuIGVtcHR5IHN0eWxlIHNoZWV0IHNo
b3VsZCBhdm9pZCBzdHlsZSByZWNhbGMgaWYgcG9zc2libGUuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzExOTU2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcyBhIGZvbGxvdy11cCB0byA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk0NzU+
LCB3aGVyZSBJIGFkZGVkIGEgaGFjayBmb3IgaW5zZXJ0aW5nCisgICAgICAgIGEgc2luZ2xlIHJ1
bGUgaW50byBhbiBlbXB0eSBzdHlsZSBzaGVldCwgdGhpcyBicm9hZGVucyB0aGUgb3B0aW1pemF0
aW9uIHRvIHN1cHBvcnQKKyAgICAgICAgYW55IG51bWJlciBvZiBydWxlcy4KKworICAgICAgICBU
aGlzIG9wdGltaXplcyB0aGUgc2NlbmFyaW8gd2hlcmUgYSBzdHlsZSBzaGVldCBpcyBhZGRlZCB0
byB0aGUgRE9NIGFuZCB0aGVuIHBvcHVsYXRlZAorICAgICAgICBydWxlLWJ5LXJ1bGUgdmlhIENT
U09NIGluc2VydFJ1bGUoKS9hZGRSdWxlKCkgY2FsbHMuIFByZXZpb3VzbHkgd2UnZCBkbyBhIGZ1
bGwgc3R5bGUKKyAgICAgICAgcmVjYWxjIGZvciB0aGlzIGNhc2UsIGJ1dCBub3cgd2UnbGwgdHJl
YXQgaXQgdGhlIHNhbWUgYXMgYSBmdWxsIHNoZWV0IGFkZGVkIGF0IG9uY2UuCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OndpbGxNdXRhdGVSdWxlcyk6CisKKyAg
ICAgICAgICAgIE1hZGUgd2lsbE11dGF0ZVJ1bGVzKCkgcmV0dXJuIHdoZXRoZXIgdGhlIHN0eWxl
IHNoZWV0IGNvbnRlbnRzIHdlcmUgY2xvbmVkIGJ5IHRoZQorICAgICAgICAgICAgY29weS1vbi13
cml0ZSBtZWNoYW5pc20uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorCisgICAgICAgICAgICBSZXBsYWNlZCB0aGUg
SW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgbXV0YXRpb24gdHlwZSBieSBhIGdlbmVyYWwgUnVsZUlu
c2VydGlvbi4KKyAgICAgICAgICAgIFRoZSBtdXRhdGlvbiBjYWxsYmFjayBjaGVja3MgaWYgd2Un
cmUgaW5zZXJ0aW5nIGludG8gYSBydWxlIHRoYXQncyBub3QgKHlldCkgcGFydAorICAgICAgICAg
ICAgb2YgdGhlIGRvY3VtZW50J3MgYWN0aXZlIHNoZWV0IHNldC4gSW4gdGhhdCBjYXNlLCB3ZSBk
ZWZlciBkb2luZyB0aGUgc3R5bGUgc2hlZXQKKyAgICAgICAgICAgIHVudGlsIGFsbCB0aGUgaW5z
ZXJ0aW9ucyBhcmUgZG9uZSAob3Igc29tZXRoaW5nIGZvcmNlcyB1cyB0byBzdHlsZStsYXlvdXQu
KQorCisgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBvcHRpbWl6YXRpb24gb25seSBoYXBwZW5z
IGlmIHRoZSBzdHlsZSBzaGVldCBoYWQgYSBzaW5nbGUgY2xpZW50LgorICAgICAgICAgICAgU2hh
cmVkIHN0eWxlIHNoZWV0cyB0aGF0IGp1c3QgZ290IGNsb25lZCBiZWZvcmUgbXV0YXRpb24gbWF5
IGhhdmUgcG9pbnRlcnMgaW50bworICAgICAgICAgICAgdGhlbSBmcm9tIHRoZSBEb2N1bWVudCdz
IFN0eWxlUmVzb2x2ZXIsIHNvIHdlJ3JlIGZvcmNlZCB0byBkbyBhbiBpbW1lZGlhdGUgc2hlZXQK
KyAgICAgICAgICAgIHVwZGF0ZSBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0YXRpb25TY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6flJ1bGVNdXRh
dGlvblNjb3BlKToKKworICAgICAgICAgICAgTW92ZWQgdGhlc2Ugb3V0LW9mLWxpbmUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVE
ZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpk
aWRNdXRhdGUpOgorCisgICAgICAgICAgICBNYWRlIGEgc2VwYXJhdGUgbXV0YXRpb24gY2FsbGJh
Y2sgZm9yIENTU1N0eWxlRGVjbGFyYXRpb24gc2luY2UgaXRzIG5lZWRzIGFyZQorICAgICAgICAg
ICAgc28gc2ltcGxlIGNvbXBhcmVkIHRvIHRoZSBtdXRhdGlvbiBjYWxsYmFjayBmcm9tIENTU1N0
eWxlU2hlZXQuIFNlZW1zIGJldHRlcgorICAgICAgICAgICAgdGhhbiBhZGRpbmcgeWV0IGFub3Ro
ZXIgbW9kZSB0byB0aGUgZW51bS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVJl
c29sdmVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6b3B0aW1pemVkU3R5
bGVTaGVldFVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNj
aGVkdWxlT3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZSk6CisKKyAgICAgICAgICAgIEFkZGVkIG1l
Y2hhbmlzbSB0byBkZWZlciBkb2luZyBhIFJlY2FsY1N0eWxlSWZOZWVkZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKToKKworICAgICAgICAgICAg
U3luY2hyb25pemUgdGhlIG9wdGltaXplZCBzdHlsZSBzaGVldCB1cGRhdGUgaWYgdGhlcmUncyBv
bmUgc2NoZWR1bGVkLgorICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgc3R1ZmYgbGlrZSBs
YXlvdXQtZGVwZW5kZW50IHByb3BlcnR5IGFjY2VzcyB3b24ndCBvcGVyYXRlCisgICAgICAgICAg
ICBvbiBzdGFsZSBzdHlsZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
OjpwZW5kaW5nVXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjpzZXRQZW5kaW5nVXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpmbHVzaFBlbmRpbmdVcGRhdGVzKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246
OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKworICAgICAgICAgICAgSGF2ZSBEU1NDIHRyYWNr
IHRoZSBraW5kIG9mIHN0eWxlIHNoZWV0IHVwZGF0ZSBpdCBuZWVkcyB0byBkbyAoaW5zdGVhZCBv
ZiBqdXN0CisgICAgICAgICAgICBhIGJvb2xlYW4gIm5lZWRzIHVwZGF0ZS4iKSBUaGlzIGlzIHVz
ZWQgYnkgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKCkgdG8gbWFrZSBzdXJlCisgICAgICAgICAgICB0
aGUgcmlnaHQga2luZCBvZiB1cGRhdGUgaGFwcGVucyBpZiB0aGVyZSdzIG9uZSBzY2hlZHVsZWQu
CisKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFjdGl2
ZVN0eWxlU2hlZXRzQ29udGFpbnMpOgorCisgICAgICAgICAgICBBZGRlZCBoZWxwZXIgdG8gY2hl
Y2sgaWYgYSBDU1NTdHlsZVNoZWV0IGlzIHBhcnQgb2YgdGhlIGFjdGl2ZSBzZXQuCisKIDIwMTMt
MDgtMDggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBJbnRyb2R1Y2UgdG9TVkdNUGF0aEVsZW1lbnQoKSwgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDNhZjFjZGQuLjU5ZmY5OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
LCAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKQEAgLTEyNiwxMiArMTI3LDEyIEBAIENTU1N0
eWxlU2hlZXQ6On5DU1NTdHlsZVNoZWV0KCkKICAgICBtX2NvbnRlbnRzLT51bnJlZ2lzdGVyQ2xp
ZW50KHRoaXMpOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6OndpbGxNdXRhdGVSdWxlcygpCitD
U1NTdHlsZVNoZWV0OjpXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24gQ1NTU3R5
bGVTaGVldDo6d2lsbE11dGF0ZVJ1bGVzKCkKIHsKICAgICAvLyBJZiB3ZSBhcmUgdGhlIG9ubHkg
Y2xpZW50IGl0IGlzIHNhZmUgdG8gbXV0YXRlLgogICAgIGlmIChtX2NvbnRlbnRzLT5oYXNPbmVD
bGllbnQoKSAmJiAhbV9jb250ZW50cy0+aXNJbk1lbW9yeUNhY2hlKCkpIHsKICAgICAgICAgbV9j
b250ZW50cy0+c2V0TXV0YWJsZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBD
b250ZW50c1dlcmVOb3RDbG9uZWRGb3JNdXRhdGlvbjsKICAgICB9CiAgICAgLy8gT25seSBjYWNo
ZWFibGUgc3R5bGVzaGVldHMgc2hvdWxkIGhhdmUgbXVsdGlwbGUgY2xpZW50cy4KICAgICBBU1NF
UlQobV9jb250ZW50cy0+aXNDYWNoZWFibGUoKSk7CkBAIC0xNDUsOSArMTQ2LDE4IEBAIHZvaWQg
Q1NTU3R5bGVTaGVldDo6d2lsbE11dGF0ZVJ1bGVzKCkKIAogICAgIC8vIEFueSBleGlzdGluZyBD
U1NPTSB3cmFwcGVycyBuZWVkIHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgY29waWVkIGNoaWxkIHJ1
bGVzLgogICAgIHJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpOworCisgICAgcmV0dXJu
IENvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6
OmRpZE11dGF0ZVJ1bGVzKFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlKQordm9pZCBDU1NT
dHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlRnJvbUNTU1N0eWxlRGVjbGFyYXRpb24oKQoreworICAg
IEFTU0VSVChtX2NvbnRlbnRzLT5pc011dGFibGUoKSk7CisgICAgQVNTRVJUKG1fY29udGVudHMt
Pmhhc09uZUNsaWVudCgpKTsKKyAgICBkaWRNdXRhdGUoKTsKK30KKwordm9pZCBDU1NTdHlsZVNo
ZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25UeXBlIG11dGF0aW9uVHlwZSwgV2hldGhl
ckNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uIGNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0
aW9uKQogewogICAgIEFTU0VSVChtX2NvbnRlbnRzLT5pc011dGFibGUoKSk7CiAgICAgQVNTRVJU
KG1fY29udGVudHMtPmhhc09uZUNsaWVudCgpKTsKQEAgLTE1NSw3ICsxNjUsMTMgQEAgdm9pZCBD
U1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25UeXBlIG11dGF0aW9uVHlw
ZSkKICAgICBEb2N1bWVudCogb3duZXIgPSBvd25lckRvY3VtZW50KCk7CiAgICAgaWYgKCFvd25l
cikKICAgICAgICAgcmV0dXJuOwotICAgIG93bmVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChtdXRh
dGlvblR5cGUgPT0gSW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgPyBEZWZlclJlY2FsY1N0eWxlSWZO
ZWVkZWQgOiBEZWZlclJlY2FsY1N0eWxlKTsKKworICAgIGlmIChtdXRhdGlvblR5cGUgPT0gUnVs
ZUluc2VydGlvbiAmJiAhY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24gJiYgIW93bmVyLT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRoaXMpKSB7
CisgICAgICAgIG93bmVyLT5zY2hlZHVsZU9wdGltaXplZFN0eWxlU2hlZXRVcGRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG93bmVyLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChE
ZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGUoKQpA
QCAtMjc5LDggKzI5NSw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29u
c3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlID0gIWxlbmd0
aCgpID8gSW5zZXJ0aW9uSW50b0VtcHR5U2hlZXQgOiBPdGhlck11dGF0aW9uOwotICAgIFJ1bGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgbXV0YXRpb25UeXBlKTsKKyAgICBSdWxl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMsIFJ1bGVJbnNlcnRpb24pOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gbV9jb250ZW50cy0+d3JhcHBlckluc2VydFJ1bGUocnVsZSwgaW5kZXgp
OwogICAgIGlmICghc3VjY2VzcykgewpAQCAtMzg2LDQgKzQwMSwyNyBAQCB2b2lkIENTU1N0eWxl
U2hlZXQ6OmNsZWFyQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpCiAgICAgbV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzLmNsZWFyKCk7CiB9CiAKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3Bl
OjpSdWxlTXV0YXRpb25TY29wZShDU1NTdHlsZVNoZWV0KiBzaGVldCwgUnVsZU11dGF0aW9uVHlw
ZSBtdXRhdGlvblR5cGUpCisgICAgOiBtX3N0eWxlU2hlZXQoc2hlZXQpCisgICAgLCBtX211dGF0
aW9uVHlwZShtdXRhdGlvblR5cGUpCit7CisgICAgQVNTRVJUKG1fc3R5bGVTaGVldCk7CisgICAg
bV9jb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiA9IG1fc3R5bGVTaGVldC0+d2lsbE11dGF0
ZVJ1bGVzKCk7Cit9CisKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0
YXRpb25TY29wZShDU1NSdWxlKiBydWxlKQorICAgIDogbV9zdHlsZVNoZWV0KHJ1bGUgPyBydWxl
LT5wYXJlbnRTdHlsZVNoZWV0KCkgOiAwKQorICAgICwgbV9tdXRhdGlvblR5cGUoT3RoZXJNdXRh
dGlvbikKKyAgICAsIG1fY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24oQ29udGVudHNXZXJl
Tm90Q2xvbmVkRm9yTXV0YXRpb24pCit7CisgICAgaWYgKG1fc3R5bGVTaGVldCkKKyAgICAgICAg
bV9jb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiA9IG1fc3R5bGVTaGVldC0+d2lsbE11dGF0
ZVJ1bGVzKCk7Cit9CisKK0NTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjp+UnVsZU11
dGF0aW9uU2NvcGUoKQoreworICAgIGlmIChtX3N0eWxlU2hlZXQpCisgICAgICAgIG1fc3R5bGVT
aGVldC0+ZGlkTXV0YXRlUnVsZXMobV9tdXRhdGlvblR5cGUsIG1fY29udGVudHNXZXJlQ2xvbmVk
Rm9yTXV0YXRpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAw
N2YxNjRhLi42OTM3NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTg1LDcg
Kzg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFRdWVyaWVzKFBhc3NSZWZQdHI8TWVk
aWFRdWVyeVNldD4pOwogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkgeyBt
X3RpdGxlID0gdGl0bGU7IH0KIAotICAgIGVudW0gUnVsZU11dGF0aW9uVHlwZSB7IE90aGVyTXV0
YXRpb24sIEluc2VydGlvbkludG9FbXB0eVNoZWV0IH07CisgICAgZW51bSBSdWxlTXV0YXRpb25U
eXBlIHsgT3RoZXJNdXRhdGlvbiwgUnVsZUluc2VydGlvbiB9OworICAgIGVudW0gV2hldGhlckNv
bnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uIHsgQ29udGVudHNXZXJlTm90Q2xvbmVkRm9yTXV0
YXRpb24gPSAwLCBDb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiB9OwogCiAgICAgY2xhc3Mg
UnVsZU11dGF0aW9uU2NvcGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdWxlTXV0
YXRpb25TY29wZSk7CkBAIC05NywxMCArOTgsMTIgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAg
ICAgICAgIENTU1N0eWxlU2hlZXQqIG1fc3R5bGVTaGVldDsKICAgICAgICAgUnVsZU11dGF0aW9u
VHlwZSBtX211dGF0aW9uVHlwZTsKKyAgICAgICAgV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZv
ck11dGF0aW9uIG1fY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb247CiAgICAgfTsKIAotICAg
IHZvaWQgd2lsbE11dGF0ZVJ1bGVzKCk7Ci0gICAgdm9pZCBkaWRNdXRhdGVSdWxlcyhSdWxlTXV0
YXRpb25UeXBlID0gT3RoZXJNdXRhdGlvbik7CisgICAgV2hldGhlckNvbnRlbnRzV2VyZUNsb25l
ZEZvck11dGF0aW9uIHdpbGxNdXRhdGVSdWxlcygpOworICAgIHZvaWQgZGlkTXV0YXRlUnVsZXMo
UnVsZU11dGF0aW9uVHlwZSwgV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uKTsK
KyAgICB2b2lkIGRpZE11dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogICAgIHZv
aWQgZGlkTXV0YXRlKCk7CiAgICAgCiAgICAgdm9pZCBjbGVhckNoaWxkUnVsZUNTU09NV3JhcHBl
cnMoKTsKQEAgLTEzMSwyOCArMTM0LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE93blB0cjxD
U1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CiAKLWlubGluZSBDU1NTdHls
ZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6UnVsZU11dGF0aW9uU2NvcGUoQ1NTU3R5bGVTaGVl
dCogc2hlZXQsIFJ1bGVNdXRhdGlvblR5cGUgbXV0YXRpb25UeXBlKQotICAgIDogbV9zdHlsZVNo
ZWV0KHNoZWV0KQotICAgICwgbV9tdXRhdGlvblR5cGUobXV0YXRpb25UeXBlKQotewotICAgIGlm
IChtX3N0eWxlU2hlZXQpCi0gICAgICAgIG1fc3R5bGVTaGVldC0+d2lsbE11dGF0ZVJ1bGVzKCk7
Ci19Ci0KLWlubGluZSBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6UnVsZU11dGF0
aW9uU2NvcGUoQ1NTUnVsZSogcnVsZSkKLSAgICA6IG1fc3R5bGVTaGVldChydWxlID8gcnVsZS0+
cGFyZW50U3R5bGVTaGVldCgpIDogMCkKLSAgICAsIG1fbXV0YXRpb25UeXBlKE90aGVyTXV0YXRp
b24pCi17Ci0gICAgaWYgKG1fc3R5bGVTaGVldCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT53aWxs
TXV0YXRlUnVsZXMoKTsKLX0KLQotaW5saW5lIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNj
b3BlOjp+UnVsZU11dGF0aW9uU2NvcGUoKQotewotICAgIGlmIChtX3N0eWxlU2hlZXQpCi0gICAg
ICAgIG1fc3R5bGVTaGVldC0+ZGlkTXV0YXRlUnVsZXMobV9tdXRhdGlvblR5cGUpOwotfQotCiB9
IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOTQ5OWVhZS4uZWFhMjRiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKQEAgLTMzMSw5ICszMzEsOSBAQCB2b2lkIFN0eWxlUnVsZUNTU1N0eWxlRGVj
bGFyYXRpb246OmRpZE11dGF0ZShNdXRhdGlvblR5cGUgdHlwZSkKICAgICBpZiAodHlwZSA9PSBQ
cm9wZXJ0eUNoYW5nZWQpCiAgICAgICAgIG1fY3Nzb21DU1NWYWx1ZUNsb25lcy5jbGVhcigpOwog
Ci0gICAgLy8gU3R5bGUgc2hlZXQgbXV0YXRpb24gbmVlZHMgdG8gYmUgc2lnbmFsZWQgZXZlbiBp
ZiB0aGUgY2hhbmdlIGZhaWxlZC4gd2lsbE11dGF0ZVJ1bGVzL2RpZE11dGF0ZVJ1bGVzIG11c3Qg
cGFpci4KKyAgICAvLyBTdHlsZSBzaGVldCBtdXRhdGlvbiBuZWVkcyB0byBiZSBzaWduYWxlZCBl
dmVuIGlmIHRoZSBjaGFuZ2UgZmFpbGVkLiB3aWxsTXV0YXRlKi9kaWRNdXRhdGUqIG11c3QgcGFp
ci4KICAgICBpZiAobV9wYXJlbnRSdWxlICYmIG1fcGFyZW50UnVsZS0+cGFyZW50U3R5bGVTaGVl
dCgpKQotICAgICAgICBtX3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKS0+ZGlkTXV0YXRl
UnVsZXMoKTsKKyAgICAgICAgbV9wYXJlbnRSdWxlLT5wYXJlbnRTdHlsZVNoZWV0KCktPmRpZE11
dGF0ZVJ1bGVGcm9tQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBDU1NTdHlsZVNoZWV0KiBT
dHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAzYWVkN2EuLjFhY2VlMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDEyLDYgKzQxMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwg
bV92aXN1YWxseU9yZGVyZWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAg
ICAgLCBtX2JQYXJzaW5nKGZhbHNlKQorICAgICwgbV9vcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRl
VGltZXIodGhpcywgJkRvY3VtZW50OjpvcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlVGltZXJGaXJl
ZCkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxj
VGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UoZmFsc2Up
CiAgICAgLCBtX2luU3R5bGVSZWNhbGMoZmFsc2UpCkBAIC0xNzU5LDggKzE3NjAsNyBAQCB2b2lk
IERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKICAgICAvLyByZS1h
dHRhY2hpbmcgb3VyIGNvbnRhaW5pbmcgaWZyYW1lLCB3aGljaCB3aGVuIGFza2VkIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQKICAgICAvLyBoaXRzIGEgbnVsbC1kZXJlZmVyZW5j
ZSBkdWUgdG8gc2VjdXJpdHkgY29kZSBhbHdheXMgYXNzdW1pbmcgdGhlIGRvY3VtZW50IGhhcyBh
IFNlY3VyaXR5T3JpZ2luLgogCi0gICAgaWYgKG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPm5lZWRz
VXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKCkpCi0gICAgICAgIG1fc3R5bGVT
aGVldENvbGxlY3Rpb24tPnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OkZ1bGxVcGRhdGUpOworICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmZs
dXNoUGVuZGluZ1VwZGF0ZXMoKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxl
KHRoaXMpOwogCkBAIC0xODQ1LDcgKzE4NDUsMTAgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5
bGVJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IXZpZXcoKSB8fCAoIXZpZXcoKS0+aXNJbkxheW91dCgpICYmICF2aWV3KCktPmlzUGFpbnRpbmco
KSkpOwotICAgIAorCisgICAgaWYgKG1fb3B0aW1pemVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSWZOZWVk
ZWQpOworCiAgICAgaWYgKCghbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSAmJiAhY2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkpIHx8IGluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzEzNSw4ICszMTM4LDI0IEBAIHZvaWQgRG9jdW1lbnQ6OmV2YWx1YXRlTWVkaWFRdWVy
eUxpc3QoKQogICAgICAgICBtX21lZGlhUXVlcnlNYXRjaGVyLT5zdHlsZVJlc29sdmVyQ2hhbmdl
ZCgpOwogfQogCit2b2lkIERvY3VtZW50OjpvcHRpbWl6ZWRTdHlsZVNoZWV0VXBkYXRlVGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudD4qKQoreworICAgIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSWZOZWVkZWQpOworfQorCit2b2lkIERvY3VtZW50OjpzY2hlZHVsZU9wdGltaXplZFN0
eWxlU2hlZXRVcGRhdGUoKQoreworICAgIGlmIChtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgc3R5bGVTaGVldENvbGxlY3Rp
b24oKS0+c2V0UGVuZGluZ1VwZGF0ZVR5cGUoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
T3B0aW1pemVkVXBkYXRlKTsKKyAgICBtX29wdGltaXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJDaGFuZ2Vk
KFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiB7CisgICAgaWYgKG1fb3B0aW1p
emVkU3R5bGVTaGVldFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fb3B0aW1pemVk
U3R5bGVTaGVldFVwZGF0ZVRpbWVyLnN0b3AoKTsKKwogICAgIC8vIERvbid0IGJvdGhlciB1cGRh
dGluZywgc2luY2Ugd2UgaGF2ZW4ndCBsb2FkZWQgYWxsIG91ciBzdHlsZSBpbmZvIHlldAogICAg
IC8vIGFuZCBoYXZlbid0IGNhbGN1bGF0ZWQgdGhlIHN0eWxlIHNlbGVjdG9yIGZvciB0aGUgZmly
c3QgdGltZS4KICAgICBpZiAoIWF0dGFjaGVkKCkgfHwgKCFtX2RpZENhbGN1bGF0ZVN0eWxlUmVz
b2x2ZXIgJiYgIWhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA0NTQ4YjFlLi42ZWU5ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgxLDYgKzQ4
MSw4IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0
eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKIAorICAgIHZvaWQgc2NoZWR1bGVPcHRpbWl6ZWRTdHls
ZVNoZWV0VXBkYXRlKCk7CisKICAgICB2b2lkIGRpZEFjY2Vzc1N0eWxlUmVzb2x2ZXIoKTsKIAog
ICAgIHZvaWQgZXZhbHVhdGVNZWRpYVF1ZXJ5TGlzdCgpOwpAQCAtNjkwLDYgKzY5Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdTdHlsZVJlY2FsYygpIGNvbnN0OwogICAgIGJvb2wg
aGFzUGVuZGluZ0ZvcmNlZFN0eWxlUmVjYWxjKCkgY29uc3Q7CiAgICAgdm9pZCBzdHlsZVJlY2Fs
Y1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CisgICAgdm9pZCBvcHRpbWl6ZWRTdHlsZVNo
ZWV0VXBkYXRlVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAogICAgIHZvaWQgcmVnaXN0
ZXJOb2RlTGlzdChMaXZlTm9kZUxpc3RCYXNlKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm9kZUxp
c3QoTGl2ZU5vZGVMaXN0QmFzZSopOwpAQCAtMTM1NSw3ICsxMzU4LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fdmlzdWFsbHlPcmRlcmVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIGJvb2wgbV9iUGFyc2luZzsKLSAgICAKKworICAgIFRpbWVyPERvY3VtZW50PiBtX29wdGlt
aXplZFN0eWxlU2hlZXRVcGRhdGVUaW1lcjsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9zdHlsZVJl
Y2FsY1RpbWVyOwogICAgIGJvb2wgbV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZTsKICAg
ICBib29sIG1faW5TdHlsZVJlY2FsYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCAwNDlkNmM3Li5iZWRmZWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OkRvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9wZW5k
aW5nU3R5bGVzaGVldHMoMCkKICAgICAsIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZChm
YWxzZSkKICAgICAsIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQoZmFsc2UpCi0gICAgLCBt
X25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjKGZhbHNlKQorICAgICwg
bV9wZW5kaW5nVXBkYXRlVHlwZShOb1VwZGF0ZSkKICAgICAsIG1fdXNlc1NpYmxpbmdSdWxlcyhm
YWxzZSkKICAgICAsIG1fdXNlc1NpYmxpbmdSdWxlc092ZXJyaWRlKGZhbHNlKQogICAgICwgbV91
c2VzRmlyc3RMaW5lUnVsZXMoZmFsc2UpCkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFn
IHVwZGF0ZUZsYWcKICAgICAgICAgLy8gU1ZHIDx1c2U+IGVsZW1lbnQgbWF5IG1hbmFnZSB0byBp
bnZhbGlkYXRlIHN0eWxlIHNlbGVjdG9yIGluIHRoZSBtaWRkbGUgb2YgYSBzdHlsZSByZWNhbGMu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDM0
NAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZml4ZWQgaW4gU1ZHIGFuZCB0aGUg
Y2FsbCBzaXRlIHJlcGxhY2VkIGJ5IEFTU0VSVCghbV9pblN0eWxlUmVjYWxjKS4KLSAgICAgICAg
bV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyA9IHRydWU7CisgICAg
ICAgIG1fcGVuZGluZ1VwZGF0ZVR5cGUgPSBGdWxsVXBkYXRlOwogICAgICAgICBtX2RvY3VtZW50
LT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtNDkzLDE1ICs0OTMsMjcgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1
cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICAgICAgfQog
ICAgICAgICByZXNldENTU0ZlYXR1cmVGbGFncygpOwogICAgIH0KKworICAgIG1fd2Vha0NvcHlP
ZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC5jbGVhcigpOwogICAgIG1fYWN0aXZl
QXV0aG9yU3R5bGVTaGVldHMuc3dhcChhY3RpdmVDU1NTdHlsZVNoZWV0cyk7CiAgICAgbV9zdHls
ZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0LnN3YXAoYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAg
bV91c2VzUmVtVW5pdHMgPSBzdHlsZVNoZWV0c1VzZVJlbVVuaXRzKG1fYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHMpOwotICAgIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNh
bGMgPSBmYWxzZTsKKyAgICBtX3BlbmRpbmdVcGRhdGVUeXBlID0gTm9VcGRhdGU7CiAKICAgICBt
X2RvY3VtZW50LT5ub3RpZnlTZWFtbGVzc0NoaWxkRG9jdW1lbnRzT2ZTdHlsZXNoZWV0VXBkYXRl
KCk7CiAKICAgICByZXR1cm4gcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CiB9CiAKK2Jvb2wgRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25z
dCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKK3sKKyAgICBpZiAoIW1fd2Vha0NvcHlPZkFj
dGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkgeworICAgICAgICBtX3dlYWtDb3B5T2ZB
Y3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBhZG9wdFB0cihuZXcgSGFzaFNldDxj
b25zdCBDU1NTdHlsZVNoZWV0Kj4pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fd2Vh
a0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC0+YWRkKG1fYWN0aXZlQXV0
aG9yU3R5bGVTaGVldHNbaV0uZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV93ZWFrQ29weU9m
QWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5jb250YWlucyhzaGVldCk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5oCmluZGV4IDZhOWNhNGQuLmE5YzZiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaApAQCAtNzEsOSArNzEsMjEgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkQXV0aG9yU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+
IGF1dGhvclNoZWV0KTsKICAgICB2b2lkIGFkZFVzZXJTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hl
ZXRDb250ZW50cz4gdXNlclNoZWV0KTsKIAotICAgIGJvb2wgbmVlZHNVcGRhdGVBY3RpdmVTdHls
ZXNoZWV0c09uU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVXBkYXRlQWN0aXZl
U3R5bGVzaGVldHNPblN0eWxlUmVjYWxjOyB9CisgICAgZW51bSBVcGRhdGVGbGFnIHsgTm9VcGRh
dGUgPSAwLCBPcHRpbWl6ZWRVcGRhdGUsIEZ1bGxVcGRhdGUgfTsKKworICAgIFVwZGF0ZUZsYWcg
cGVuZGluZ1VwZGF0ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdVcGRhdGVUeXBlOyB9
CisgICAgdm9pZCBzZXRQZW5kaW5nVXBkYXRlVHlwZShVcGRhdGVGbGFnIHVwZGF0ZVR5cGUpCisg
ICAgeworICAgICAgICBpZiAodXBkYXRlVHlwZSA+IG1fcGVuZGluZ1VwZGF0ZVR5cGUpCisgICAg
ICAgICAgICBtX3BlbmRpbmdVcGRhdGVUeXBlID0gdXBkYXRlVHlwZTsKKyAgICB9CisKKyAgICB2
b2lkIGZsdXNoUGVuZGluZ1VwZGF0ZXMoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1Vw
ZGF0ZVR5cGUgIT0gTm9VcGRhdGUpCisgICAgICAgICAgICB1cGRhdGVBY3RpdmVTdHlsZVNoZWV0
cyhtX3BlbmRpbmdVcGRhdGVUeXBlKTsKKyAgICB9CiAKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBG
dWxsVXBkYXRlLCBPcHRpbWl6ZWRVcGRhdGUgfTsKICAgICBib29sIHVwZGF0ZUFjdGl2ZVN0eWxl
U2hlZXRzKFVwZGF0ZUZsYWcpOwogCiAgICAgU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQpAQCAt
MTAzLDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3Mo
KTsKICAgICB2b2lkIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CiAKKyAgICBib29sIGFjdGl2ZVN0
eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCopIGNvbnN0OworCiBwcml2YXRl
OgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKIApAQCAtMTE5
LDYgKzEzMyw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IG1f
c3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKIAorICAgIC8vIFRoaXMgaXMgYSBt
aXJyb3Igb2YgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyB0aGF0IGdldHMgcG9wdWxhdGVkIG9u
IGRlbWFuZCBmb3IgYWN0aXZlU3R5bGVTaGVldHNDb250YWlucygpLgorICAgIG11dGFibGUgT3du
UHRyPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PiBtX3dlYWtDb3B5T2ZBY3RpdmVTdHls
ZVNoZWV0TGlzdEZvckZhc3RMb29rdXA7CisKICAgICAvLyBUcmFjayB0aGUgbnVtYmVyIG9mIGN1
cnJlbnRseSBsb2FkaW5nIHRvcC1sZXZlbCBzdHlsZXNoZWV0cyBuZWVkZWQgZm9yIHJlbmRlcmlu
Zy4KICAgICAvLyBTaGVldHMgbG9hZGVkIHVzaW5nIHRoZSBAaW1wb3J0IGRpcmVjdGl2ZSBhcmUg
bm90IGluY2x1ZGVkIGluIHRoaXMgY291bnQuCiAgICAgLy8gV2UgdXNlIHRoaXMgY291bnQgb2Yg
cGVuZGluZyBzaGVldHMgdG8gZGV0ZWN0IHdoZW4gd2UgY2FuIGJlZ2luIGF0dGFjaGluZwpAQCAt
MTM1LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiA+IG1fYXV0aG9yU3R5bGVTaGVldHM7CiAKICAgICBib29sIG1faGFkQWN0aXZlTG9hZGluZ1N0
eWxlc2hlZXQ7Ci0gICAgYm9vbCBtX25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxl
UmVjYWxjOworICAgIFVwZGF0ZUZsYWcgbV9wZW5kaW5nVXBkYXRlVHlwZTsKIAogICAgIHR5cGVk
ZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ7
CiAgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0IG1fc3R5bGVTaGVldENhbmRpZGF0
ZU5vZGVzOwo=
</data>
<flag name="review"
          id="230247"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>