<?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>81108</bug_id>
          
          <creation_ts>2012-03-14 08:01:03 -0700</creation_ts>
          <short_desc>[BlackBerry] Rename the existing WebPageCompositor class to WebPageCompositorPrivate</short_desc>
          <delta_ts>2012-03-16 17:41:40 -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>WebKit BlackBerry</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81099</dependson>
    
    <dependson>81118</dependson>
          <blocked>81115</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578390</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 08:01:03 -0700</bug_when>
    <thetext>[BlackBerry] Rename the existing WebPageCompositor class to WebPageCompositorPrivate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578399</commentid>
    <comment_count>1</comment_count>
      <attachid>131849</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 08:11:18 -0700</bug_when>
    <thetext>Created attachment 131849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578412</commentid>
    <comment_count>2</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 08:22:14 -0700</bug_when>
    <thetext>Change component</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578417</commentid>
    <comment_count>3</comment_count>
      <attachid>131849</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-14 08:25:05 -0700</bug_when>
    <thetext>Comment on attachment 131849
Patch

Looks good. But should the file name change as well to reflect the new class name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578501</commentid>
    <comment_count>4</comment_count>
      <attachid>131872</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 09:47:05 -0700</bug_when>
    <thetext>Created attachment 131872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578503</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 09:48:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 131849 [details])
&gt; Looks good. But should the file name change as well to reflect the new class name?

No, it should not. The implementation of a YadaPrivate class will typically be found in Yada.cpp. Yada.h and Yada will be added later (follow the blocks change)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578520</commentid>
    <comment_count>6</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 10:10:59 -0700</bug_when>
    <thetext>I&apos;ll have to try again tomorrow, the patch is not coming out right... I must be preparing it for upstream submission the wrong way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581114</commentid>
    <comment_count>7</comment_count>
      <attachid>132419</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-16 17:09:23 -0700</bug_when>
    <thetext>Created attachment 132419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581129</commentid>
    <comment_count>8</comment_count>
      <attachid>132419</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-16 17:24:03 -0700</bug_when>
    <thetext>Comment on attachment 132419
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581147</commentid>
    <comment_count>9</comment_count>
      <attachid>132419</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 17:41:34 -0700</bug_when>
    <thetext>Comment on attachment 132419
Patch

Clearing flags on attachment: 132419

Committed r111099: &lt;http://trac.webkit.org/changeset/111099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581148</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 17:41:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131849</attachid>
            <date>2012-03-14 08:11:18 -0700</date>
            <delta_ts>2012-03-14 09:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81108-20120314161116.patch</filename>
            <type>text/plain</type>
            <size>24101</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmMWNmNThiOTc3ZDVmYmEx
NzI4NjFkYjFiMzg4YmM5OTg5MmQ2MzIuLjc2ZjM3ZjkxMjAzMDRiMjdlODU0MGQ2ZjhiZGQyYTAw
YzNiMmM4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMTQgIEFydmlkIE5p
bHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBSZW5hbWUg
dGhlIGV4aXN0aW5nIFdlYlBhZ2VDb21wb3NpdG9yIGNsYXNzIHRvIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExMDgKKyAgICAgICAgUklNIFBSOiAxMzY2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAx
Mi0wMy0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIGhvdyB0aGUgV2ViIEluc3BlY3RvciByZXNvdXJjZXMgYXJlIGxvYWRlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGQ1ZmYwZjJjOTdjMmRkZTljNDBjYzJiY2IzYzFk
NDYxOGI1YzNlZWUuLmNlNmI0OTIxYTEzY2RiZDM5ZDg5NTQ3MWE0MzZmNTM5YmYxNDUyNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEyLTAzLTE0
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJy
eV0gUmVuYW1lIHRoZSBleGlzdGluZyBXZWJQYWdlQ29tcG9zaXRvciBjbGFzcyB0byBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxMTA4CisgICAgICAgIFJJTSBQUjogMTM2Njg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGluIGFudGljaXBh
dGlvbiBvZiBhIG5ldyBXZWJQYWdlQ29tcG9zaXRvciBjbGFzcyBpbiB0aGUKKyAgICAgICAgcHVi
bGljIEFQSS4gVGhlIGV4aXN0aW5nIGludGVybmFsIGNsYXNzIHdpbGwgc2VydmUgdG8gZC1wb2lu
dGVyaXplIHRoZQorICAgICAgICBuZXcgcHVibGljIEFQSS4gSW4gYWRkaXRpb24sIGl0IGlzIGFu
ZCB3aWxsIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBvbmx5CisgICAgICAgIHRoZSBwcml2YXRlIGNs
YXNzLCBmb3IgY2FzZXMgd2hlcmUgZXhpc3RpbmcgY29kZSBwYXRocyByZXF1aXJlCisgICAgICAg
IE9wZW5HTCBjb21wb3NpdGluZyAoaS5lLiBkdWUgdG8gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
bGF5ZXJzIGJlaW5nCisgICAgICAgIGFkZGVkIHRvIHRoZSBwYWdlKS4KKworICAgICAgICAqIEFw
aS9CYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogQXBpL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNv
bXBvc2l0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6On5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmhhcmR3YXJlQ29t
cG9zaXRpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU6OnNldFJvb3RMYXllcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y29tbWl0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlOjpyZWxlYXNlTGF5ZXJSZXNvdXJjZXMpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQp
OgorICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5oLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldExheW91dFJlY3RG
b3JDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZTo6Y29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldENvbnRlbnRzU2l6
ZUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpsYXN0Q29tcG9zaXRpbmdSZXN1bHRzKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRMYXN0Q29tcG9zaXRp
bmdSZXN1bHRzKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorCisyMDEyLTAzLTE0ICBBcnZpZCBOaWxzc29u
ICA8YW5pbHNzb25AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gTWFrZSBzdXJlIFdl
YlBhZ2UgYW5kIEJhY2tpbmdTdG9yZSBkb24ndCBjcmFzaCB3aXRob3V0IGEgV2luZG93CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTA5OQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGIwZDA3NTQ2YTc5Nzc2ZjAxZGU1
NDRhODliYjg4ZWI2MWM0MjgxYzguLjAwMGUyOGM0ODcwYmUyMGI0YTUzMmU3OWFmYTU3YzlmZDk0
OGEzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC00NCw2ICs0
NCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9BcGkvV2Vi
S2l0TUlNRVR5cGVDb252ZXJ0ZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENv
ZGVjLmNwcAogICAgIGJsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisgICAgYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUdyb3Vw
TG9hZERlZmVycmVyLmNwcAogICAgIGJsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcAogICAg
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmNwcApAQCAtNzcsNyArNzgsNiBA
QCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9TdXJmYWNlUG9vbC5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVu
dEhhbmRsZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3Bw
Ci0gICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmNwcAogKQog
CiBJRiAoRU5BQkxFX0RSVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdT
dG9yZS5oCmluZGV4IDczMTk0ODU5ZmYzNTlmN2IzNTgwOTNkZTk4N2Y3MGZlMWFlMmNjN2QuLmVl
OGI5ODNhZmIxZTA2NWM0MDM1NzA5YTcxOTgzYzFkN2Y4ODlhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwotY2xh
c3MgV2ViUGFnZUNvbXBvc2l0b3I7CitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU7CiBj
bGFzcyBCYWNraW5nU3RvcmVQcml2YXRlOwogY2xhc3MgQmFja2luZ1N0b3JlQ2xpZW50OwogCkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6V2Vi
UGFnZVByaXZhdGU7IC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBleHBvc2Ugb3VyIGludGVybmFscyB0
byBXZWJQYWdlUHJpdmF0ZS4gU2VlIFBSICMxMjAzMDEuCi0gICAgZnJpZW5kIGNsYXNzIEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I7CisgICAgZnJpZW5kIGNsYXNzIEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOwogICAgIGZyaWVuZCBjbGFz
cyBXZWJDb3JlOjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5OwogICAgIGZyaWVuZCBjbGFzcyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNv
cmU6OkdMRVMyQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
CmluZGV4IGI3MjM1YzIxY2U3ODA0MTMyZGI4Y2I4MzdiYWJhOTM1NTE5MDNmOTYuLjY1MjY0OWEx
ZDZlM2UwZjNhYzhkZGNkMWY2YzU3YWNiNzQ0MWZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBACiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiRnJhbWVMYXllcnMuaCIKLSNpbmNsdWRlICJX
ZWJQYWdlQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yX3AuaCIKICNl
bmRpZgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3NhZ2UuaD4K
QEAgLTUyODYsNyArNTI4Niw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldElzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICB9CiAKICAgICBpZiAoIW1fY29t
cG9zaXRvcikgewotICAgICAgICBtX2NvbXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgV2ViUGFnZUNv
bXBvc2l0b3IodGhpcykpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgV2Vi
UGFnZUNvbXBvc2l0b3JQcml2YXRlKHRoaXMpKTsKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUgPSBtX2NvbXBvc2l0b3ItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKICAg
ICAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSkKICAgICAgICAgICAg
IG1fY29tcG9zaXRvci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWNkZjBkODcxMzRhZWU0NTE0
NWQzYzkyNWJhZGFlMzcwZGE0OTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1
ZGUgIldlYlBhZ2VDb21wb3NpdG9yX3AuaCIKKworI2luY2x1ZGUgIkJhY2tpbmdTdG9yZV9wLmgi
CisjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIK
KworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CisjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZS5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybU1lc3NhZ2VDbGllbnQuaD4KKyNpbmNsdWRlIDxHZW5lcmljVGltZXJDbGllbnQuaD4K
KyNpbmNsdWRlIDxUaHJlYWRUaW1lckNsaWVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2
YXRlKiBwYWdlKQorICAgIDogbV93ZWJQYWdlKHBhZ2UpCisgICAgLCBtX2xheWVyUmVuZGVyZXIo
TGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKHBhZ2UtPm1fcGFnZSkpCisgICAgLCBtX2dlbmVyYXRpb24o
MCkKKyAgICAsIG1fY29tcG9zaXRlZEdlbmVyYXRpb24oLTEpCisgICAgLCBtX2JhY2tpbmdTdG9y
ZVVzZXNPcGVuR0woZmFsc2UpCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKHRoaXMsICZXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVyQ2xp
ZW50KG5ldyBQbGF0Zm9ybTo6R2VuZXJpY1RpbWVyQ2xpZW50KFBsYXRmb3JtOjp1c2VySW50ZXJm
YWNlVGhyZWFkVGltZXJDbGllbnQoKSkpCit7CisgICAgbV9hbmltYXRpb25UaW1lci5zZXRDbGll
bnQobV90aW1lckNsaWVudCk7Cit9CisKK1dlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6fldlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZSgpCit7CisgICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Cisg
ICAgZGVsZXRlIG1fdGltZXJDbGllbnQ7Cit9CisKK2Jvb2wgV2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlOjpoYXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllclJl
bmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0
b3JQcml2YXRlOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcm9vdExheWVy
KQoreworICAgIG1fcm9vdExheWVyID0gcm9vdExheWVyOworICAgIG1fbGF5ZXJSZW5kZXJlci0+
c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVVzZXNPcGVuR0woYm9vbCBiYWNraW5nU3RvcmVV
c2VzT3BlbkdMKQoreworICAgIG1fYmFja2luZ1N0b3JlVXNlc09wZW5HTCA9IGJhY2tpbmdTdG9y
ZVVzZXNPcGVuR0w7CisgICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdM
YXllcnMoIWJhY2tpbmdTdG9yZVVzZXNPcGVuR0wpOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6Y29tbWl0KExheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIpCit7CisgICAg
aWYgKCFyb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJvb3RMYXllci0+Y29tbWl0
T25Db21wb3NpdGluZ1RocmVhZCgpOworICAgICsrbV9nZW5lcmF0aW9uOworfQorCitib29sIFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRlbnRzKQoreworICAgIC8vIFNhdmUgYSBkcmF3IGlmIHdl
IGFscmVhZHkgZHJldyB0aGlzIGdlbmVyYXRpb24sIGZvciBleGFtcGxlIGR1ZSB0byBhIGNvbmN1
cnJlbnQgc2Nyb2xsIG9wZXJhdGlvbi4KKyAgICBpZiAobV9jb21wb3NpdGVkR2VuZXJhdGlvbiA9
PSBtX2dlbmVyYXRpb24gJiYgZHN0UmVjdCA9PSBtX2NvbXBvc2l0ZWREc3RSZWN0CisgICAgICAg
ICYmIGNvbnRlbnRzID09IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdCAmJiAhbV9iYWNraW5nU3Rv
cmVVc2VzT3BlbkdMKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2xheWVyUmVuZGVy
ZXItPmRyYXdMYXllcnMoY29udGVudHMsIG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBtX2Nv
bnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nLCBkc3RSZWN0KTsKKyAgICBtX2xhc3RDb21wb3NpdGlu
Z1Jlc3VsdHMgPSBtX2xheWVyUmVuZGVyZXItPmxhc3RSZW5kZXJpbmdSZXN1bHRzKCk7CisKKyAg
ICBtX2NvbXBvc2l0ZWREc3RSZWN0ID0gZHN0UmVjdDsKKyAgICBtX2NvbXBvc2l0ZWRDb250ZW50
c1JlY3QgPSBjb250ZW50czsKKyAgICBtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uID0gbV9nZW5lcmF0
aW9uOworCisgICAgaWYgKG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0cy5uZWVkc0FuaW1hdGlvbkZy
YW1lKSB7CisgICAgICAgICsrbV9nZW5lcmF0aW9uOyAvLyBUaGUgYW5pbWF0aW9uIHVwZGF0ZSBt
b3ZlcyB1cyBhbG9uZyBvbmUgZ2VuZXJhdGlvbi4KKyAgICAgICAgLy8gVXNpbmcgYSB0aW1lb3V0
IG9mIDAgYWN0dWFsbHkgd29uJ3Qgc3RhcnQgYSB0aW1lciwgaXQgd2lsbCBzZW5kIGEgbWVzc2Fn
ZS4KKyAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydCgxLjAgLyA2MC4wKTsKKyAgICAgICAg
bV93ZWJQYWdlLT51cGRhdGVEZWxlZ2F0ZWRPdmVybGF5cygpOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVsZWFzZUxheWVy
UmVzb3VyY2VzKCkKK3sKKyAgICBtX2xheWVyUmVuZGVyZXItPnJlbGVhc2VMYXllclJlc291cmNl
cygpOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJG
aXJlZCgpCit7CisgICAgaWYgKG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERp
cmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKKyAgICAgICAgaWYgKG1fd2ViUGFnZS0+bV9iYWNr
aW5nU3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgp
KQorICAgICAgICAgICAgcmV0dXJuOyAvLyBkb24ndCBzZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25n
IGFzIHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAorCisgICAgICAgIG1fd2ViUGFnZS0+bV9iYWNraW5n
U3RvcmUtPmQtPnNldERpcmVjdFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsK
KyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+ZGlzcGF0Y2hNZXNzYWdlKAorICAgICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNy
ZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAorICAgICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2
YXRlOjpyZW5kZXJWaXNpYmxlQ29udGVudHMsIG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3dlYlBhZ2UtPmJsaXRWaXNpYmxlQ29u
dGVudHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFj
a0JlcnJ5CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYxNDAxZjI0YWI5YzBjNGM1YWI5Y2NhZGE2YTZiNmYyYTBkMzlkNDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9y
X3AuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViUGFnZUNvbXBvc2l0b3JfcF9oCisjZGVmaW5l
IFdlYlBhZ2VDb21wb3NpdG9yX3BfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXIuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7Cit9OworCituYW1lc3BhY2UgQmxh
Y2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByaXZhdGU7CisK
Ky8vIFRoaXMgY2xhc3MgbWF5IG9ubHkgYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRpbmcgdGhyZWFk
LgorY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGUoV2ViUGFnZVByaXZhdGUqKTsKKyAgICB+V2ViUGFnZUNvbXBvc2l0
b3JQcml2YXRlKCk7CisKKyAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0Um9vdExheWVyKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsK
KworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29sKTsKKworICAgIHZvaWQg
Y29tbWl0KFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXJQcm94eSk7CisKKyAg
ICBib29sIGRyYXdMYXllcnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBjb250ZW50cyk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGxh
eW91dFJlY3RGb3JDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UmVjdEZvckNv
bXBvc2l0aW5nOyB9CisgICAgdm9pZCBzZXRMYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgeyBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZyA9IHJl
Y3Q7IH0KKworICAgIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmco
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nOyB9CisgICAgdm9p
ZCBzZXRDb250ZW50c1NpemVGb3JDb21wb3NpdGluZyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKSB7IG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcgPSBzaXplOyB9CisKKyAgICBXZWJD
b3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbGFzdENvbXBvc2l0aW5nUmVzdWx0cygpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0czsgfQorICAgIHZvaWQgc2V0TGFzdENv
bXBvc2l0aW5nUmVzdWx0cyhjb25zdCBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMmIHJl
c3VsdHMpIHsgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gcmVzdWx0czsgfQorCisgICAgdm9p
ZCByZWxlYXNlTGF5ZXJSZXNvdXJjZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFuaW1hdGlv
blRpbWVyRmlyZWQoKTsKKworICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CisgICAgT3du
UHRyPFdlYkNvcmU6OkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4gbV9yb290TGF5ZXI7CisgICAgV2ViQ29y
ZTo6SW50UmVjdCBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZzsKKyAgICBXZWJDb3JlOjpJbnRT
aXplIG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmc7CisgICAgV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJpbmdSZXN1bHRzIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0czsKKyAgICBpbnQgbV9nZW5lcmF0
aW9uOworICAgIGludCBtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uOworICAgIFdlYkNvcmU6OkludFJl
Y3QgbV9jb21wb3NpdGVkRHN0UmVjdDsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9jb21wb3Np
dGVkQ29udGVudHNSZWN0OworICAgIGJvb2wgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMOworICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUaW1lcjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IG1f
YW5pbWF0aW9uVGltZXI7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyQ2xpZW50KiBt
X3RpbWVyQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBXZWJQYWdlQ29tcG9zaXRvcl9wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VfcC5oCmluZGV4IDFlM2QyMjY1YjVhNjE3NjNjZGE0YzE1NDZkYzA5OTY5YjYx
MjA2NDIuLjU3YzlkODM5NjIyMTE4YTBkNWZkOWMzYzk4NGQ4ZGI4OGRiYTc2ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFz
cyBXZWJQYWdlQ2xpZW50OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xh
c3MgRnJhbWVMYXllcnM7Ci1jbGFzcyBXZWJQYWdlQ29tcG9zaXRvcjsKK2NsYXNzIFdlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTsKICNlbmRpZgogCiAvLyBJbiB0aGUgY2xpZW50IGNvZGUsIHRoZXJl
IGlzIHNjcmVlbiBzaXplIGFuZCB2aWV3cG9ydC4KQEAgLTQ5Miw3ICs0OTIsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgbV9pc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAgT3duUHRyPEZyYW1lTGF5ZXJzPiBtX2ZyYW1lTGF5
ZXJzOyAvLyBXZWJLaXQgdGhyZWFkIG9ubHkuCi0gICAgT3duUHRyPFdlYlBhZ2VDb21wb3NpdG9y
PiBtX2NvbXBvc2l0b3I7IC8vIENvbXBvc2l0aW5nIHRocmVhZCBvbmx5LgorICAgIE93blB0cjxX
ZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IG1fY29tcG9zaXRvcjsgLy8gQ29tcG9zaXRpbmcgdGhy
ZWFkIG9ubHkuCiAgICAgT3duUHRyPFdlYkNvcmU6OlRpbWVyPFdlYlBhZ2VQcml2YXRlPiA+IG1f
cm9vdExheWVyQ29tbWl0VGltZXI7CiAgICAgYm9vbCBtX25lZWRzT25lU2hvdERyYXdpbmdTeW5j
aHJvbml6YXRpb247CiAgICAgYm9vbCBtX25lZWRzQ29tbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3Iu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTQ3ZGI1MzQyZjY2ZTUxNGZjZDIx
N2M0Mjc2ODM3NWU5MjhjN2YzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VD
b21wb3NpdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJXZWJQ
YWdlQ29tcG9zaXRvci5oIgotCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlX3AuaCIKLSNpbmNsdWRl
ICJMYXllcldlYktpdFRocmVhZC5oIgotI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgotCi0jaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVz
c2FnZUNsaWVudC5oPgotI2luY2x1ZGUgPEdlbmVyaWNUaW1lckNsaWVudC5oPgotI2luY2x1ZGUg
PFRocmVhZFRpbWVyQ2xpZW50Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgQmxhY2tCZXJyeSB7Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViUGFnZUNvbXBvc2l0
b3I6OldlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2VQcml2YXRlKiBwYWdlKQotICAgIDogbV93ZWJQ
YWdlKHBhZ2UpCi0gICAgLCBtX2xheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKHBh
Z2UtPm1fcGFnZSkpCi0gICAgLCBtX2dlbmVyYXRpb24oMCkKLSAgICAsIG1fY29tcG9zaXRlZEdl
bmVyYXRpb24oLTEpCi0gICAgLCBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0woZmFsc2UpCi0gICAg
LCBtX2FuaW1hdGlvblRpbWVyKHRoaXMsICZXZWJQYWdlQ29tcG9zaXRvcjo6YW5pbWF0aW9uVGlt
ZXJGaXJlZCkKLSAgICAsIG1fdGltZXJDbGllbnQobmV3IFBsYXRmb3JtOjpHZW5lcmljVGltZXJD
bGllbnQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRUaW1lckNsaWVudCgpKSkKLXsKLSAg
ICBtX2FuaW1hdGlvblRpbWVyLnNldENsaWVudChtX3RpbWVyQ2xpZW50KTsKLX0KLQotV2ViUGFn
ZUNvbXBvc2l0b3I6On5XZWJQYWdlQ29tcG9zaXRvcigpCi17Ci0gICAgbV9hbmltYXRpb25UaW1l
ci5zdG9wKCk7Ci0gICAgZGVsZXRlIG1fdGltZXJDbGllbnQ7Ci19Ci0KLWJvb2wgV2ViUGFnZUNv
bXBvc2l0b3I6OmhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2xh
eWVyUmVuZGVyZXItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKLX0KLQotdm9pZCBXZWJQYWdlQ29t
cG9zaXRvcjo6c2V0Um9vdExheWVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIHJvb3RMYXllcikK
LXsKLSAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNl
dFJvb3RMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZUNvbXBvc2l0
b3I6OnNldEJhY2tpbmdTdG9yZVVzZXNPcGVuR0woYm9vbCBiYWNraW5nU3RvcmVVc2VzT3BlbkdM
KQotewotICAgIG1fYmFja2luZ1N0b3JlVXNlc09wZW5HTCA9IGJhY2tpbmdTdG9yZVVzZXNPcGVu
R0w7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdMYXllcnMoIWJh
Y2tpbmdTdG9yZVVzZXNPcGVuR0wpOwotfQotCi12b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpjb21t
aXQoTGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllcikKLXsKLSAgICBpZiAoIXJvb3RMYXllcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcm9vdExheWVyLT5jb21taXRPbkNvbXBvc2l0aW5nVGhy
ZWFkKCk7Ci0gICAgKyttX2dlbmVyYXRpb247Ci19Ci0KLWJvb2wgV2ViUGFnZUNvbXBvc2l0b3I6
OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250
ZW50cykKLXsKLSAgICAvLyBTYXZlIGEgZHJhdyBpZiB3ZSBhbHJlYWR5IGRyZXcgdGhpcyBnZW5l
cmF0aW9uLCBmb3IgZXhhbXBsZSBkdWUgdG8gYSBjb25jdXJyZW50IHNjcm9sbCBvcGVyYXRpb24u
Ci0gICAgaWYgKG1fY29tcG9zaXRlZEdlbmVyYXRpb24gPT0gbV9nZW5lcmF0aW9uICYmIGRzdFJl
Y3QgPT0gbV9jb21wb3NpdGVkRHN0UmVjdAotICAgICAgICAmJiBjb250ZW50cyA9PSBtX2NvbXBv
c2l0ZWRDb250ZW50c1JlY3QgJiYgIW1fYmFja2luZ1N0b3JlVXNlc09wZW5HTCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgbV9sYXllclJlbmRlcmVyLT5kcmF3TGF5ZXJzKGNvbnRlbnRz
LCBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZywgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGlu
ZywgZHN0UmVjdCk7Ci0gICAgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gbV9sYXllclJlbmRl
cmVyLT5sYXN0UmVuZGVyaW5nUmVzdWx0cygpOwotCi0gICAgbV9jb21wb3NpdGVkRHN0UmVjdCA9
IGRzdFJlY3Q7Ci0gICAgbV9jb21wb3NpdGVkQ29udGVudHNSZWN0ID0gY29udGVudHM7Ci0gICAg
bV9jb21wb3NpdGVkR2VuZXJhdGlvbiA9IG1fZ2VuZXJhdGlvbjsKLQotICAgIGlmIChtX2xhc3RD
b21wb3NpdGluZ1Jlc3VsdHMubmVlZHNBbmltYXRpb25GcmFtZSkgewotICAgICAgICArK21fZ2Vu
ZXJhdGlvbjsgLy8gVGhlIGFuaW1hdGlvbiB1cGRhdGUgbW92ZXMgdXMgYWxvbmcgb25lIGdlbmVy
YXRpb24uCi0gICAgICAgIC8vIFVzaW5nIGEgdGltZW91dCBvZiAwIGFjdHVhbGx5IHdvbid0IHN0
YXJ0IGEgdGltZXIsIGl0IHdpbGwgc2VuZCBhIG1lc3NhZ2UuCi0gICAgICAgIG1fYW5pbWF0aW9u
VGltZXIuc3RhcnQoMS4wIC8gNjAuMCk7Ci0gICAgICAgIG1fd2ViUGFnZS0+dXBkYXRlRGVsZWdh
dGVkT3ZlcmxheXMoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvcjo6cmVsZWFzZUxheWVyUmVzb3VyY2VzKCkKLXsKLSAgICBtX2xheWVyUmVu
ZGVyZXItPnJlbGVhc2VMYXllclJlc291cmNlcygpOwotfQotCi12b2lkIFdlYlBhZ2VDb21wb3Np
dG9yOjphbmltYXRpb25UaW1lckZpcmVkKCkKLXsKLSAgICBpZiAobV93ZWJQYWdlLT5tX2JhY2tp
bmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBp
ZiAobV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+aXNEaXJlY3RSZW5kZXJpbmdBbmltYXRp
b25NZXNzYWdlU2NoZWR1bGVkKCkpCi0gICAgICAgICAgICByZXR1cm47IC8vIGRvbid0IHNlbmQg
bmV3IG1lc3NhZ2VzIGFzIGxvbmcgYXMgd2UgaGF2ZW4ndCByZXJlbmRlcmVkCi0KLSAgICAgICAg
bV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+c2V0RGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9u
TWVzc2FnZVNjaGVkdWxlZCgpOwotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0
VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgJkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlclZpc2libGVDb250ZW50cywgbV93ZWJQYWdl
LT5tX2JhY2tpbmdTdG9yZS0+ZCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fd2Vi
UGFnZS0+YmxpdFZpc2libGVDb250ZW50cygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LX0gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ZjNkZWJmZTVjN2M1MDAzNGI1YzBkYjQ2NWQ3MGMyNGJhYzE2MDY4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotICovCi0KLSNpZm5kZWYgV2ViUGFnZUNvbXBvc2l0b3JfaAotI2RlZmluZSBXZWJQYWdlQ29t
cG9zaXRvcl9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRl
ICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlci5oIgot
Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBMYXllcldlYktpdFRocmVhZDsKLX07Ci0KLW5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlUHJpdmF0ZTsKLQotLy8gVGhpcyBjbGFz
cyBtYXkgb25seSBiZSB1c2VkIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCi1jbGFzcyBXZWJQ
YWdlQ29tcG9zaXRvciB7Ci1wdWJsaWM6Ci0gICAgV2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZVBy
aXZhdGUqKTsKLSAgICB+V2ViUGFnZUNvbXBvc2l0b3IoKTsKLQotICAgIGJvb2wgaGFyZHdhcmVD
b21wb3NpdGluZygpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29yZTo6TGF5
ZXJDb21wb3NpdGluZ1RocmVhZCopOwotCi0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmVVc2VzT3Bl
bkdMKGJvb2wpOwotCi0gICAgdm9pZCBjb21taXQoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQq
IHJvb3RMYXllclByb3h5KTsKLQotICAgIGJvb2wgZHJhd0xheWVycyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBkc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRlbnRzKTsKLQot
ICAgIFdlYkNvcmU6OkludFJlY3QgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7IH0KLSAgICB2b2lkIHNldExheW91dFJl
Y3RGb3JDb21wb3NpdGluZyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IG1fbGF5b3V0
UmVjdEZvckNvbXBvc2l0aW5nID0gcmVjdDsgfQotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBjb250
ZW50c1NpemVGb3JDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTaXplRm9y
Q29tcG9zaXRpbmc7IH0KLSAgICB2b2lkIHNldENvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGlu
ZyA9IHNpemU7IH0KLQotICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBsYXN0Q29t
cG9zaXRpbmdSZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRz
OyB9Ci0gICAgdm9pZCBzZXRMYXN0Q29tcG9zaXRpbmdSZXN1bHRzKGNvbnN0IFdlYkNvcmU6Okxh
eWVyUmVuZGVyaW5nUmVzdWx0cyYgcmVzdWx0cykgeyBtX2xhc3RDb21wb3NpdGluZ1Jlc3VsdHMg
PSByZXN1bHRzOyB9Ci0KLSAgICB2b2lkIHJlbGVhc2VMYXllclJlc291cmNlcygpOwotCi1wcml2
YXRlOgotICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwotCi0gICAgV2ViUGFnZVByaXZh
dGUqIG1fd2ViUGFnZTsKLSAgICBPd25QdHI8V2ViQ29yZTo6TGF5ZXJSZW5kZXJlcj4gbV9sYXll
clJlbmRlcmVyOwotICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBt
X3Jvb3RMYXllcjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0
aW5nOwotICAgIFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZzsK
LSAgICBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1
bHRzOwotICAgIGludCBtX2dlbmVyYXRpb247Ci0gICAgaW50IG1fY29tcG9zaXRlZEdlbmVyYXRp
b247Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBtX2NvbXBvc2l0ZWREc3RSZWN0OwotICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCBtX2NvbXBvc2l0ZWRDb250ZW50c1JlY3Q7Ci0gICAgYm9vbCBtX2JhY2tp
bmdTdG9yZVVzZXNPcGVuR0w7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyPFdlYlBh
Z2VDb21wb3NpdG9yPiBtX2FuaW1hdGlvblRpbWVyOwotICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpUaW1lckNsaWVudCogbV90aW1lckNsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotCi0jZW5kaWYgLy8gV2ViUGFnZUNvbXBvc2l0b3JfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131872</attachid>
            <date>2012-03-14 09:47:05 -0700</date>
            <delta_ts>2012-03-16 17:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81108-20120314174703.patch</filename>
            <type>text/plain</type>
            <size>23941</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmMWNmNThiOTc3ZDVmYmEx
NzI4NjFkYjFiMzg4YmM5OTg5MmQ2MzIuLjc2ZjM3ZjkxMjAzMDRiMjdlODU0MGQ2ZjhiZGQyYTAw
YzNiMmM4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMTQgIEFydmlkIE5p
bHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBSZW5hbWUg
dGhlIGV4aXN0aW5nIFdlYlBhZ2VDb21wb3NpdG9yIGNsYXNzIHRvIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExMDgKKyAgICAgICAgUklNIFBSOiAxMzY2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAx
Mi0wMy0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIGhvdyB0aGUgV2ViIEluc3BlY3RvciByZXNvdXJjZXMgYXJlIGxvYWRlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGQ1ZmYwZjJjOTdjMmRkZTljNDBjYzJiY2IzYzFk
NDYxOGI1YzNlZWUuLjAzMzg5NjEyZjUwYzFhYWQ1NGE5OWE5OTg0ZDI4NDc4ZjJmMjU0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDEyLTAzLTE0
ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJy
eV0gUmVuYW1lIHRoZSBleGlzdGluZyBXZWJQYWdlQ29tcG9zaXRvciBjbGFzcyB0byBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxMTA4CisgICAgICAgIFJJTSBQUjogMTM2Njg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGluIGFudGljaXBh
dGlvbiBvZiBhIG5ldyBXZWJQYWdlQ29tcG9zaXRvciBjbGFzcyBpbiB0aGUKKyAgICAgICAgcHVi
bGljIEFQSS4gVGhlIGV4aXN0aW5nIGludGVybmFsIGNsYXNzIHdpbGwgc2VydmUgdG8gZC1wb2lu
dGVyaXplIHRoZQorICAgICAgICBuZXcgcHVibGljIEFQSS4gSW4gYWRkaXRpb24sIGl0IGlzIGFu
ZCB3aWxsIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBvbmx5CisgICAgICAgIHRoZSBwcml2YXRlIGNs
YXNzLCBmb3IgY2FzZXMgd2hlcmUgZXhpc3RpbmcgY29kZSBwYXRocyByZXF1aXJlCisgICAgICAg
IE9wZW5HTCBjb21wb3NpdGluZyAoaS5lLiBkdWUgdG8gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
bGF5ZXJzIGJlaW5nCisgICAgICAgIGFkZGVkIHRvIHRoZSBwYWdlKS4KKworICAgICAgICAqIEFw
aS9CYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUpOgorICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29t
cG9zaXRvci5jcHAuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjp+V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlOjpoYXJkd2FyZUNvbXBvc2l0aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRSb290TGF5ZXIpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldEJhY2tpbmdTdG9y
ZVVzZXNPcGVuR0wpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OmNvbW1pdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVsZWFzZUxheWVyUmVzb3VyY2VzKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjph
bmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2Vi
UGFnZUNvbXBvc2l0b3IuaC4KKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldExheW91dFJlY3RG
b3JDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZTo6Y29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldENvbnRlbnRzU2l6
ZUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpsYXN0Q29tcG9zaXRpbmdSZXN1bHRzKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRMYXN0Q29tcG9zaXRp
bmdSZXN1bHRzKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6CisKKzIwMTItMDMtMTQgIEFy
dmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCiAgICAgICAgIFtCbGFja0JlcnJ5XSBN
YWtlIHN1cmUgV2ViUGFnZSBhbmQgQmFja2luZ1N0b3JlIGRvbid0IGNyYXNoIHdpdGhvdXQgYSBX
aW5kb3cKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
MDk5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYjBkMDc1NDZh
Nzk3NzZmMDFkZTU0NGE4OWJiODhlYjYxYzQyODFjOC4uMDAwZTI4YzQ4NzBiZTIwYjRhNTMyZTc5
YWZhNTdjOWZkOTQ4YTMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNr
QmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UK
QEAgLTQ0LDYgKzQ0LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2Jl
cnJ5L0FwaS9XZWJLaXRNSU1FVHlwZUNvbnZlcnRlci5jcHAKICAgICBibGFja2JlcnJ5L0FwaS9X
ZWJLaXRUZXh0Q29kZWMuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKyAgICBi
bGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAKICAgICBibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGlu
Z3MuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGEuY3BwCkBAIC03
Nyw3ICs3OCw2IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9Ub3VjaEV2ZW50SGFuZGxlci5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0
RmluZ2Vycy5jcHAKLSAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0
b3IuY3BwCiApCiAKIElGIChFTkFCTEVfRFJUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmgKaW5kZXggNzMxOTQ4NTlmZjM1OWY3YjM1ODA5M2RlOTg3ZjcwZmUx
YWUyY2M3ZC4uZWU4Yjk4M2FmYjFlMDY1YzQwMzU3MDlhNzE5ODNjMWQ3Zjg4OWFlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5oCkBAIC00MCw3ICs0MCw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZVBy
aXZhdGU7Ci1jbGFzcyBXZWJQYWdlQ29tcG9zaXRvcjsKK2NsYXNzIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZTsKIGNsYXNzIEJhY2tpbmdTdG9yZVByaXZhdGU7CiBjbGFzcyBCYWNraW5nU3RvcmVD
bGllbnQ7CiAKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTsKICAgICBmcmllbmQgY2xhc3MgQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTsgLy8gRklYTUU6IEZvciBub3csIHdlIGV4cG9zZSBvdXIg
aW50ZXJuYWxzIHRvIFdlYlBhZ2VQcml2YXRlLiBTZWUgUFIgIzEyMDMwMS4KLSAgICBmcmllbmQg
Y2xhc3MgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjsKKyAgICBmcmllbmQg
Y2xhc3MgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk7CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTsKICAgICBmcmllbmQg
Y2xhc3MgV2ViQ29yZTo6R0xFUzJDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZS5jcHAKaW5kZXggYjcyMzVjMjFjZTc4MDQxMzJkYjhjYjgzN2JhYmE5MzU1MTkwM2Y5
Ni4uNjUyNjQ5YTFkNmUzZTBmM2FjOGRkY2QxZjZjNTdhY2I3NDQxZmM3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJGcmFtZUxheWVycy5oIgot
I2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0
b3JfcC5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FeGVjdXRhYmxl
TWVzc2FnZS5oPgpAQCAtNTI4Niw3ICs1Mjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIH0KIAogICAg
IGlmICghbV9jb21wb3NpdG9yKSB7Ci0gICAgICAgIG1fY29tcG9zaXRvciA9IGFkb3B0UHRyKG5l
dyBXZWJQYWdlQ29tcG9zaXRvcih0aGlzKSk7CisgICAgICAgIG1fY29tcG9zaXRvciA9IGFkb3B0
UHRyKG5ldyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUodGhpcykpOwogICAgICAgICBtX2lzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IG1fY29tcG9zaXRvci0+aGFyZHdhcmVDb21wb3Np
dGluZygpOwogICAgICAgICBpZiAoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKQog
ICAgICAgICAgICAgbV9jb21wb3NpdG9yLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhY2RmMGQ4
NzEzNGFlZTQ1MTQ1ZDNjOTI1YmFkYWUzNzBkYTQ5MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtMCwwICsx
LDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JfcC5oIgorCisjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlX3AuaCIKKyNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgorI2luY2x1ZGUgIldl
YlBhZ2VfcC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3Nh
Z2UuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+CisjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgorI2luY2x1ZGUgPEdlbmVyaWNUaW1l
ckNsaWVudC5oPgorI2luY2x1ZGUgPFRocmVhZFRpbWVyQ2xpZW50Lmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUo
V2ViUGFnZVByaXZhdGUqIHBhZ2UpCisgICAgOiBtX3dlYlBhZ2UocGFnZSkKKyAgICAsIG1fbGF5
ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyOjpjcmVhdGUocGFnZS0+bV9wYWdlKSkKKyAgICAsIG1f
Z2VuZXJhdGlvbigwKQorICAgICwgbV9jb21wb3NpdGVkR2VuZXJhdGlvbigtMSkKKyAgICAsIG1f
YmFja2luZ1N0b3JlVXNlc09wZW5HTChmYWxzZSkKKyAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhp
cywgJldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJGaXJlZCkKKyAgICAs
IG1fdGltZXJDbGllbnQobmV3IFBsYXRmb3JtOjpHZW5lcmljVGltZXJDbGllbnQoUGxhdGZvcm06
OnVzZXJJbnRlcmZhY2VUaHJlYWRUaW1lckNsaWVudCgpKSkKK3sKKyAgICBtX2FuaW1hdGlvblRp
bWVyLnNldENsaWVudChtX3RpbWVyQ2xpZW50KTsKK30KKworV2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlOjp+V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKCkKK3sKKyAgICBtX2FuaW1hdGlvblRpbWVy
LnN0b3AoKTsKKyAgICBkZWxldGUgbV90aW1lckNsaWVudDsKK30KKworYm9vbCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xheWVyUmVuZGVyZXItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKK30KKwordm9pZCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OnNldFJvb3RMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFk
KiByb290TGF5ZXIpCit7CisgICAgbV9yb290TGF5ZXIgPSByb290TGF5ZXI7CisgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29sIGJh
Y2tpbmdTdG9yZVVzZXNPcGVuR0wpCit7CisgICAgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMID0g
YmFja2luZ1N0b3JlVXNlc09wZW5HTDsKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldENsZWFyU3Vy
ZmFjZU9uRHJhd0xheWVycyghYmFja2luZ1N0b3JlVXNlc09wZW5HTCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjb21taXQoTGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXll
cikKK3sKKyAgICBpZiAoIXJvb3RMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcm9vdExh
eWVyLT5jb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCk7CisgICAgKyttX2dlbmVyYXRpb247Cit9
CisKK2Jvb2wgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpkcmF3TGF5ZXJzKGNvbnN0IEludFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY29udGVudHMpCit7CisgICAgLy8gU2F2ZSBh
IGRyYXcgaWYgd2UgYWxyZWFkeSBkcmV3IHRoaXMgZ2VuZXJhdGlvbiwgZm9yIGV4YW1wbGUgZHVl
IHRvIGEgY29uY3VycmVudCBzY3JvbGwgb3BlcmF0aW9uLgorICAgIGlmIChtX2NvbXBvc2l0ZWRH
ZW5lcmF0aW9uID09IG1fZ2VuZXJhdGlvbiAmJiBkc3RSZWN0ID09IG1fY29tcG9zaXRlZERzdFJl
Y3QKKyAgICAgICAgJiYgY29udGVudHMgPT0gbV9jb21wb3NpdGVkQ29udGVudHNSZWN0ICYmICFt
X2JhY2tpbmdTdG9yZVVzZXNPcGVuR0wpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
bGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVycyhjb250ZW50cywgbV9sYXlvdXRSZWN0Rm9yQ29tcG9z
aXRpbmcsIG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcsIGRzdFJlY3QpOworICAgIG1fbGFz
dENvbXBvc2l0aW5nUmVzdWx0cyA9IG1fbGF5ZXJSZW5kZXJlci0+bGFzdFJlbmRlcmluZ1Jlc3Vs
dHMoKTsKKworICAgIG1fY29tcG9zaXRlZERzdFJlY3QgPSBkc3RSZWN0OworICAgIG1fY29tcG9z
aXRlZENvbnRlbnRzUmVjdCA9IGNvbnRlbnRzOworICAgIG1fY29tcG9zaXRlZEdlbmVyYXRpb24g
PSBtX2dlbmVyYXRpb247CisKKyAgICBpZiAobV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzLm5lZWRz
QW5pbWF0aW9uRnJhbWUpIHsKKyAgICAgICAgKyttX2dlbmVyYXRpb247IC8vIFRoZSBhbmltYXRp
b24gdXBkYXRlIG1vdmVzIHVzIGFsb25nIG9uZSBnZW5lcmF0aW9uLgorICAgICAgICAvLyBVc2lu
ZyBhIHRpbWVvdXQgb2YgMCBhY3R1YWxseSB3b24ndCBzdGFydCBhIHRpbWVyLCBpdCB3aWxsIHNl
bmQgYSBtZXNzYWdlLgorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0KDEuMCAvIDYwLjAp
OworICAgICAgICBtX3dlYlBhZ2UtPnVwZGF0ZURlbGVnYXRlZE92ZXJsYXlzKCk7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpy
ZWxlYXNlTGF5ZXJSZXNvdXJjZXMoKQoreworICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVsZWFzZUxh
eWVyUmVzb3VyY2VzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmlt
YXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBpZiAobV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZS0+
ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgeworICAgICAgICBpZiAobV93ZWJQ
YWdlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+aXNEaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdl
U2NoZWR1bGVkKCkpCisgICAgICAgICAgICByZXR1cm47IC8vIGRvbid0IHNlbmQgbmV3IG1lc3Nh
Z2VzIGFzIGxvbmcgYXMgd2UgaGF2ZW4ndCByZXJlbmRlcmVkCisKKyAgICAgICAgbV93ZWJQYWdl
LT5tX2JhY2tpbmdTdG9yZS0+ZC0+c2V0RGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNj
aGVkdWxlZCgpOworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVz
c2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCisgICAgICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgJkJhY2tp
bmdTdG9yZVByaXZhdGU6OnJlbmRlclZpc2libGVDb250ZW50cywgbV93ZWJQYWdlLT5tX2JhY2tp
bmdTdG9yZS0+ZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fd2ViUGFnZS0+Ymxp
dFZpc2libGVDb250ZW50cygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFt
ZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3JfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjE0MDFmMjRhYjljMGM0YzVhYjljY2FkYTZhNmI2ZjJhMGQzOWQ0
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZUNvbXBvc2l0b3JfcC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJQYWdlQ29tcG9zaXRvcl9w
X2gKKyNkZWZpbmUgV2ViUGFnZUNvbXBvc2l0b3JfcF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCisjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlci5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVGlt
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllcldlYktpdFRocmVhZDsKK307CisKK25h
bWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJpdmF0ZTsKKworLy8gVGhpcyBjbGFzcyBtYXkgb25seSBiZSB1c2VkIG9uIHRoZSBjb21wb3Np
dGluZyB0aHJlYWQuCitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgeworcHVibGljOgor
ICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSopOworICAgIH5XZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGUoKTsKKworICAgIGJvb2wgaGFyZHdhcmVDb21wb3NpdGluZygp
IGNvbnN0OworCisgICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCopOworCisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKGJvb2wpOwor
CisgICAgdm9pZCBjb21taXQoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllclBy
b3h5KTsKKworICAgIGJvb2wgZHJhd0xheWVycyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRlbnRzKTsKKworICAgIFdlYkNvcmU6
OkludFJlY3QgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYXlv
dXRSZWN0Rm9yQ29tcG9zaXRpbmc7IH0KKyAgICB2b2lkIHNldExheW91dFJlY3RGb3JDb21wb3Np
dGluZyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IG1fbGF5b3V0UmVjdEZvckNvbXBv
c2l0aW5nID0gcmVjdDsgfQorCisgICAgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemVGb3JD
b21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmc7
IH0KKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUpIHsgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZyA9IHNpemU7IH0K
KworICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBsYXN0Q29tcG9zaXRpbmdSZXN1
bHRzKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOyB9CisgICAgdm9p
ZCBzZXRMYXN0Q29tcG9zaXRpbmdSZXN1bHRzKGNvbnN0IFdlYkNvcmU6OkxheWVyUmVuZGVyaW5n
UmVzdWx0cyYgcmVzdWx0cykgeyBtX2xhc3RDb21wb3NpdGluZ1Jlc3VsdHMgPSByZXN1bHRzOyB9
CisKKyAgICB2b2lkIHJlbGVhc2VMYXllclJlc291cmNlcygpOworCitwcml2YXRlOgorICAgIHZv
aWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOworCisgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFn
ZTsKKyAgICBPd25QdHI8V2ViQ29yZTo6TGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVyOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBtX3Jvb3RMYXllcjsK
KyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nOworICAgIFdl
YkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZzsKKyAgICBXZWJDb3Jl
OjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOworICAgIGlu
dCBtX2dlbmVyYXRpb247CisgICAgaW50IG1fY29tcG9zaXRlZEdlbmVyYXRpb247CisgICAgV2Vi
Q29yZTo6SW50UmVjdCBtX2NvbXBvc2l0ZWREc3RSZWN0OworICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCBtX2NvbXBvc2l0ZWRDb250ZW50c1JlY3Q7CisgICAgYm9vbCBtX2JhY2tpbmdTdG9yZVVzZXNP
cGVuR0w7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyPFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZT4gbV9hbmltYXRpb25UaW1lcjsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGlt
ZXJDbGllbnQqIG1fdGltZXJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30g
Ly8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKworI2VuZGlmIC8vIFdlYlBhZ2VDb21wb3NpdG9yX3BfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggMWUzZDIyNjViNWE2MTc2M2NkYTRjMTU0
NmRjMDk5NjliNjEyMDY0Mi4uNTdjOWQ4Mzk2MjIxMThhMGQ1ZmQ5YzNjOTg0ZDhkYjg4ZGJhNzY4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC02NSw3ICs2
NSw3IEBAIGNsYXNzIFdlYlBhZ2VDbGllbnQ7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiBjbGFzcyBGcmFtZUxheWVyczsKLWNsYXNzIFdlYlBhZ2VDb21wb3NpdG9yOworY2xh
c3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOwogI2VuZGlmCiAKIC8vIEluIHRoZSBjbGllbnQg
Y29kZSwgdGhlcmUgaXMgc2NyZWVuIHNpemUgYW5kIHZpZXdwb3J0LgpAQCAtNDkyLDcgKzQ5Miw3
IEBAIHB1YmxpYzoKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBt
X2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZTsKICAgICBPd25QdHI8RnJhbWVMYXllcnM+
IG1fZnJhbWVMYXllcnM7IC8vIFdlYktpdCB0aHJlYWQgb25seS4KLSAgICBPd25QdHI8V2ViUGFn
ZUNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsgLy8gQ29tcG9zaXRpbmcgdGhyZWFkIG9ubHkuCisg
ICAgT3duUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gbV9jb21wb3NpdG9yOyAvLyBDb21w
b3NpdGluZyB0aHJlYWQgb25seS4KICAgICBPd25QdHI8V2ViQ29yZTo6VGltZXI8V2ViUGFnZVBy
aXZhdGU+ID4gbV9yb290TGF5ZXJDb21taXRUaW1lcjsKICAgICBib29sIG1fbmVlZHNPbmVTaG90
RHJhd2luZ1N5bmNocm9uaXphdGlvbjsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdl
Q29tcG9zaXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDdkYjUzNDJm
NjZlNTE0ZmNkMjE3YzQyNzY4Mzc1ZTkyOGM3ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2lu
Y2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yLmgiCi0KLSNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5o
IgotI2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCi0jaW5jbHVkZSAiV2ViUGFnZV9wLmgi
Ci0KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FeGVjdXRhYmxlTWVzc2FnZS5oPgotI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1NZXNzYWdlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8R2VuZXJpY1RpbWVyQ2xpZW50Lmg+
Ci0jaW5jbHVkZSA8VGhyZWFkVGltZXJDbGllbnQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJQ
YWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZVByaXZhdGUqIHBhZ2UpCi0g
ICAgOiBtX3dlYlBhZ2UocGFnZSkKLSAgICAsIG1fbGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVy
OjpjcmVhdGUocGFnZS0+bV9wYWdlKSkKLSAgICAsIG1fZ2VuZXJhdGlvbigwKQotICAgICwgbV9j
b21wb3NpdGVkR2VuZXJhdGlvbigtMSkKLSAgICAsIG1fYmFja2luZ1N0b3JlVXNlc09wZW5HTChm
YWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIodGhpcywgJldlYlBhZ2VDb21wb3NpdG9yOjph
bmltYXRpb25UaW1lckZpcmVkKQotICAgICwgbV90aW1lckNsaWVudChuZXcgUGxhdGZvcm06Okdl
bmVyaWNUaW1lckNsaWVudChQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZFRpbWVyQ2xpZW50
KCkpKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc2V0Q2xpZW50KG1fdGltZXJDbGllbnQpOwot
fQotCi1XZWJQYWdlQ29tcG9zaXRvcjo6fldlYlBhZ2VDb21wb3NpdG9yKCkKLXsKLSAgICBtX2Fu
aW1hdGlvblRpbWVyLnN0b3AoKTsKLSAgICBkZWxldGUgbV90aW1lckNsaWVudDsKLX0KLQotYm9v
bCBXZWJQYWdlQ29tcG9zaXRvcjo6aGFyZHdhcmVDb21wb3NpdGluZygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fbGF5ZXJSZW5kZXJlci0+aGFyZHdhcmVDb21wb3NpdGluZygpOwotfQotCi12b2lk
IFdlYlBhZ2VDb21wb3NpdG9yOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCog
cm9vdExheWVyKQotewotICAgIG1fcm9vdExheWVyID0gcm9vdExheWVyOwotICAgIG1fbGF5ZXJS
ZW5kZXJlci0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLX0KLQotdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvcjo6c2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29sIGJhY2tpbmdTdG9y
ZVVzZXNPcGVuR0wpCi17Ci0gICAgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMID0gYmFja2luZ1N0
b3JlVXNlc09wZW5HTDsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldENsZWFyU3VyZmFjZU9uRHJh
d0xheWVycyghYmFja2luZ1N0b3JlVXNlc09wZW5HTCk7Ci19Ci0KLXZvaWQgV2ViUGFnZUNvbXBv
c2l0b3I6OmNvbW1pdChMYXllcldlYktpdFRocmVhZCogcm9vdExheWVyKQotewotICAgIGlmICgh
cm9vdExheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICByb290TGF5ZXItPmNvbW1pdE9uQ29t
cG9zaXRpbmdUaHJlYWQoKTsKLSAgICArK21fZ2VuZXJhdGlvbjsKLX0KLQotYm9vbCBXZWJQYWdl
Q29tcG9zaXRvcjo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGNvbnRlbnRzKQotewotICAgIC8vIFNhdmUgYSBkcmF3IGlmIHdlIGFscmVhZHkgZHJl
dyB0aGlzIGdlbmVyYXRpb24sIGZvciBleGFtcGxlIGR1ZSB0byBhIGNvbmN1cnJlbnQgc2Nyb2xs
IG9wZXJhdGlvbi4KLSAgICBpZiAobV9jb21wb3NpdGVkR2VuZXJhdGlvbiA9PSBtX2dlbmVyYXRp
b24gJiYgZHN0UmVjdCA9PSBtX2NvbXBvc2l0ZWREc3RSZWN0Ci0gICAgICAgICYmIGNvbnRlbnRz
ID09IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdCAmJiAhbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdM
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXll
cnMoY29udGVudHMsIG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBtX2NvbnRlbnRzU2l6ZUZv
ckNvbXBvc2l0aW5nLCBkc3RSZWN0KTsKLSAgICBtX2xhc3RDb21wb3NpdGluZ1Jlc3VsdHMgPSBt
X2xheWVyUmVuZGVyZXItPmxhc3RSZW5kZXJpbmdSZXN1bHRzKCk7Ci0KLSAgICBtX2NvbXBvc2l0
ZWREc3RSZWN0ID0gZHN0UmVjdDsKLSAgICBtX2NvbXBvc2l0ZWRDb250ZW50c1JlY3QgPSBjb250
ZW50czsKLSAgICBtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uID0gbV9nZW5lcmF0aW9uOwotCi0gICAg
aWYgKG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0cy5uZWVkc0FuaW1hdGlvbkZyYW1lKSB7Ci0gICAg
ICAgICsrbV9nZW5lcmF0aW9uOyAvLyBUaGUgYW5pbWF0aW9uIHVwZGF0ZSBtb3ZlcyB1cyBhbG9u
ZyBvbmUgZ2VuZXJhdGlvbi4KLSAgICAgICAgLy8gVXNpbmcgYSB0aW1lb3V0IG9mIDAgYWN0dWFs
bHkgd29uJ3Qgc3RhcnQgYSB0aW1lciwgaXQgd2lsbCBzZW5kIGEgbWVzc2FnZS4KLSAgICAgICAg
bV9hbmltYXRpb25UaW1lci5zdGFydCgxLjAgLyA2MC4wKTsKLSAgICAgICAgbV93ZWJQYWdlLT51
cGRhdGVEZWxlZ2F0ZWRPdmVybGF5cygpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpyZWxlYXNlTGF5ZXJSZXNvdXJjZXMoKQotewotICAg
IG1fbGF5ZXJSZW5kZXJlci0+cmVsZWFzZUxheWVyUmVzb3VyY2VzKCk7Ci19Ci0KLXZvaWQgV2Vi
UGFnZUNvbXBvc2l0b3I6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIGlmIChtX3dlYlBh
Z2UtPm1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSB7
Ci0gICAgICAgIGlmIChtX3dlYlBhZ2UtPm1fYmFja2luZ1N0b3JlLT5kLT5pc0RpcmVjdFJlbmRl
cmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsgLy8g
ZG9uJ3Qgc2VuZCBuZXcgbWVzc2FnZXMgYXMgbG9uZyBhcyB3ZSBoYXZlbid0IHJlcmVuZGVyZWQK
LQotICAgICAgICBtX3dlYlBhZ2UtPm1fYmFja2luZ1N0b3JlLT5kLT5zZXREaXJlY3RSZW5kZXJp
bmdBbmltYXRpb25NZXNzYWdlU2NoZWR1bGVkKCk7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZSgKLSAgICAg
ICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgKLSAg
ICAgICAgICAgICAgICAmQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyVmlzaWJsZUNvbnRlbnRz
LCBtX3dlYlBhZ2UtPm1fYmFja2luZ1N0b3JlLT5kKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV93ZWJQYWdlLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQotCi0jZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVmM2RlYmZlNWM3YzUwMDM0YjVjMGRiNDY1ZDcwYzI0YmFjMTYwNjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEs
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiBXZWJQYWdlQ29tcG9zaXRvcl9oCi0jZGVmaW5l
IFdlYlBhZ2VDb21wb3NpdG9yX2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LQotI2luY2x1ZGUgIkxheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKLSNpbmNsdWRlICJMYXllclJl
bmRlcmVyLmgiCi0KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1UaW1lci5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIExheWVyV2ViS2l0VGhyZWFkOwotfTsKLQotbmFtZXNwYWNlIEJsYWNr
QmVycnkgewotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcml2YXRlOwotCi0v
LyBUaGlzIGNsYXNzIG1heSBvbmx5IGJlIHVzZWQgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4K
LWNsYXNzIFdlYlBhZ2VDb21wb3NpdG9yIHsKLXB1YmxpYzoKLSAgICBXZWJQYWdlQ29tcG9zaXRv
cihXZWJQYWdlUHJpdmF0ZSopOwotICAgIH5XZWJQYWdlQ29tcG9zaXRvcigpOwotCi0gICAgYm9v
bCBoYXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldFJvb3RMYXllcihX
ZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7Ci0KLSAgICB2b2lkIHNldEJhY2tpbmdT
dG9yZVVzZXNPcGVuR0woYm9vbCk7Ci0KLSAgICB2b2lkIGNvbW1pdChXZWJDb3JlOjpMYXllcldl
YktpdFRocmVhZCogcm9vdExheWVyUHJveHkpOwotCi0gICAgYm9vbCBkcmF3TGF5ZXJzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29u
dGVudHMpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmco
KSBjb25zdCB7IHJldHVybiBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZzsgfQotICAgIHZvaWQg
c2V0TGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
IHsgbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcgPSByZWN0OyB9Ci0KLSAgICBXZWJDb3JlOjpJ
bnRTaXplIGNvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50c1NpemVGb3JDb21wb3NpdGluZzsgfQotICAgIHZvaWQgc2V0Q29udGVudHNTaXplRm9yQ29t
cG9zaXRpbmcoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgeyBtX2NvbnRlbnRzU2l6ZUZv
ckNvbXBvc2l0aW5nID0gc2l6ZTsgfQotCi0gICAgV2ViQ29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1
bHRzIGxhc3RDb21wb3NpdGluZ1Jlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21wb3Np
dGluZ1Jlc3VsdHM7IH0KLSAgICB2b2lkIHNldExhc3RDb21wb3NpdGluZ1Jlc3VsdHMoY29uc3Qg
V2ViQ29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1bHRzJiByZXN1bHRzKSB7IG1fbGFzdENvbXBvc2l0
aW5nUmVzdWx0cyA9IHJlc3VsdHM7IH0KLQotICAgIHZvaWQgcmVsZWFzZUxheWVyUmVzb3VyY2Vz
KCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7Ci0KLSAgICBX
ZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwotICAgIE93blB0cjxXZWJDb3JlOjpMYXllclJlbmRl
cmVyPiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkxheWVyQ29tcG9zaXRp
bmdUaHJlYWQ+IG1fcm9vdExheWVyOwotICAgIFdlYkNvcmU6OkludFJlY3QgbV9sYXlvdXRSZWN0
Rm9yQ29tcG9zaXRpbmc7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZUZvckNv
bXBvc2l0aW5nOwotICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBtX2xhc3RDb21w
b3NpdGluZ1Jlc3VsdHM7Ci0gICAgaW50IG1fZ2VuZXJhdGlvbjsKLSAgICBpbnQgbV9jb21wb3Np
dGVkR2VuZXJhdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29tcG9zaXRlZERzdFJlY3Q7
Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdDsKLSAgICBi
b29sIG1fYmFja2luZ1N0b3JlVXNlc09wZW5HTDsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VGltZXI8V2ViUGFnZUNvbXBvc2l0b3I+IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlRpbWVyQ2xpZW50KiBtX3RpbWVyQ2xpZW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci19IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Ci0KLSNlbmRpZiAvLyBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNlbmRpZiAvLyBXZWJQYWdlQ29tcG9zaXRvcl9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132419</attachid>
            <date>2012-03-16 17:09:23 -0700</date>
            <delta_ts>2012-03-16 17:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81108-20120317010921.patch</filename>
            <type>text/plain</type>
            <size>23764</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA0MGQxMjFlZGMwMzMwMzJhMjAwMjE4MDgzZDcyNTZhNTUwNWExZDJiLi43ODU2ODhlZTE5
MTlmZmM5MzAzOTMxNGI0NjBjM2IzYjk0NjMxOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wMy0xNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFJlbmFtZSB0aGUgZXhpc3Rpbmcg
V2ViUGFnZUNvbXBvc2l0b3IgY2xhc3MgdG8gV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTEwOAorICAgICAg
ICBSSU0gUFI6IDEzNjY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgaXMgZG9uZSBpbiBhbnRpY2lwYXRpb24gb2YgYSBuZXcgV2ViUGFnZUNv
bXBvc2l0b3IgY2xhc3MgaW4gdGhlCisgICAgICAgIHB1YmxpYyBBUEkuIFRoZSBleGlzdGluZyBp
bnRlcm5hbCBjbGFzcyB3aWxsIHNlcnZlIHRvIGQtcG9pbnRlcml6ZSB0aGUKKyAgICAgICAgbmV3
IHB1YmxpYyBBUEkuIEluIGFkZGl0aW9uLCBpdCBpcyBhbmQgd2lsbCBiZSBwb3NzaWJsZSB0byBj
cmVhdGUgb25seQorICAgICAgICB0aGUgcHJpdmF0ZSBjbGFzcywgZm9yIGNhc2VzIHdoZXJlIGV4
aXN0aW5nIGNvZGUgcGF0aHMgcmVxdWlyZQorICAgICAgICBPcGVuR0wgY29tcG9zaXRpbmcgKGku
ZS4gZHVlIHRvIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGxheWVycyBiZWluZworICAgICAgICBh
ZGRlZCB0byB0aGUgcGFnZSkuCisKKyAgICAgICAgUmV2aWV3ZWQgaW50ZXJuYWxseSBieSBSb2Jp
biBDYW8uCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogQXBpL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBBcGkvV2ViUGFn
ZUNvbXBvc2l0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuY3BwLgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZTo6fldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6aGFyZHdhcmVDb21wb3NpdGluZyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9v
dExheWVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlOjpzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjb21taXQpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdMYXllcnMpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJl
bGVhc2VMYXllclJlc291cmNlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogQXBp
L1dlYlBhZ2VDb21wb3NpdG9yX3AuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmguCisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6bGF5b3V0UmVjdEZvckNvbXBv
c2l0aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlOjpzZXRMYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNvbnRlbnRzU2l6ZUZvckNvbXBv
c2l0aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlOjpzZXRDb250ZW50c1NpemVGb3JDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6bGFzdENvbXBvc2l0aW5nUmVz
dWx0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZTo6c2V0TGFzdENvbXBvc2l0aW5nUmVzdWx0cyk6CisgICAgICAgICogQXBpL1dlYlBhZ2Vf
cC5oOgorICAgICAgICAqIENNYWtlTGlzdHNCbGFja0JlcnJ5LnR4dDoKKwogMjAxMi0wMy0xNiAg
TmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBTeW5jaW5nIHVwIGxlZnQgb3ZlciBiaXRzIGluIFdlYktpdFN1cHBvcnQgZnJvbSBv
dXIgbG9jYWwgYnJhbmNoIHRvIHVwc3RyZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5
LmNtYWtlCmluZGV4IGIwZDA3NTQ2YTc5Nzc2ZjAxZGU1NDRhODliYjg4ZWI2MWM0MjgxYzguLjAw
MGUyOGM0ODcwYmUyMGI0YTUzMmU3OWFmYTU3YzlmZDk0OGEzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC00NCw2ICs0NCw3IEBAIExJU1QoQVBQRU5EIFdlYktp
dF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViS2l0TUlNRVR5cGVDb252ZXJ0ZXIuY3Bw
CiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAogICAgIGJsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwCisgICAgYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3Bw
CiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcAogICAgIGJs
YWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvQWJvdXREYXRhLmNwcApAQCAtNzcsNyArNzgsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKICAgICBi
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwCiAgICAgYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCi0gICAgYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmNwcAogKQogCiBJRiAoRU5BQkxFX0RSVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5oCmluZGV4IDlmMGRkZjc4ZDRl
NjNhZDc0YWZiZmEyZjg5MzA0MmYyZTg3NTM5MzUuLmEzMWY1MTc5MjliMGI5YzVjMWJkNWNjMmE3
MmRkZmViODFiZmU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmUuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwotY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3I7Citj
bGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU7CiBjbGFzcyBCYWNraW5nU3RvcmVQcml2YXRl
OwogY2xhc3MgQmFja2luZ1N0b3JlQ2xpZW50OwogCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlQ2xpZW50
OwogICAgIGZyaWVuZCBjbGFzcyBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U7CiAgICAgZnJp
ZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU7IC8vIEZJWE1FOiBG
b3Igbm93LCB3ZSBleHBvc2Ugb3VyIGludGVybmFscyB0byBXZWJQYWdlUHJpdmF0ZS4gU2VlIFBS
ICMxMjAzMDEuCi0gICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3I7CisgICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRC
bGFja0JlcnJ5OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkdMRVMyQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGE1YmMzZTQ2YWNkMmUwODc3
NzY0YTE2MzViYzYzZDMwNDQ3MTczMTUuLmI1ZGEzOGI4ZDE5MzhjMmRhYjNkYTg1OTNmZTlkY2Vk
MTU1MTFlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5j
bHVkZSAiRnJhbWVMYXllcnMuaCIKLSNpbmNsdWRlICJXZWJQYWdlQ29tcG9zaXRvci5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yX3AuaCIKICNlbmRpZgogCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtRXhlY3V0YWJsZU1lc3NhZ2UuaD4KQEAgLTUzMjUsNyArNTMyNSw3IEBAIHZv
aWQgV2ViUGFnZVByaXZhdGU6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29s
IGFjdGl2ZSkKICAgICB9CiAKICAgICBpZiAoIW1fY29tcG9zaXRvcikgewotICAgICAgICBtX2Nv
bXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgV2ViUGFnZUNvbXBvc2l0b3IodGhpcykpOworICAgICAg
ICBtX2NvbXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKHRo
aXMpKTsKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBtX2NvbXBv
c2l0b3ItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKICAgICAgICAgaWYgKCFtX2lzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSkKICAgICAgICAgICAgIG1fY29tcG9zaXRvci5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNmJhZTBiMGNjNGVjMjUxODc5OWFiZTM0NTc5YTZlN2U3Yjc2Y2Q1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29t
cG9zaXRvci5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yX3Au
aCIKKworI2luY2x1ZGUgIkJhY2tpbmdTdG9yZV9wLmgiCisjaW5jbHVkZSAiTGF5ZXJXZWJLaXRU
aHJlYWQuaCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
TWVzc2FnZS5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2VDbGllbnQuaD4K
KyNpbmNsdWRlIDxHZW5lcmljVGltZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxUaHJlYWRUaW1lckNs
aWVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIEJsYWNrQmVy
cnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2Vi
UGFnZUNvbXBvc2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlKQorICAgIDogbV93ZWJQ
YWdlKHBhZ2UpCisgICAgLCBtX2NvbnRleHQoR0xFUzJDb250ZXh0OjpjcmVhdGUocGFnZSkpCisg
ICAgLCBtX2xheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQo
KSkpCisgICAgLCBtX2dlbmVyYXRpb24oMCkKKyAgICAsIG1fY29tcG9zaXRlZEdlbmVyYXRpb24o
LTEpCisgICAgLCBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0woZmFsc2UpCisgICAgLCBtX2FuaW1h
dGlvblRpbWVyKHRoaXMsICZXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVy
RmlyZWQpCisgICAgLCBtX3RpbWVyQ2xpZW50KG5ldyBQbGF0Zm9ybTo6R2VuZXJpY1RpbWVyQ2xp
ZW50KFBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkVGltZXJDbGllbnQoKSkpCit7CisgICAg
bV9hbmltYXRpb25UaW1lci5zZXRDbGllbnQobV90aW1lckNsaWVudCk7Cit9CisKK1dlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6fldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSgpCit7CisgICAgbV9h
bmltYXRpb25UaW1lci5zdG9wKCk7CisgICAgZGVsZXRlIG1fdGltZXJDbGllbnQ7Cit9CisKK2Jv
b2wgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpoYXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7Cit9
CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCogcm9vdExheWVyKQoreworICAgIG1fcm9vdExheWVyID0gcm9vdExheWVy
OworICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsK
K30KKwordm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVVzZXNP
cGVuR0woYm9vbCBiYWNraW5nU3RvcmVVc2VzT3BlbkdMKQoreworICAgIG1fYmFja2luZ1N0b3Jl
VXNlc09wZW5HTCA9IGJhY2tpbmdTdG9yZVVzZXNPcGVuR0w7CisgICAgbV9sYXllclJlbmRlcmVy
LT5zZXRDbGVhclN1cmZhY2VPbkRyYXdMYXllcnMoIWJhY2tpbmdTdG9yZVVzZXNPcGVuR0wpOwor
fQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y29tbWl0KExheWVyV2ViS2l0VGhy
ZWFkKiByb290TGF5ZXIpCit7CisgICAgaWYgKCFyb290TGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIHJvb3RMYXllci0+Y29tbWl0T25Db21wb3NpdGluZ1RocmVhZCgpOworICAgICsrbV9n
ZW5lcmF0aW9uOworfQorCitib29sIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVy
cyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRlbnRzKQorewor
ICAgIC8vIFNhdmUgYSBkcmF3IGlmIHdlIGFscmVhZHkgZHJldyB0aGlzIGdlbmVyYXRpb24sIGZv
ciBleGFtcGxlIGR1ZSB0byBhIGNvbmN1cnJlbnQgc2Nyb2xsIG9wZXJhdGlvbi4KKyAgICBpZiAo
bV9jb21wb3NpdGVkR2VuZXJhdGlvbiA9PSBtX2dlbmVyYXRpb24gJiYgZHN0UmVjdCA9PSBtX2Nv
bXBvc2l0ZWREc3RSZWN0CisgICAgICAgICYmIGNvbnRlbnRzID09IG1fY29tcG9zaXRlZENvbnRl
bnRzUmVjdCAmJiAhbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnMoY29udGVudHMsIG1fbGF5b3V0
UmVjdEZvckNvbXBvc2l0aW5nLCBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nLCBkc3RSZWN0
KTsKKyAgICBtX2xhc3RDb21wb3NpdGluZ1Jlc3VsdHMgPSBtX2xheWVyUmVuZGVyZXItPmxhc3RS
ZW5kZXJpbmdSZXN1bHRzKCk7CisKKyAgICBtX2NvbXBvc2l0ZWREc3RSZWN0ID0gZHN0UmVjdDsK
KyAgICBtX2NvbXBvc2l0ZWRDb250ZW50c1JlY3QgPSBjb250ZW50czsKKyAgICBtX2NvbXBvc2l0
ZWRHZW5lcmF0aW9uID0gbV9nZW5lcmF0aW9uOworCisgICAgaWYgKG1fbGFzdENvbXBvc2l0aW5n
UmVzdWx0cy5uZWVkc0FuaW1hdGlvbkZyYW1lKSB7CisgICAgICAgICsrbV9nZW5lcmF0aW9uOyAv
LyBUaGUgYW5pbWF0aW9uIHVwZGF0ZSBtb3ZlcyB1cyBhbG9uZyBvbmUgZ2VuZXJhdGlvbi4KKyAg
ICAgICAgLy8gVXNpbmcgYSB0aW1lb3V0IG9mIDAgYWN0dWFsbHkgd29uJ3Qgc3RhcnQgYSB0aW1l
ciwgaXQgd2lsbCBzZW5kIGEgbWVzc2FnZS4KKyAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFy
dCgxLjAgLyA2MC4wKTsKKyAgICAgICAgbV93ZWJQYWdlLT51cGRhdGVEZWxlZ2F0ZWRPdmVybGF5
cygpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6cmVsZWFzZUxheWVyUmVzb3VyY2VzKCkKK3sKKyAgICBtX2xheWVyUmVuZGVy
ZXItPnJlbGVhc2VMYXllclJlc291cmNlcygpOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCit7CisgICAgaWYgKG1fd2ViUGFnZS0+bV9i
YWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKKyAgICAg
ICAgaWYgKG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVyaW5nQW5p
bWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOyAvLyBkb24ndCBz
ZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25nIGFzIHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAorCisgICAg
ICAgIG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNldERpcmVjdFJlbmRlcmluZ0FuaW1h
dGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ondl
YktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAorICAgICAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAorICAgICAgICAg
ICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJWaXNpYmxlQ29udGVudHMsIG1fd2Vi
UGFnZS0+bV9iYWNraW5nU3RvcmUtPmQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
X3dlYlBhZ2UtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2VDb21wb3NpdG9yX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZUNvbXBvc2l0b3JfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZmMyZGI0MDMzZDg5ZjUxMTU0NGExNmZm
NTU3YjI5YjIyY2E1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViUGFn
ZUNvbXBvc2l0b3JfcF9oCisjZGVmaW5lIFdlYlBhZ2VDb21wb3NpdG9yX3BfaAorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCisj
aW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXIuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7Cit9OworCituYW1lc3BhY2UgQmxhY2tCZXJy
eSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByaXZhdGU7CisKKy8vIFRo
aXMgY2xhc3MgbWF5IG9ubHkgYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLgorY2xh
c3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGUoV2ViUGFnZVByaXZhdGUqKTsKKyAgICB+V2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlKCk7CisKKyAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdDsKKworICAgIHZv
aWQgc2V0Um9vdExheWVyKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKKworICAg
IHZvaWQgc2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29sKTsKKworICAgIHZvaWQgY29tbWl0
KFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXJQcm94eSk7CisKKyAgICBib29s
IGRyYXdMYXllcnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBjb250ZW50cyk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGxheW91dFJl
Y3RGb3JDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0
aW5nOyB9CisgICAgdm9pZCBzZXRMYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCkgeyBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZyA9IHJlY3Q7IH0K
KworICAgIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nOyB9CisgICAgdm9pZCBzZXRD
b250ZW50c1NpemVGb3JDb21wb3NpdGluZyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7
IG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcgPSBzaXplOyB9CisKKyAgICBXZWJDb3JlOjpM
YXllclJlbmRlcmluZ1Jlc3VsdHMgbGFzdENvbXBvc2l0aW5nUmVzdWx0cygpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0czsgfQorICAgIHZvaWQgc2V0TGFzdENvbXBvc2l0
aW5nUmVzdWx0cyhjb25zdCBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMmIHJlc3VsdHMp
IHsgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gcmVzdWx0czsgfQorCisgICAgdm9pZCByZWxl
YXNlTGF5ZXJSZXNvdXJjZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFuaW1hdGlvblRpbWVy
RmlyZWQoKTsKKworICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CisgICAgLy8gUGxlYXNl
IG1haW50YWluIHRoaXMgb3JkZXIgc2luY2UgbV9sYXllclJlbmRlcmVyIGRlcGVuZHMgb24gbV9j
b250ZXh0IGluIGluaXRpYWxpemF0aW9uIGxpc3QuCisgICAgT3duUHRyPEdMRVMyQ29udGV4dD4g
bV9jb250ZXh0OworICAgIE93blB0cjxXZWJDb3JlOjpMYXllclJlbmRlcmVyPiBtX2xheWVyUmVu
ZGVyZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ+IG1fcm9v
dExheWVyOworICAgIFdlYkNvcmU6OkludFJlY3QgbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nOworICAg
IFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBtX2xhc3RDb21wb3NpdGluZ1Jlc3VsdHM7
CisgICAgaW50IG1fZ2VuZXJhdGlvbjsKKyAgICBpbnQgbV9jb21wb3NpdGVkR2VuZXJhdGlvbjsK
KyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29tcG9zaXRlZERzdFJlY3Q7CisgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdDsKKyAgICBib29sIG1fYmFja2luZ1N0
b3JlVXNlc09wZW5HTDsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGltZXI8V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlPiBtX2FuaW1hdGlvblRpbWVyOworICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpUaW1lckNsaWVudCogbV90aW1lckNsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gV2ViUGFnZUNvbXBvc2l0b3JfcF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCA0MDQ3YTYxMzhiMDQxODMy
ODMwMDdmYjE5YWY5NzJlNmRhMmM0MDkxLi4wMDZhMzg0MTQ5MDZlMzk4NjNkOTAzYzhmMWExMzY4
ZWUyMzY3Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAg
LTY1LDcgKzY1LDcgQEAgY2xhc3MgV2ViUGFnZUNsaWVudDsKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIGNsYXNzIEZyYW1lTGF5ZXJzOwotY2xhc3MgV2ViUGFnZUNvbXBvc2l0
b3I7CitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU7CiAjZW5kaWYKIAogLy8gSW4gdGhl
IGNsaWVudCBjb2RlLCB0aGVyZSBpcyBzY3JlZW4gc2l6ZSBhbmQgdmlld3BvcnQuCkBAIC00OTks
NyArNDk5LDcgQEAgcHVibGljOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlOwogICAgIE93blB0cjxGcmFt
ZUxheWVycz4gbV9mcmFtZUxheWVyczsgLy8gV2ViS2l0IHRocmVhZCBvbmx5LgotICAgIE93blB0
cjxXZWJQYWdlQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOyAvLyBDb21wb3NpdGluZyB0aHJlYWQg
b25seS4KKyAgICBPd25QdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBtX2NvbXBvc2l0b3I7
IC8vIENvbXBvc2l0aW5nIHRocmVhZCBvbmx5LgogICAgIE93blB0cjxXZWJDb3JlOjpUaW1lcjxX
ZWJQYWdlUHJpdmF0ZT4gPiBtX3Jvb3RMYXllckNvbW1pdFRpbWVyOwogICAgIGJvb2wgbV9uZWVk
c09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uOwogICAgIGJvb2wgbV9uZWVkc0NvbW1pdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBh
Z2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1dlYlBhZ2VDb21wb3NpdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgy
NWZkMGZiOTg2MjYyMGU4ZmE1MWI3MzQ0MzZlYzEyNThkOWQ5OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0jaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3IuaCIKLQotI2luY2x1ZGUgIkJhY2tpbmdT
dG9yZV9wLmgiCi0jaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJQ
YWdlX3AuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdl
Lmg+Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZS5oPgotI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2VDbGllbnQuaD4KLSNpbmNsdWRlIDxHZW5lcmljVGltZXJD
bGllbnQuaD4KLSNpbmNsdWRlIDxUaHJlYWRUaW1lckNsaWVudC5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIEJsYWNrQmVycnkgewotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVdlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdlQ29tcG9zaXRvcihXZWJQYWdlUHJpdmF0ZSog
cGFnZSkKLSAgICA6IG1fd2ViUGFnZShwYWdlKQotICAgICwgbV9jb250ZXh0KEdMRVMyQ29udGV4
dDo6Y3JlYXRlKHBhZ2UpKQotICAgICwgbV9sYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXI6OmNy
ZWF0ZShtX2NvbnRleHQuZ2V0KCkpKQotICAgICwgbV9nZW5lcmF0aW9uKDApCi0gICAgLCBtX2Nv
bXBvc2l0ZWRHZW5lcmF0aW9uKC0xKQotICAgICwgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMKGZh
bHNlKQotICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAmV2ViUGFnZUNvbXBvc2l0b3I6OmFu
aW1hdGlvblRpbWVyRmlyZWQpCi0gICAgLCBtX3RpbWVyQ2xpZW50KG5ldyBQbGF0Zm9ybTo6R2Vu
ZXJpY1RpbWVyQ2xpZW50KFBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkVGltZXJDbGllbnQo
KSkpCi17Ci0gICAgbV9hbmltYXRpb25UaW1lci5zZXRDbGllbnQobV90aW1lckNsaWVudCk7Ci19
Ci0KLVdlYlBhZ2VDb21wb3NpdG9yOjp+V2ViUGFnZUNvbXBvc2l0b3IoKQotewotICAgIG1fYW5p
bWF0aW9uVGltZXIuc3RvcCgpOwotICAgIGRlbGV0ZSBtX3RpbWVyQ2xpZW50OwotfQotCi1ib29s
IFdlYlBhZ2VDb21wb3NpdG9yOjpoYXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9sYXllclJlbmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7Ci19Ci0KLXZvaWQg
V2ViUGFnZUNvbXBvc2l0b3I6OnNldFJvb3RMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBy
b290TGF5ZXIpCi17Ci0gICAgbV9yb290TGF5ZXIgPSByb290TGF5ZXI7Ci0gICAgbV9sYXllclJl
bmRlcmVyLT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOwotfQotCi12b2lkIFdlYlBh
Z2VDb21wb3NpdG9yOjpzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKGJvb2wgYmFja2luZ1N0b3Jl
VXNlc09wZW5HTCkKLXsKLSAgICBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0wgPSBiYWNraW5nU3Rv
cmVVc2VzT3BlbkdMOwotICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3
TGF5ZXJzKCFiYWNraW5nU3RvcmVVc2VzT3BlbkdMKTsKLX0KLQotdm9pZCBXZWJQYWdlQ29tcG9z
aXRvcjo6Y29tbWl0KExheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIpCi17Ci0gICAgaWYgKCFy
b290TGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJvb3RMYXllci0+Y29tbWl0T25Db21w
b3NpdGluZ1RocmVhZCgpOwotICAgICsrbV9nZW5lcmF0aW9uOwotfQotCi1ib29sIFdlYlBhZ2VD
b21wb3NpdG9yOjpkcmF3TGF5ZXJzKGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgY29udGVudHMpCi17Ci0gICAgLy8gU2F2ZSBhIGRyYXcgaWYgd2UgYWxyZWFkeSBkcmV3
IHRoaXMgZ2VuZXJhdGlvbiwgZm9yIGV4YW1wbGUgZHVlIHRvIGEgY29uY3VycmVudCBzY3JvbGwg
b3BlcmF0aW9uLgotICAgIGlmIChtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uID09IG1fZ2VuZXJhdGlv
biAmJiBkc3RSZWN0ID09IG1fY29tcG9zaXRlZERzdFJlY3QKLSAgICAgICAgJiYgY29udGVudHMg
PT0gbV9jb21wb3NpdGVkQ29udGVudHNSZWN0ICYmICFtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0wp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVy
cyhjb250ZW50cywgbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcsIG1fY29udGVudHNTaXplRm9y
Q29tcG9zaXRpbmcsIGRzdFJlY3QpOwotICAgIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0cyA9IG1f
bGF5ZXJSZW5kZXJlci0+bGFzdFJlbmRlcmluZ1Jlc3VsdHMoKTsKLQotICAgIG1fY29tcG9zaXRl
ZERzdFJlY3QgPSBkc3RSZWN0OwotICAgIG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdCA9IGNvbnRl
bnRzOwotICAgIG1fY29tcG9zaXRlZEdlbmVyYXRpb24gPSBtX2dlbmVyYXRpb247Ci0KLSAgICBp
ZiAobV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzLm5lZWRzQW5pbWF0aW9uRnJhbWUpIHsKLSAgICAg
ICAgKyttX2dlbmVyYXRpb247IC8vIFRoZSBhbmltYXRpb24gdXBkYXRlIG1vdmVzIHVzIGFsb25n
IG9uZSBnZW5lcmF0aW9uLgotICAgICAgICAvLyBVc2luZyBhIHRpbWVvdXQgb2YgMCBhY3R1YWxs
eSB3b24ndCBzdGFydCBhIHRpbWVyLCBpdCB3aWxsIHNlbmQgYSBtZXNzYWdlLgotICAgICAgICBt
X2FuaW1hdGlvblRpbWVyLnN0YXJ0KDEuMCAvIDYwLjApOwotICAgICAgICBtX3dlYlBhZ2UtPnVw
ZGF0ZURlbGVnYXRlZE92ZXJsYXlzKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnJlbGVhc2VMYXllclJlc291cmNlcygpCi17Ci0gICAg
bV9sYXllclJlbmRlcmVyLT5yZWxlYXNlTGF5ZXJSZXNvdXJjZXMoKTsKLX0KLQotdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvcjo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKG1fd2ViUGFn
ZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsK
LSAgICAgICAgaWYgKG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVy
aW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBk
b24ndCBzZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25nIGFzIHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAot
Ci0gICAgICAgIG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNldERpcmVjdFJlbmRlcmlu
Z0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAotICAgICAg
ICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAotICAg
ICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJWaXNpYmxlQ29udGVudHMs
IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBtX3dlYlBhZ2UtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci19IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Ci0KLSNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzA0NjBlMzJjNjY2NDczMDc4MTRkMDc4NDIzNTMzN2QzNmM3YzVlZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVmIFdlYlBhZ2VDb21wb3NpdG9yX2gKLSNkZWZpbmUg
V2ViUGFnZUNvbXBvc2l0b3JfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
Ci0jaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCi0jaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZC5oIgotI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybVRpbWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgTGF5ZXJXZWJLaXRUaHJl
YWQ7Ci19OwotCi1uYW1lc3BhY2UgQmxhY2tCZXJyeSB7Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViUGFnZVByaXZhdGU7Ci0KLS8vIFRoaXMgY2xhc3MgbWF5IG9ubHkgYmUgdXNlZCBv
biB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLgotY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3IgewotcHVi
bGljOgotICAgIFdlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2VQcml2YXRlKik7Ci0gICAgfldlYlBh
Z2VDb21wb3NpdG9yKCk7Ci0KLSAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdDsK
LQotICAgIHZvaWQgc2V0Um9vdExheWVyKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQq
KTsKLQotICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29sKTsKLQotICAgIHZv
aWQgY29tbWl0KFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXJQcm94eSk7Ci0K
LSAgICBib29sIGRyYXdMYXllcnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZHN0UmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjb250ZW50cyk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0
IGxheW91dFJlY3RGb3JDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UmVjdEZv
ckNvbXBvc2l0aW5nOyB9Ci0gICAgdm9pZCBzZXRMYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgeyBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZyA9
IHJlY3Q7IH0KLQotICAgIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplRm9yQ29tcG9zaXRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nOyB9Ci0gICAg
dm9pZCBzZXRDb250ZW50c1NpemVGb3JDb21wb3NpdGluZyhjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKSB7IG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcgPSBzaXplOyB9Ci0KLSAgICBX
ZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbGFzdENvbXBvc2l0aW5nUmVzdWx0cygpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0czsgfQotICAgIHZvaWQgc2V0TGFz
dENvbXBvc2l0aW5nUmVzdWx0cyhjb25zdCBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMm
IHJlc3VsdHMpIHsgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gcmVzdWx0czsgfQotCi0gICAg
dm9pZCByZWxlYXNlTGF5ZXJSZXNvdXJjZXMoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGFuaW1h
dGlvblRpbWVyRmlyZWQoKTsKLQotICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7Ci0gICAg
Ly8gUGxlYXNlIG1haW50YWluIHRoaXMgb3JkZXIgc2luY2UgbV9sYXllclJlbmRlcmVyIGRlcGVu
ZHMgb24gbV9jb250ZXh0IGluIGluaXRpYWxpemF0aW9uIGxpc3QuCi0gICAgT3duUHRyPEdMRVMy
Q29udGV4dD4gbV9jb250ZXh0OwotICAgIE93blB0cjxXZWJDb3JlOjpMYXllclJlbmRlcmVyPiBt
X2xheWVyUmVuZGVyZXI7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJl
YWQ+IG1fcm9vdExheWVyOwotICAgIFdlYkNvcmU6OkludFJlY3QgbV9sYXlvdXRSZWN0Rm9yQ29t
cG9zaXRpbmc7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0
aW5nOwotICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBtX2xhc3RDb21wb3NpdGlu
Z1Jlc3VsdHM7Ci0gICAgaW50IG1fZ2VuZXJhdGlvbjsKLSAgICBpbnQgbV9jb21wb3NpdGVkR2Vu
ZXJhdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29tcG9zaXRlZERzdFJlY3Q7Ci0gICAg
V2ViQ29yZTo6RmxvYXRSZWN0IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdDsKLSAgICBib29sIG1f
YmFja2luZ1N0b3JlVXNlc09wZW5HTDsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGltZXI8
V2ViUGFnZUNvbXBvc2l0b3I+IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlRpbWVyQ2xpZW50KiBtX3RpbWVyQ2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci19IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Ci0KLSNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0KLSNlbmRpZiAvLyBXZWJQYWdlQ29tcG9zaXRvcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>